Cellular module AT Serial interface passthrough to Debug COM port. This program can be used on the C030 boards excluding the C030 N2xx version.

Files at this revision

API Documentation at this revision

Comitter:
mudassar0121
Date:
Fri Aug 30 13:05:19 2019 +0500
Parent:
2:7764d92551ff
Child:
4:80b2cd2b03f7
Commit message:
Removed ublox-cellular-driver-gen

Changed in this revision

ublox-cellular-driver-gen/TESTS/unit_tests/file-system/main.cpp Show diff for this revision Revisions of this file
ublox-cellular-driver-gen/TESTS/unit_tests/sms/main.cpp Show diff for this revision Revisions of this file
ublox-cellular-driver-gen/TESTS/unit_tests/sms/template_mbed_app.txt Show diff for this revision Revisions of this file
ublox-cellular-driver-gen/TESTS/unit_tests/ussd/main.cpp Show diff for this revision Revisions of this file
ublox-cellular-driver-gen/UbloxCellularDriverGen.cpp Show diff for this revision Revisions of this file
ublox-cellular-driver-gen/UbloxCellularDriverGen.h Show diff for this revision Revisions of this file
--- a/ublox-cellular-driver-gen/TESTS/unit_tests/file-system/main.cpp	Fri Aug 30 12:51:50 2019 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-#include "mbed.h"
-#include "greentea-client/test_env.h"
-#include "unity.h"
-#include "utest.h"
-#include "UbloxCellularDriverGen.h"
-#include "UDPSocket.h"
-#ifdef FEATURE_COMMON_PAL
-#include "mbed_trace.h"
-#define TRACE_GROUP "TEST"
-#else
-#define tr_debug(format, ...) debug(format "\n", ## __VA_ARGS__)
-#define tr_info(format, ...)  debug(format "\n", ## __VA_ARGS__)
-#define tr_warn(format, ...)  debug(format "\n", ## __VA_ARGS__)
-#define tr_error(format, ...) debug(format "\n", ## __VA_ARGS__)
-#endif
-
-using namespace utest::v1;
-
-// ----------------------------------------------------------------
-// COMPILE-TIME MACROS
-// ----------------------------------------------------------------
-
-// These macros can be overridden with an mbed_app.json file and
-// contents of the following form:
-//
-//{
-//    "config": {
-//        "default-pin": {
-//            "value": "\"my_pin\""
-//        }
-//}
-
-// Whether debug trace is on
-#ifndef MBED_CONF_APP_DEBUG_ON
-# define MBED_CONF_APP_DEBUG_ON false
-#endif
-
-// The credentials of the SIM in the board.
-#ifndef MBED_CONF_APP_DEFAULT_PIN
-// Note: this is the PIN for the SIM with ICCID
-// 8944501104169548380.
-# define MBED_CONF_APP_DEFAULT_PIN "5134"
-#endif
-
-// The size of file to use.
-#ifndef MBED_CONF_APP_FILE_SIZE
-# ifdef TARGET_UBLOX_C027
-// C027 doesn't have so much RAM.
-// TODO: it should be possible to use, say 12000
-// here but it seems that the Sara-G350 module
-// needs flow control so that it can slow
-// things down while flash writees complete
-// and UARTSerial doesn't yet support HW
-// flow control.  Come back to this once
-// UARTSerial has HW flow control.
-#  define MBED_CONF_APP_FILE_SIZE 1500
-# else
-#  define MBED_CONF_APP_FILE_SIZE 42000
-# endif
-#endif
-
-// The name of the file to use.
-#ifndef MBED_CONF_APP_FILE_NAME
-# define MBED_CONF_APP_FILE_NAME "test_file"
-#endif
-
-// ----------------------------------------------------------------
-// PRIVATE VARIABLES
-// ----------------------------------------------------------------
-
-#ifdef FEATURE_COMMON_PAL
-// Lock for debug prints
-static Mutex mtx;
-#endif
-
-// An instance of the generic cellular class
-static UbloxCellularDriverGen *pDriver =
-       new UbloxCellularDriverGen(MDMTXD, MDMRXD,
-                                  MBED_CONF_UBLOX_CELL_BAUD_RATE,
-                                  MBED_CONF_APP_DEBUG_ON);
-
-// A general purpose buffer
-char buf[MBED_CONF_APP_FILE_SIZE];
-
-// ----------------------------------------------------------------
-// PRIVATE FUNCTIONS
-// ----------------------------------------------------------------
-
-#ifdef FEATURE_COMMON_PAL
-// Locks for debug prints
-static void lock()
-{
-    mtx.lock();
-}
-
-static void unlock()
-{
-    mtx.unlock();
-}
-#endif
-
-// ----------------------------------------------------------------
-// TESTS
-// ----------------------------------------------------------------
-
-// Initialise the module
-void test_start() {
-    TEST_ASSERT(pDriver->init(MBED_CONF_APP_DEFAULT_PIN));
-}
-
-// Write a file to the module's file system with known contents
-void test_write() {
-
-    for (unsigned int x = 0; x < sizeof (buf); x++) {
-        buf[x] = (char) x;
-    }
-
-    TEST_ASSERT(pDriver->writeFile(MBED_CONF_APP_FILE_NAME, buf, sizeof (buf)) == sizeof (buf));
-    TEST_ASSERT(pDriver->fileSize(MBED_CONF_APP_FILE_NAME) >= (int) sizeof (buf));
-    tr_debug("%d bytes written to file \"%s\"", sizeof (buf), MBED_CONF_APP_FILE_NAME);
-}
-
-// Read a file back from the module's file system and check the contents
-void test_read() {
-    memset(buf, 0, sizeof (buf));
-
-    TEST_ASSERT(pDriver->readFile(MBED_CONF_APP_FILE_NAME, buf, sizeof (buf)) == sizeof (buf));
-
-    tr_debug("%d bytes read from file \"%s\"", sizeof (buf), MBED_CONF_APP_FILE_NAME);
-
-    for (unsigned int x = 0; x < sizeof (buf); x++) {
-        TEST_ASSERT(buf[x] == (char) x);
-    }
-}
-
-// Delete a file from the module's file system
-void test_delete() {
-    TEST_ASSERT(pDriver->delFile(MBED_CONF_APP_FILE_NAME));
-    tr_debug("File \"%s\" deleted", MBED_CONF_APP_FILE_NAME);
-}
-
-// ----------------------------------------------------------------
-// TEST ENVIRONMENT
-// ----------------------------------------------------------------
-
-// Setup the test environment
-utest::v1::status_t test_setup(const size_t number_of_cases) {
-    // Setup Greentea with a timeout
-    GREENTEA_SETUP(180, "default_auto");
-    return verbose_test_setup_handler(number_of_cases);
-}
-
-// Test cases
-Case cases[] = {
-    Case("Start", test_start),
-    Case("Write file", test_write),
-    Case("Read file", test_read),
-    Case("Delete file", test_delete)
-};
-
-Specification specification(test_setup, cases);
-
-// ----------------------------------------------------------------
-// MAIN
-// ----------------------------------------------------------------
-
-int main() {
-
-#ifdef FEATURE_COMMON_PAL
-    mbed_trace_init();
-
-    mbed_trace_mutex_wait_function_set(lock);
-    mbed_trace_mutex_release_function_set(unlock);
-#endif
-    
-    // Run tests
-    return !Harness::run(specification);
-}
-
-// End Of File
-
--- a/ublox-cellular-driver-gen/TESTS/unit_tests/sms/main.cpp	Fri Aug 30 12:51:50 2019 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-#include "mbed.h"
-#include "greentea-client/test_env.h"
-#include "unity.h"
-#include "utest.h"
-#include "UbloxCellularDriverGen.h"
-#include "UDPSocket.h"
-#ifdef FEATURE_COMMON_PAL
-#include "mbed_trace.h"
-#define TRACE_GROUP "TEST"
-#else
-#define tr_debug(format, ...) debug(format "\n", ## __VA_ARGS__)
-#define tr_info(format, ...)  debug(format "\n", ## __VA_ARGS__)
-#define tr_warn(format, ...)  debug(format "\n", ## __VA_ARGS__)
-#define tr_error(format, ...) debug(format "\n", ## __VA_ARGS__)
-#endif
-
-using namespace utest::v1;
-
-// ----------------------------------------------------------------
-// COMPILE-TIME MACROS
-// ----------------------------------------------------------------
-
-// These macros can be overridden with an mbed_app.json file and
-// contents of the following form:
-//
-//{
-//    "config": {
-//        "default-pin": {
-//            "value": "\"my_pin\""
-//        }
-//}
-
-// Whether debug trace is on
-#ifndef MBED_CONF_APP_DEBUG_ON
-# define MBED_CONF_APP_DEBUG_ON false
-#endif
-
-// The credentials of the SIM in the board.
-#ifndef MBED_CONF_APP_DEFAULT_PIN
-// Note: this is the PIN for the SIM with ICCID
-// 8944501104169548380.
-# define MBED_CONF_APP_DEFAULT_PIN "5134"
-#endif
-
-// A number to send SMS messages to which will respond
-// to the instruction given in the messages.
-// IMPORTANT: spaces in the string are NOT allowed
-#ifndef MBED_CONF_APP_SMS_DESTINATION
-# error "Must define a destination number to use for SMS testing (and someone must be there to reply); the number must contain no spaces and should be in international format"
-#endif
-
-// The message to send.
-#ifndef MBED_CONF_APP_SMS_SEND_CONTENTS
-# define MBED_CONF_APP_SMS_SEND_CONTENTS "Please reply to this message within 60 seconds with the single word ACK (in upper case)."
-#endif
-
-// The number of milliseconds to wait for a reply to the sent SMS.
-#ifndef MBED_CONF_APP_SMS_RECEIVE_TIMEOUT
-# define MBED_CONF_APP_SMS_RECEIVE_TIMEOUT 60000
-#endif
-
-// The string that the reply must contain.
-#ifndef MBED_CONF_APP_SMS_RECEIVE_CONTENTS
-# define MBED_CONF_APP_SMS_RECEIVE_CONTENTS "ACK"
-#endif
-
-// ----------------------------------------------------------------
-// PRIVATE VARIABLES
-// ----------------------------------------------------------------
-
-#ifdef FEATURE_COMMON_PAL
-// Lock for debug prints
-static Mutex mtx;
-#endif
-
-// An instance of the generic cellular class
-static UbloxCellularDriverGen *pDriver =
-       new UbloxCellularDriverGen(MDMTXD, MDMRXD,
-                                  MBED_CONF_UBLOX_CELL_BAUD_RATE,
-                                  MBED_CONF_APP_DEBUG_ON);
-
-// ----------------------------------------------------------------
-// PRIVATE FUNCTIONS
-// ----------------------------------------------------------------
-
-#ifdef FEATURE_COMMON_PAL
-// Locks for debug prints
-static void lock()
-{
-    mtx.lock();
-}
-
-static void unlock()
-{
-    mtx.unlock();
-}
-#endif
-
-// ----------------------------------------------------------------
-// TESTS
-// ----------------------------------------------------------------
-
-// Register with the network
-void test_start() {
-    TEST_ASSERT(pDriver->init(MBED_CONF_APP_DEFAULT_PIN));
-    TEST_ASSERT(pDriver->nwk_registration());
-}
-
-// Send an SMS message
-void test_send() {
-    TEST_ASSERT(pDriver->smsSend(MBED_CONF_APP_SMS_DESTINATION,
-                                 MBED_CONF_APP_SMS_SEND_CONTENTS));
-}
-
-// Receive an SMS message, check it and delete it
-void test_receive() {
-    int numSms = 0;
-    int index;
-    char num[17];
-    char buf[SMS_BUFFER_SIZE];
-    Timer timer;
-
-    tr_warn("!!! YOU HAVE %d SECONDS to reply to the text message !!!",
-            MBED_CONF_APP_SMS_RECEIVE_TIMEOUT / 1000);
-    timer.start();
-    while ((numSms == 0) &&
-           (timer.read_ms() < MBED_CONF_APP_SMS_RECEIVE_TIMEOUT)) {
-        numSms = pDriver->smsList("REC UNREAD", &index, 1);
-        if (numSms == 0) {
-            wait_ms(1000);
-        }
-    }
-    timer.stop();
-
-    TEST_ASSERT (numSms > 0);
-
-    TEST_ASSERT(pDriver->smsRead(index, num, buf, sizeof (buf)));
-    tr_debug("Received: \"%.*s\"", sizeof (buf), buf);
-    TEST_ASSERT (strstr(buf, MBED_CONF_APP_SMS_RECEIVE_CONTENTS) != NULL);
-
-    // Delete the message and check that it's gone
-    numSms = pDriver->smsList();
-    TEST_ASSERT(numSms > 0);
-    TEST_ASSERT(pDriver->smsDelete(index));
-    TEST_ASSERT(pDriver->smsList() == numSms - 1);
-}
-
-// De-register from the network
-void test_end() {
-    TEST_ASSERT(pDriver->nwk_deregistration());
-}
-
-// ----------------------------------------------------------------
-// TEST ENVIRONMENT
-// ----------------------------------------------------------------
-
-// Setup the test environment
-utest::v1::status_t test_setup(const size_t number_of_cases) {
-    // Setup Greentea with a timeout
-    GREENTEA_SETUP(180, "default_auto");
-    return verbose_test_setup_handler(number_of_cases);
-}
-
-// Test cases
-Case cases[] = {
-    Case("Register", test_start),
-    Case("SMS send", test_send),
-    Case("SMS receive and delete", test_receive),
-    Case("Deregister", test_end)
-};
-
-Specification specification(test_setup, cases);
-
-// ----------------------------------------------------------------
-// MAIN
-// ----------------------------------------------------------------
-
-int main() {
-
-#ifdef FEATURE_COMMON_PAL
-    mbed_trace_init();
-
-    mbed_trace_mutex_wait_function_set(lock);
-    mbed_trace_mutex_release_function_set(unlock);
-#endif
-    
-    // Run tests
-    return !Harness::run(specification);
-}
-
-// End Of File
-
--- a/ublox-cellular-driver-gen/TESTS/unit_tests/sms/template_mbed_app.txt	Fri Aug 30 12:51:50 2019 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-{
-    "config": {
-        "sms-destination": {
-            "help": "The destination number to use for SMS testing (someone must be there to reply); the number must contain no spaces and should be in international format",
-            "value": "\"+6601234567890\""
-        }        
-     },
-    "target_overrides": {
-        "*": {
-            "target.features_add": ["COMMON_PAL"],
-            "platform.stdio-convert-newlines": true
-        }
-    }
-}
-
--- a/ublox-cellular-driver-gen/TESTS/unit_tests/ussd/main.cpp	Fri Aug 30 12:51:50 2019 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-#include "mbed.h"
-#include "greentea-client/test_env.h"
-#include "unity.h"
-#include "utest.h"
-#include "UbloxCellularDriverGen.h"
-#include "UDPSocket.h"
-#ifdef FEATURE_COMMON_PAL
-#include "mbed_trace.h"
-#define TRACE_GROUP "TEST"
-#else
-#define tr_debug(format, ...) debug(format "\n", ## __VA_ARGS__)
-#define tr_info(format, ...)  debug(format "\n", ## __VA_ARGS__)
-#define tr_warn(format, ...)  debug(format "\n", ## __VA_ARGS__)
-#define tr_error(format, ...) debug(format "\n", ## __VA_ARGS__)
-#endif
-
-using namespace utest::v1;
-
-// ----------------------------------------------------------------
-// COMPILE-TIME MACROS
-// ----------------------------------------------------------------
-
-// These macros can be overridden with an mbed_app.json file and
-// contents of the following form:
-//
-//{
-//    "config": {
-//        "default-pin": {
-//            "value": "\"my_pin\""
-//        }
-//}
-
-// Whether debug trace is on
-#ifndef MBED_CONF_APP_DEBUG_ON
-# define MBED_CONF_APP_DEBUG_ON false
-#endif
-
-// The credentials of the SIM in the board.
-#ifndef MBED_CONF_APP_DEFAULT_PIN
-// Note: this is the PIN for the SIM with ICCID
-// 8944501104169548380.
-# define MBED_CONF_APP_DEFAULT_PIN "5134"
-#endif
-
-// http://www.geckobeach.com/cellular/secrets/gsmcodes.php
-// https://en.wikipedia.org/wiki/Unstructured_Supplementary_Service_Data
-
-// A few USSD commands to try, set to "" to skip
-#ifndef MBED_CONF_APP_USSD_COMMAND_1
-#  define MBED_CONF_APP_USSD_COMMAND_1 "*100#"
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_2
-#  define MBED_CONF_APP_USSD_COMMAND_2 "*#21#"
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_3
-#  define MBED_CONF_APP_USSD_COMMAND_3 "*#30#"
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_4
-#  define MBED_CONF_APP_USSD_COMMAND_4 "*#31#"
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_5
-#  define MBED_CONF_APP_USSD_COMMAND_5 "*#43#"
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_6
-#  define MBED_CONF_APP_USSD_COMMAND_6 "*#61#"
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_7
-#  define MBED_CONF_APP_USSD_COMMAND_7 ""
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_8
-#  define MBED_CONF_APP_USSD_COMMAND_8 ""
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_9
-#  define MBED_CONF_APP_USSD_COMMAND_9 ""
-#endif
-
-#ifndef MBED_CONF_APP_USSD_COMMAND_10
-#  define MBED_CONF_APP_USSD_COMMAND_10 ""
-#endif
-
-// ----------------------------------------------------------------
-// PRIVATE VARIABLES
-// ----------------------------------------------------------------
-
-#ifdef FEATURE_COMMON_PAL
-// Lock for debug prints
-static Mutex mtx;
-#endif
-
-// An instance of the generic cellular class
-static UbloxCellularDriverGen *pDriver =
-       new UbloxCellularDriverGen(MDMTXD, MDMRXD,
-                                  MBED_CONF_UBLOX_CELL_BAUD_RATE,
-                                  MBED_CONF_APP_DEBUG_ON);
-// A general purpose buffer
-static char buf[USSD_STRING_LENGTH + 1];
-
-// ----------------------------------------------------------------
-// PRIVATE FUNCTIONS
-// ----------------------------------------------------------------
-
-#ifdef FEATURE_COMMON_PAL
-// Locks for debug prints
-static void lock()
-{
-    mtx.lock();
-}
-
-static void unlock()
-{
-    mtx.unlock();
-}
-#endif
-
-// ----------------------------------------------------------------
-// TESTS
-// ----------------------------------------------------------------
-
-// Test USSD
-void test_ussd() {
-    TEST_ASSERT(pDriver->init(MBED_CONF_APP_DEFAULT_PIN));
-    TEST_ASSERT(pDriver->nwk_registration());
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_1) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_1);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_1, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_2) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_2);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_2, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_3) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_3);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_3, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_4) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_4);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_4, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_5) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_5);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_5, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_6) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_6);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_6, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_7) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_7);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_7, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_8) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_8);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_8, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_9) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_9);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_9, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    if (strlen(MBED_CONF_APP_USSD_COMMAND_10) > 0) {
-        tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_10);
-        TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_10, buf, sizeof (buf)));
-        tr_debug("USSD answer: \"%s\".", buf);
-    }
-
-    TEST_ASSERT(pDriver->nwk_deregistration());
-}
-
-// ----------------------------------------------------------------
-// TEST ENVIRONMENT
-// ----------------------------------------------------------------
-
-// Setup the test environment
-utest::v1::status_t test_setup(const size_t number_of_cases) {
-    // Setup Greentea with a timeout
-    GREENTEA_SETUP(180, "default_auto");
-    return verbose_test_setup_handler(number_of_cases);
-}
-
-// Test cases
-Case cases[] = {
-    Case("USSD test", test_ussd)
-
-};
-
-Specification specification(test_setup, cases);
-
-// ----------------------------------------------------------------
-// MAIN
-// ----------------------------------------------------------------
-
-int main() {
-
-#ifdef FEATURE_COMMON_PAL
-    mbed_trace_init();
-
-    mbed_trace_mutex_wait_function_set(lock);
-    mbed_trace_mutex_release_function_set(unlock);
-#endif
-    
-    // Run tests
-    return !Harness::run(specification);
-}
-
-// End Of File
-
--- a/ublox-cellular-driver-gen/UbloxCellularDriverGen.cpp	Fri Aug 30 12:51:50 2019 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,735 +0,0 @@
-/* Copyright (c) 2017 ublox Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "UbloxCellularDriverGen.h"
-#include "string.h"
-#if defined(FEATURE_COMMON_PAL)
-#include "mbed_trace.h"
-#define TRACE_GROUP "UCID"
-#else
-#define tr_debug(format, ...) debug_if(_debug_trace_on, format "\n", ## __VA_ARGS__)
-#define tr_info(format, ...)  debug_if(_debug_trace_on, format "\n", ## __VA_ARGS__)
-#define tr_warn(format, ...)  debug_if(_debug_trace_on, format "\n", ## __VA_ARGS__)
-#define tr_error(format, ...) debug_if(_debug_trace_on, format "\n", ## __VA_ARGS__)
-#endif
-
-/**********************************************************************
- * PROTECTED METHODS: Short Message Service
- **********************************************************************/
-
-// URC for Short Message listing.
-void UbloxCellularDriverGen::CMGL_URC()
-{
-    char buf[64];
-    int index;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +CMGL: <ix>,...
-    *buf = 0;
-    if (read_at_to_char(buf, sizeof(buf), '\n') > 0) {
-        // Now also read out the text message, so that we don't
-        // accidentally trigger URCs or the like on any of
-        // its contents
-        *_smsBuf = 0;
-        read_at_to_char(_smsBuf, sizeof(_smsBuf), '\n');
-        // Note: don't put any debug in here, this URC is being
-        // called multiple times and debug may cause it to
-        // miss characters
-        if (sscanf(buf, ": %d,", &index) == 1) {
-            _smsCount++;
-            if ((_userSmsIndex != NULL) && (_userSmsNum > 0)) {
-                *_userSmsIndex = index;
-                _userSmsIndex++;
-                _userSmsNum--;
-            }
-        }
-    }
-}
-
-// URC for new SMS messages.
-void UbloxCellularDriverGen::CMTI_URC()
-{
-    char buf[32];
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    *buf = 0;
-    if (read_at_to_char(buf, sizeof (buf), '\n') > 0) {
-        // No need to parse, any content is good
-        tr_info("New SMS received");
-    }
-}
-
-/**********************************************************************
- * PROTECTED METHODS: Unstructured Supplementary Service Data
- **********************************************************************/
-
-// URC for call waiting.
-void UbloxCellularDriverGen::CCWA_URC()
-{
-    char buf[32];
-    int numChars;
-    int a;
-    int b = 0;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +CCWA: <status>[, <class>]
-    numChars = read_at_to_char(buf, sizeof (buf), '\n');
-    if (numChars > 0) {
-        if (sscanf(buf, ": %d,%d", &a, &b) > 0) {
-            if (_ssUrcBuf == NULL) {
-                _ssUrcBuf = (char *) malloc(numChars + 5 + 1);
-                if (_ssUrcBuf != NULL) {
-                    memcpy (_ssUrcBuf, "+CCWA", 5);
-                    memcpy (_ssUrcBuf + 5, buf, numChars);
-                    *(_ssUrcBuf + numChars + 5) = 0;
-                    if (a > 0) {
-                        debug_if(_debug_trace_on, "Calling Waiting is active");
-                    } else {
-                        debug_if(_debug_trace_on, "Calling Waiting is not active");
-                    }
-                    if (b > 0) {
-                        if (b & 0x01) {
-                            debug_if(_debug_trace_on, " for voice\n");
-                        }
-                        if (b & 0x02) {
-                            debug_if(_debug_trace_on, " for data\n");
-                        }
-                        if (b & 0x04) {
-                            debug_if(_debug_trace_on, " for fax\n");
-                        }
-                        if (b & 0x08) {
-                            debug_if(_debug_trace_on, " for SMS\n");
-                        }
-                        if (b & 0x10) {
-                            debug_if(_debug_trace_on, " for data circuit sync\n");
-                        }
-                        if (b & 0x20) {
-                            debug_if(_debug_trace_on, " for data circuit async\n");
-                        }
-                        if (b & 0x40) {
-                            debug_if(_debug_trace_on, " for dedicated packet access\n");
-                        }
-                        if (b & 0x80) {
-                            debug_if(_debug_trace_on, " for dedicated PAD access\n");
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-// URC for call forwarding.
-void UbloxCellularDriverGen::CCFC_URC()
-{
-    char buf[32];
-    int numChars;
-    char num[32];
-    int a, b;
-    int numValues;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +CCFC: <status>[, <class>]
-    numChars = read_at_to_char(buf, sizeof (buf), '\n');
-    if (numChars > 0) {
-        memset (num, 0, sizeof (num));
-        numValues = sscanf(buf, ": %d,%d,\"%32[^\"][\"]", &a, &b, num);
-        if (numValues > 0) {
-            if (_ssUrcBuf == NULL) {
-                _ssUrcBuf = (char *) malloc(numChars + 5 + 1);
-                if (_ssUrcBuf != NULL) {
-                    memcpy (_ssUrcBuf, "+CCFC", 5);
-                    memcpy (_ssUrcBuf + 5, buf, numChars);
-                    *(_ssUrcBuf + numChars + 5) = 0;
-                    if (a > 0) {
-                        debug_if(_debug_trace_on, "Calling Forwarding is active ");
-                    } else {
-                        debug_if(_debug_trace_on, "Calling Forwarding is not active ");
-                    }
-                    if (numValues > 1) {
-                        if (b > 0) {
-                            if (b & 0x01) {
-                                debug_if(_debug_trace_on, " for voice");
-                            }
-                            if (b & 0x02) {
-                                debug_if(_debug_trace_on, " for data");
-                            }
-                            if (b & 0x04) {
-                                debug_if(_debug_trace_on, " for fax");
-                            }
-                            if (b & 0x08) {
-                                debug_if(_debug_trace_on, " for SMS");
-                            }
-                            if (b & 0x10) {
-                                debug_if(_debug_trace_on, " for data circuit sync");
-                            }
-                            if (b & 0x20) {
-                                debug_if(_debug_trace_on, " for data circuit async");
-                            }
-                            if (b & 0x40) {
-                                debug_if(_debug_trace_on, " for dedicated packet access");
-                            }
-                            if (b & 0x80) {
-                                debug_if(_debug_trace_on, " for dedicated PAD access");
-                            }
-                        }
-                    }
-                    if (numValues > 2) {
-                        debug_if(_debug_trace_on, " for %s\n", num);
-                    } else {
-                        debug_if(_debug_trace_on, "\n");
-                    }
-                }
-            }
-        }
-    }
-}
-
-
-// URC for calling line ID restriction.
-void UbloxCellularDriverGen::CLIR_URC()
-{
-    char buf[32];
-    int numChars;
-    int a, b;
-    int numValues;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +CLIR: <n>[, <m>]
-    numChars = read_at_to_char(buf, sizeof (buf), '\n');
-    if (numChars > 0) {
-        numValues = sscanf(buf, ": %d,%d", &a, &b);
-        if (numValues > 0) {
-            if (_ssUrcBuf == NULL) {
-                _ssUrcBuf = (char *) malloc(numChars + 5 + 1);
-                if (_ssUrcBuf != NULL) {
-                    memcpy (_ssUrcBuf, "+CLIR", 5);
-                    memcpy (_ssUrcBuf + 5, buf, numChars);
-                    *(_ssUrcBuf + numChars + 5) = 0;
-                    switch (a) {
-                        case 0:
-                            debug_if(_debug_trace_on, "Calling Line ID restriction is as subscribed\n");
-                            break;
-                        case 1:
-                            debug_if(_debug_trace_on, "Calling Line ID invocation ");
-                            break;
-                        case 2:
-                            debug_if(_debug_trace_on, "Calling Line ID suppression ");
-                            break;
-                    }
-                    if (numValues > 2) {
-                        switch (b) {
-                            case 0:
-                                debug_if(_debug_trace_on, " is not provisioned\n");
-                                break;
-                            case 1:
-                                debug_if(_debug_trace_on, " is provisioned permanently\n");
-                                break;
-                            case 2:
-                                debug_if(_debug_trace_on, " is unknown\n");
-                                break;
-                            case 3:
-                                debug_if(_debug_trace_on, " is in temporary mode, presentation restricted\n");
-                                break;
-                            case 4:
-                                debug_if(_debug_trace_on, " is in temporary mode, presentation allowed\n");
-                                break;
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-// URC for calling line ID presentation.
-void UbloxCellularDriverGen::CLIP_URC()
-{
-    char buf[32];
-    int numChars;
-    int a, b;
-    int numValues;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +CLIP: <n>[, <m>]
-    numChars = read_at_to_char(buf, sizeof (buf), '\n');
-    if (numChars > 0) {
-        numValues = sscanf(buf, ": %d,%d", &a, &b);
-        if (numValues > 0) {
-            if (_ssUrcBuf == NULL) {
-                _ssUrcBuf = (char *) malloc(numChars + 5 + 1);
-                if (_ssUrcBuf != NULL) {
-                    memcpy (_ssUrcBuf, "+CLIP", 5);
-                    memcpy (_ssUrcBuf + 5, buf, numChars);
-                    *(_ssUrcBuf + numChars + 5) = 0;
-                    switch (a) {
-                        case 0:
-                            debug_if(_debug_trace_on, "Calling Line ID disable ");
-                            break;
-                        case 1:
-                            debug_if(_debug_trace_on, "Calling Line ID enable ");
-                            break;
-                    }
-                    if (numValues > 1) {
-                        switch (b) {
-                            case 0:
-                                debug_if(_debug_trace_on, " is not provisioned\n");
-                                break;
-                            case 1:
-                                debug_if(_debug_trace_on, " is provisioned\n");
-                                break;
-                            case 2:
-                                debug_if(_debug_trace_on, " is unknown\n");
-                                break;
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-// URC for connected line ID presentation.
-void UbloxCellularDriverGen::COLP_URC()
-{
-    char buf[32];
-    int numChars;
-    int a, b;
-    int numValues;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +COLP: <n>[, <m>]
-    numChars = read_at_to_char(buf, sizeof (buf), '\n');
-    if (numChars > 0) {
-        numValues = sscanf(buf, ": %d,%d", &a, &b);
-        if (numValues > 0) {
-            if (_ssUrcBuf == NULL) {
-                _ssUrcBuf = (char *) malloc(numChars + 5 + 1);
-                if (_ssUrcBuf != NULL) {
-                    memcpy (_ssUrcBuf, "+COLP", 5);
-                    memcpy (_ssUrcBuf + 5, buf, numChars);
-                    *(_ssUrcBuf + numChars + 5) = 0;
-                    switch (a) {
-                        case 0:
-                            debug_if(_debug_trace_on, "Connected Line ID disable ");
-                            break;
-                        case 1:
-                            debug_if(_debug_trace_on, "Connected Line ID enable ");
-                            break;
-                    }
-                    if (numValues > 1) {
-                        switch (b) {
-                            case 0:
-                                debug_if(_debug_trace_on, " is not provisioned\n");
-                                break;
-                            case 1:
-                                debug_if(_debug_trace_on, " is provisioned\n");
-                                break;
-                            case 2:
-                                debug_if(_debug_trace_on, " is unknown\n");
-                                break;
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-// URC for connected line ID restriction.
-void UbloxCellularDriverGen::COLR_URC()
-{
-    char buf[32];
-    int numChars;
-    int a;
-
-    // Note: not calling _at->recv() from here as we're
-    // already in an _at->recv()
-    // +COLR: <status>
-    numChars = read_at_to_char(buf, sizeof (buf), '\n');
-    if (numChars > 0) {
-        if (sscanf(buf, ": %d", &a) > 0) {
-            if (_ssUrcBuf == NULL) {
-                _ssUrcBuf = (char *) malloc(numChars + 5 + 1);
-                if (_ssUrcBuf != NULL) {
-                    memcpy (_ssUrcBuf, "+COLR", 5);
-                    memcpy (_ssUrcBuf + 5, buf, numChars);
-                    *(_ssUrcBuf + numChars + 5) = 0;
-                    switch (a) {
-                        case 0:
-                            debug_if(_debug_trace_on, "Connected Line ID restriction is not provisioned\n");
-                            break;
-                        case 1:
-                            debug_if(_debug_trace_on, "Connected Line ID restriction is provisioned\n");
-                            break;
-                        case 2:
-                            debug_if(_debug_trace_on, "Connected Line ID restriction is unknown\n");
-                            break;
-                    }
-                }
-            }
-        }
-    }
-}
-
-/**********************************************************************
- * PUBLIC METHODS: Generic
- **********************************************************************/
-
-// Constructor.
-UbloxCellularDriverGen::UbloxCellularDriverGen(PinName tx, PinName rx,
-                                               int baud, bool debug_on)
-{
-    _userSmsIndex = NULL;
-    _userSmsNum = 0;
-    _smsCount = 0;
-    _ssUrcBuf = NULL;
-
-    // Initialise the base class, which starts the AT parser
-    baseClassInit(tx, rx, baud, debug_on);
-
-    // URCs related to SMS
-    _at->oob("+CMGL", callback(this, &UbloxCellularDriverGen::CMGL_URC));
-    // Include the colon with this one as otherwise it could be found
-    // by +CMT, should it ever occur
-    _at->oob("+CMTI:", callback(this, &UbloxCellularDriverGen::CMTI_URC));
-
-    // URCs related to supplementary services
-    _at->oob("+CCWA", callback(this, &UbloxCellularDriverGen::CCWA_URC));
-    _at->oob("+CCFC", callback(this, &UbloxCellularDriverGen::CCFC_URC));
-    _at->oob("+CLIR", callback(this, &UbloxCellularDriverGen::CLIR_URC));
-    _at->oob("+CLIP", callback(this, &UbloxCellularDriverGen::CLIP_URC));
-    _at->oob("+COLP", callback(this, &UbloxCellularDriverGen::COLP_URC));
-    _at->oob("+COLR", callback(this, &UbloxCellularDriverGen::COLR_URC));
-}
-
-// Destructor.
-UbloxCellularDriverGen::~UbloxCellularDriverGen()
-{
-}
-
-/**********************************************************************
- * PUBLIC METHODS: Short Message Service
- **********************************************************************/
-
-// Count the number of messages on the module.
-int UbloxCellularDriverGen::smsList(const char* stat, int* index, int num)
-{
-    int numMessages = -1;
-    LOCK();
-
-    _userSmsIndex = index;
-    _userSmsNum = num;
-    _smsCount = 0;
-    // There is a callback to capture the result
-    // +CMGL: <ix>,...
-    _at->debug_on(false); // No time for AT interface debug
-                          // as the list comes out in one long
-                          // stream and we can lose characters if we
-                          // pause to do printfs
-    if (_at->send("AT+CMGL=\"%s\"", stat) && _at->recv("OK\n")) {
-        numMessages = _smsCount;
-    }
-    _at->debug_on(_debug_trace_on);
-
-    // Set this back to null so that the URC won't trample
-    _userSmsIndex = NULL;
-
-    UNLOCK();
-    return numMessages;
-}
-
-// Send an SMS message.
-bool UbloxCellularDriverGen::smsSend(const char* num, const char* buf)
-{
-    bool success = false;
-    char typeOfAddress = TYPE_OF_ADDRESS_NATIONAL;
-    LOCK();
-
-    if ((strlen (num) > 0) && (*(num) == '+')) {
-        typeOfAddress = TYPE_OF_ADDRESS_INTERNATIONAL;
-    }
-    if (_at->send("AT+CMGS=\"%s\",%d", num, typeOfAddress) && _at->recv(">")) {
-        if ((_at->write(buf, (int) strlen(buf)) >= (int) strlen(buf)) &&
-            (_at->putc(0x1A) == 0) &&  // CTRL-Z
-            _at->recv("OK")) {
-            success = true;
-        }
-    }
-
-    UNLOCK();
-    return success;
-}
-
-bool UbloxCellularDriverGen::smsDelete(int index)
-{
-    bool success;
-    LOCK();
-
-    success = _at->send("AT+CMGD=%d", index) && _at->recv("OK");
-
-    UNLOCK();
-    return success;
-}
-
-bool UbloxCellularDriverGen::smsRead(int index, char* num, char* buf, int len)
-{
-    bool success = false;
-    char * endOfString;
-    int smsReadLength = 0;
-    LOCK();
-
-    if (len > 0) {
-        //+CMGR: "REC READ", "+393488535999",,"07/04/05,18:02:28+08",145,4,0,0,"+393492000466",145,93
-        // The text of the message.
-        // OK
-        memset (_smsBuf, 0, sizeof (SMS_BUFFER_SIZE)); // Ensure terminator
-        if (_at->send("AT+CMGR=%d", index) &&
-            _at->recv("+CMGR: \"%*[^\"]\",\"%15[^\"]\"%*[^\n]\n", num) &&
-            _at->recv("%" stringify(SMS_BUFFER_SIZE) "[^\n]\n", _smsBuf) &&
-            _at->recv("OK")) {
-            endOfString = strchr(_smsBuf, 0);
-            if (endOfString != NULL) {
-                smsReadLength = endOfString - _smsBuf;
-                if (smsReadLength + 1 > len) { // +1 for terminator
-                    smsReadLength = len - 1;
-                }
-                memcpy(buf, _smsBuf, smsReadLength);
-                *(buf + smsReadLength) = 0; // Add terminator
-                success = true;
-            }
-        }
-    }
-
-    UNLOCK();
-    return success;
-}
-
-/**********************************************************************
- * PUBLIC  METHODS: Unstructured Supplementary Service Data
- **********************************************************************/
-
-// Perform a USSD command.
-bool UbloxCellularDriverGen::ussdCommand(const char* cmd, char* buf, int len)
-{
-    bool success = false;
-    char * tmpBuf;
-    int atTimeout;
-    int x;
-    Timer timer;
-    LOCK();
-    atTimeout = _at_timeout; // Has to be inside LOCK()s
-
-    if (len > 0) {
-        *buf = 0;
-        if (len > USSD_STRING_LENGTH + 1) {
-            len = USSD_STRING_LENGTH + 1;
-        }
-
-        tmpBuf = (char *) malloc(USSD_STRING_LENGTH + 1);
-
-        if (tmpBuf != NULL) {
-            memset (tmpBuf, 0, USSD_STRING_LENGTH + 1);
-            // +CUSD: \"%*d, \"%128[^\"]\",%*d"
-            if (_at->send("AT+CUSD=1,\"%s\"", cmd)) {
-                // Wait for either +CUSD to come back or
-                // one of the other SS related URCs to trigger
-                if (_ssUrcBuf != NULL) {
-                    free(_ssUrcBuf);
-                    _ssUrcBuf = NULL;
-                }
-                timer.start();
-                _at->set_timeout(1000);
-                while (!success && (timer.read_ms() < 30000)) {
-                    if (_at->recv("+CUSD: %*d,\"")) {
-                        // Note: don't wait for "OK" here as the +CUSD response may come
-                        // before or after the OK
-                        // Also, the return string may include newlines so can't just use
-                        // recv() to capture it as recv() will stop capturing at a newline.
-                        if (read_at_to_char(tmpBuf, USSD_STRING_LENGTH, '\"') > 0) {
-                            success = true;
-                            memcpy (buf, tmpBuf, len);
-                            *(buf + len - 1) = 0;
-                        }
-                    } else {
-                        // Some of the return values do not appear as +CUSD but
-                        // instead as the relevant URC for call waiting, call forwarding,
-                        // etc.  Test those here.
-                        if (_ssUrcBuf != NULL) {
-                            success = true;
-                            x = strlen (_ssUrcBuf);
-                            if (x > len - 1 ) {
-                                x = len - 1;
-                            }
-                            memcpy (buf, _ssUrcBuf, x);
-                            *(buf + x) = 0;
-                            free (_ssUrcBuf);
-                            _ssUrcBuf = NULL;
-                        }
-                    }
-                }
-                at_set_timeout(atTimeout);
-                timer.stop();
-            }
-        }
-    }
-
-    UNLOCK();
-    return success;
-}
-
-/**********************************************************************
- * PUBLIC: Module File System
- **********************************************************************/
-
-// Delete a file from the module's file system.
-bool UbloxCellularDriverGen::delFile(const char* filename)
-{
-    bool success;
-    LOCK();
-
-    success = _at->send("AT+UDELFILE=\"%s\"", filename) && _at->recv("OK");
-
-    UNLOCK();
-    return success;
-}
-
-// Write a buffer of data to a file in the module's file system.
-int UbloxCellularDriverGen::writeFile(const char* filename, const char* buf, int len)
-{
-    int bytesWritten = -1;
-    LOCK();
-
-    if (_at->send("AT+UDWNFILE=\"%s\",%d", filename, len) && _at->recv(">")) {
-        if ((_at->write(buf, len) >= len) && _at->recv("OK")) {
-            bytesWritten = len;
-        }
-    }
-
-    UNLOCK();
-    return bytesWritten;
-}
-
-// Read a file from the module's file system
-// Note: this is implemented with block reads since UARTSerial
-// does not currently allow flow control and there is a danger
-// of character loss with large whole-file reads
-int UbloxCellularDriverGen::readFile(const char* filename, char* buf, int len)
-{
-    int countBytes = -1;  // Counter for file reading (default value)
-    int bytesToRead = fileSize(filename);  // Retrieve the size of the file
-    int offset = 0;
-    int blockSize = FILE_BUFFER_SIZE;
-    char respFilename[48 + 1];
-    int sz, sz_read;
-    bool success = true;
-    int ch = 0;
-    int timeLimit;
-    Timer timer;
-
-    debug_if(_debug_trace_on, "readFile: filename is %s; size is %d\n", filename, bytesToRead);
-
-    memset(respFilename, 0, sizeof (respFilename));  // Ensure terminator
-    if (bytesToRead > 0)
-    {
-        if (bytesToRead > len) {
-            bytesToRead = len;
-        }
-
-        while (success && (bytesToRead > 0)) {
-
-            if (bytesToRead < blockSize) {
-                blockSize = bytesToRead;
-            }
-            LOCK();
-
-            if (blockSize > 0) {
-                if (_at->send("AT+URDBLOCK=\"%s\",%d,%d\r\n", filename, offset, blockSize) &&
-                    _at->recv("+URDBLOCK:%48[^,],%d,\"", respFilename, &sz)) {
-                    // Note: not checking respFilename as some modules (e.g. Sara-G350 00S-00)
-                    // doesn't always include it.
-                    // Would use _at->read() here, but if it runs ahead of the
-                    // serial stream it returns -1 instead of the number of characters
-                    // read so far, which is not very helpful so instead use _at->getc() and
-                    // a time limit. The time limit is four times the amount of time it
-                    // should take to read the block at the working baud rate with a minimum
-                    // of 100 ms (for short files)
-                    timer.reset();
-                    timer.start();
-                    timeLimit = blockSize * 4 / ((MBED_CONF_UBLOX_CELL_BAUD_RATE / 8) / 1000);
-                    if (timeLimit < 100) {
-                        timeLimit = 100;
-                    }
-                    sz_read = 0;
-                    while ((sz_read < blockSize) && (timer.read_ms() < timeLimit)) {
-                        ch = _at->getc();
-                        if (ch >= 0) {
-                            *buf = ch;
-                            buf++;
-                            sz_read++;
-                        }
-                    }
-                    timer.stop();
-
-                    if (sz_read == blockSize) {
-                        bytesToRead -= sz_read;
-                        offset += sz_read;
-                        _at->recv("OK");
-                    } else {
-                    debug_if(_debug_trace_on, "blockSize %d but only received %d bytes\n", blockSize, sz_read);
-                        success = false;
-                    }
-               } else {
-                   success = false;
-               }
-            }
-
-            UNLOCK();
-        }
-
-        if (success) {
-            countBytes = offset;
-        }
-    }
-
-    return countBytes;
-}
-
-// Return the size of a file.
-int UbloxCellularDriverGen::fileSize(const char* filename)
-{
-    int returnValue = -1;
-    int fileSize;
-    LOCK();
-
-    if (_at->send("AT+ULSTFILE=2,\"%s\"", filename) &&
-        _at->recv("+ULSTFILE: %d\n", &fileSize) &&
-        _at->recv("OK")) {
-        returnValue = fileSize;
-    }
-
-    UNLOCK();
-    return returnValue;
-}
-
-// End of file
-
--- a/ublox-cellular-driver-gen/UbloxCellularDriverGen.h	Fri Aug 30 12:51:50 2019 +0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,273 +0,0 @@
-/* Copyright (c) 2017 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _UBLOX_CELLULAR_DRIVER_GEN_
-#define _UBLOX_CELLULAR_DRIVER_GEN_
-
-#include "UbloxCellularBase.h"
-
-/** UbloxCellularDriverGen class
- * This interface provide SMS, USSD and
- * module File System functionality.
- */
-class UbloxCellularDriverGen: virtual public UbloxCellularBase {
-
-public:
-    /** Constructor.
-     *
-     * @param tx       the UART TX data pin to which the modem is attached.
-     * @param rx       the UART RX data pin to which the modem is attached.
-     * @param baud     the UART baud rate.
-     * @param debugOn  true to switch AT interface debug on, otherwise false.
-     */
-    UbloxCellularDriverGen(PinName tx = MDMTXD, PinName rx = MDMRXD,
-                           int baud = MBED_CONF_UBLOX_CELL_BAUD_RATE,
-                           bool debugOn = false);
-
-    /* Destructor.
-     */
-    ~UbloxCellularDriverGen();
-
-    /**********************************************************************
-     * PUBLIC: Short Message Service
-     **********************************************************************/
-    
-    /** The size of an SMS storage buffer, including null terminator.
-     */
-    #define SMS_BUFFER_SIZE 145
-
-    /** Count the number of messages in the device and optionally return a
-     * list with indexes from the storage locations in the device.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param stat  what type of messages you can use:
-     *              "REC UNREAD", "REC READ", "STO UNSENT", "STO SENT", "ALL".
-     * @param index list where to save the storage positions (pointer
-     *              to an array of ints).
-     * @param num   number of elements that can be stored in the list.
-     * @return      the number of messages, this can be bigger than num,
-     *              -1 on failure.
-     */
-    int smsList(const char* stat = "ALL", int* index = NULL, int num = 0);
-    
-    /** Read a message from a storage position.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param index  the storage position to read.
-     * @param num    the originator address (16 chars including terminator).
-     * @param buf    a buffer where to save the short message.
-     * @param len    the length of buf.
-     * @return       true if successful, false otherwise.
-     */
-    bool smsRead(int index, char* num, char* buf, int len);
-    
-    /** Delete a message.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param index the storage position to delete.
-     * @return true if successful, false otherwise.
-     */
-    bool smsDelete(int index);
-    
-    /** Send a message to a recipient.
-     *
-     * Note: init() and nwk_registration() should be called before
-     * this method can be used.
-     *
-     * @param num the phone number of the recipient as a null terminated
-     *            string.  Note: no spaces are allowed in this string.
-     * @param buf the content of the message to sent, null terminated.
-     * @return    true if successful, false otherwise.
-     */
-    bool smsSend(const char* num, const char* buf);
-    
-    /**********************************************************************
-     * PUBLIC: Unstructured Supplementary Service Data
-     **********************************************************************/
-    
-    /** The maximum size of a USSD string (not including terminator).
-     */
-    #define USSD_STRING_LENGTH 128
-
-    /** Make a USSD query.
-     *
-     * Note: init() should be called before using this method can be
-     * used and, in many cases, nwk_registration() is also required as
-     * the USSD may need network access.
-     *
-     * Note: some USSD commands relate to call waiting, call forwarding,
-     * etc., which can result in multiple responses.  This function returns
-     * only the first response.  Instantiate this class with debugOn set to
-     * true to get a better view of what is really going on.  If such
-     * responses are important to you, you should subclass this class and
-     * parse for them specifically and, probably, use specific AT commands
-     * rather than USSD.
-     *
-     * @param cmd the USSD string to send e.g "*#100#".
-     * @param buf a buffer where to save the reply, which
-     *            will always be returned zero terminated.
-     * @param len the length of buf, set to USSD_STRING_LENGTH + 1 to
-     *            obtain the maximum length response plus terminator.
-     * @return    true if successful, false otherwise.
-     */
-    bool ussdCommand(const char* cmd, char* buf, int len);
-    
-    /**********************************************************************
-     * PUBLIC: Module File System
-     **********************************************************************/
-    
-    /** Delete a file from the module's local file system.  An attempt
-     * to delete a non-existent file will fail.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param filename the name of the file.
-     * @return         true if successful, false otherwise.
-     */
-    bool delFile(const char* filename);
-    
-    /** Write some data to a file in the module's local file system.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param  filename the name of the file.
-     * @param  buf the data to write.
-     * @param  len the size of the data to write.
-     * @return the number of bytes written.
-     */
-    int writeFile(const char* filename, const char* buf, int len);
-    
-    /** Read a file from the module's local file system.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param  filename the name of the file
-     * @param  buf a buffer to hold the data
-     * @param  len the size to read
-     * @return the number of bytes read
-    */
-    int readFile(const char* filename, char* buf, int len);
-    
-    /** Retrieve the file size from the module's local file system.
-     *
-     * Note: init() should be called before this method can be used.
-     *
-     * @param  filename the name of the file.
-     * @return the file size in bytes.
-     */
-    int fileSize(const char* filename);
-    
-protected:
-
-    /**********************************************************************
-     * PROTECTED: Short Message Service
-     **********************************************************************/
-
-    /** The number type for telephone numbers without a + on the front
-     */
-    #define TYPE_OF_ADDRESS_NATIONAL 129
-
-    /** The number type for telephone numbers with a + on the front
-     */
-    #define TYPE_OF_ADDRESS_INTERNATIONAL 145
-
-    /** Convert a #define to a string
-     */
-    #define stringify(a) str(a)
-    #define str(a) #a
-
-    /** Place to store the index of an SMS message.
-     */
-    int *_userSmsIndex;
-
-    /** The number of SMS message being returned to the user.
-     */
-    int _userSmsNum;
-
-    /** The number of SMS messages stored in the module.
-     */
-    int _smsCount;
-
-    /** Temporary storage for an SMS message.
-     */
-    char _smsBuf[SMS_BUFFER_SIZE];
-
-    /** URC for Short Message listing.
-     */
-    void CMGL_URC();
-
-    /** URC for new SMS messages.
-     */
-    void CMTI_URC();
-
-    /**********************************************************************
-     * PROTECTED: Unstructured Supplementary Service Data
-     **********************************************************************/
-
-    /** A buffer for the string assembled from the URC.
-     */
-    char * _ssUrcBuf;
-
-    /** URC for USSD.
-     */
-    void CUSD_URC();
-
-    /** URC for call waiting.
-     */
-    void CCWA_URC();
-
-    /** URC for call forwarding.
-     */
-    void CCFC_URC();
-
-    /** URC for calling lined ID restriction.
-     */
-    void CLIR_URC();
-
-    /** URC for calling lined ID presentation.
-     */
-    void CLIP_URC();
-
-    /** URC for connected lined ID restriction.
-     */
-    void COLR_URC();
-
-    /** URC for connected lined ID presentation.
-     */
-    void COLP_URC();
-
-    /**********************************************************************
-     * PROTECTED: File System
-     **********************************************************************/
-
-    /** The maximum size of a single read of file data.
-     * Note: this should be no larger than BUFFERED_SERIAL_RXBUF_SIZE
-     * (which defaults to 256) minus some margin for the AT command
-     * stuff that precedes it (which includes the filename).  A good
-     * number is 192.  If you want to use something bigger then add an
-     * entry to the target_overrides section of your mbed_app.json of the
-     * following form:
-     *
-     * "platform.buffered-serial-rxbuf-size": 1024
-     */
-
-    #define FILE_BUFFER_SIZE 192
-};
-
-#endif // _UBLOX_CELLULAR_DRIVER_GEN_
-