This class provides SMS, USSD and modem file system support for u-blox modules on the C027 and C030 boards (excepting the C030 N2xx flavour) from mbed 5.5 onwards.

Dependents:   example-ublox-at-cellular-interface-ext example-ublox-cellular-driver-gen HelloMQTT ublox_new_driver_test ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "greentea-client/test_env.h"
00003 #include "unity.h"
00004 #include "utest.h"
00005 #include "UbloxCellularDriverGen.h"
00006 #include "UDPSocket.h"
00007 #ifdef FEATURE_COMMON_PAL
00008 #include "mbed_trace.h"
00009 #define TRACE_GROUP "TEST"
00010 #else
00011 #define tr_debug(format, ...) debug(format "\n", ## __VA_ARGS__)
00012 #define tr_info(format, ...)  debug(format "\n", ## __VA_ARGS__)
00013 #define tr_warn(format, ...)  debug(format "\n", ## __VA_ARGS__)
00014 #define tr_error(format, ...) debug(format "\n", ## __VA_ARGS__)
00015 #endif
00016 
00017 using namespace utest::v1;
00018 
00019 // ----------------------------------------------------------------
00020 // COMPILE-TIME MACROS
00021 // ----------------------------------------------------------------
00022 
00023 // These macros can be overridden with an mbed_app.json file and
00024 // contents of the following form:
00025 //
00026 //{
00027 //    "config": {
00028 //        "default-pin": {
00029 //            "value": "\"my_pin\""
00030 //        }
00031 //}
00032 
00033 // Whether debug trace is on
00034 #ifndef MBED_CONF_APP_DEBUG_ON
00035 # define MBED_CONF_APP_DEBUG_ON false
00036 #endif
00037 
00038 // The credentials of the SIM in the board.
00039 #ifndef MBED_CONF_APP_DEFAULT_PIN
00040 // Note: this is the PIN for the SIM with ICCID
00041 // 8944501104169548380.
00042 # define MBED_CONF_APP_DEFAULT_PIN "5134"
00043 #endif
00044 
00045 // http://www.geckobeach.com/cellular/secrets/gsmcodes.php
00046 // https://en.wikipedia.org/wiki/Unstructured_Supplementary_Service_Data
00047 
00048 // A few USSD commands to try, set to "" to skip
00049 #ifndef MBED_CONF_APP_USSD_COMMAND_1
00050 #  define MBED_CONF_APP_USSD_COMMAND_1 "*100#"
00051 #endif
00052 
00053 #ifndef MBED_CONF_APP_USSD_COMMAND_2
00054 #  define MBED_CONF_APP_USSD_COMMAND_2 "*#21#"
00055 #endif
00056 
00057 #ifndef MBED_CONF_APP_USSD_COMMAND_3
00058 #  define MBED_CONF_APP_USSD_COMMAND_3 "*#30#"
00059 #endif
00060 
00061 #ifndef MBED_CONF_APP_USSD_COMMAND_4
00062 #  define MBED_CONF_APP_USSD_COMMAND_4 "*#31#"
00063 #endif
00064 
00065 #ifndef MBED_CONF_APP_USSD_COMMAND_5
00066 #  define MBED_CONF_APP_USSD_COMMAND_5 "*#43#"
00067 #endif
00068 
00069 #ifndef MBED_CONF_APP_USSD_COMMAND_6
00070 #  define MBED_CONF_APP_USSD_COMMAND_6 "*#61#"
00071 #endif
00072 
00073 #ifndef MBED_CONF_APP_USSD_COMMAND_7
00074 #  define MBED_CONF_APP_USSD_COMMAND_7 ""
00075 #endif
00076 
00077 #ifndef MBED_CONF_APP_USSD_COMMAND_8
00078 #  define MBED_CONF_APP_USSD_COMMAND_8 ""
00079 #endif
00080 
00081 #ifndef MBED_CONF_APP_USSD_COMMAND_9
00082 #  define MBED_CONF_APP_USSD_COMMAND_9 ""
00083 #endif
00084 
00085 #ifndef MBED_CONF_APP_USSD_COMMAND_10
00086 #  define MBED_CONF_APP_USSD_COMMAND_10 ""
00087 #endif
00088 
00089 // ----------------------------------------------------------------
00090 // PRIVATE VARIABLES
00091 // ----------------------------------------------------------------
00092 
00093 #ifdef FEATURE_COMMON_PAL
00094 // Lock for debug prints
00095 static Mutex mtx;
00096 #endif
00097 
00098 // An instance of the generic cellular class
00099 static UbloxCellularDriverGen *pDriver =
00100        new UbloxCellularDriverGen(MDMTXD, MDMRXD,
00101                                   MBED_CONF_UBLOX_CELL_BAUD_RATE,
00102                                   MBED_CONF_APP_DEBUG_ON);
00103 // A general purpose buffer
00104 static char buf[USSD_STRING_LENGTH + 1];
00105 
00106 // ----------------------------------------------------------------
00107 // PRIVATE FUNCTIONS
00108 // ----------------------------------------------------------------
00109 
00110 #ifdef FEATURE_COMMON_PAL
00111 // Locks for debug prints
00112 static void lock()
00113 {
00114     mtx.lock();
00115 }
00116 
00117 static void unlock()
00118 {
00119     mtx.unlock();
00120 }
00121 #endif
00122 
00123 // ----------------------------------------------------------------
00124 // TESTS
00125 // ----------------------------------------------------------------
00126 
00127 // Test USSD
00128 void test_ussd() {
00129     TEST_ASSERT(pDriver->init(MBED_CONF_APP_DEFAULT_PIN));
00130     TEST_ASSERT(pDriver->nwk_registration());
00131 
00132     if (strlen(MBED_CONF_APP_USSD_COMMAND_1) > 0) {
00133         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_1);
00134         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_1, buf, sizeof (buf)));
00135         tr_debug("USSD answer: \"%s\".", buf);
00136     }
00137 
00138     if (strlen(MBED_CONF_APP_USSD_COMMAND_2) > 0) {
00139         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_2);
00140         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_2, buf, sizeof (buf)));
00141         tr_debug("USSD answer: \"%s\".", buf);
00142     }
00143 
00144     if (strlen(MBED_CONF_APP_USSD_COMMAND_3) > 0) {
00145         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_3);
00146         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_3, buf, sizeof (buf)));
00147         tr_debug("USSD answer: \"%s\".", buf);
00148     }
00149 
00150     if (strlen(MBED_CONF_APP_USSD_COMMAND_4) > 0) {
00151         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_4);
00152         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_4, buf, sizeof (buf)));
00153         tr_debug("USSD answer: \"%s\".", buf);
00154     }
00155 
00156     if (strlen(MBED_CONF_APP_USSD_COMMAND_5) > 0) {
00157         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_5);
00158         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_5, buf, sizeof (buf)));
00159         tr_debug("USSD answer: \"%s\".", buf);
00160     }
00161 
00162     if (strlen(MBED_CONF_APP_USSD_COMMAND_6) > 0) {
00163         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_6);
00164         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_6, buf, sizeof (buf)));
00165         tr_debug("USSD answer: \"%s\".", buf);
00166     }
00167 
00168     if (strlen(MBED_CONF_APP_USSD_COMMAND_7) > 0) {
00169         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_7);
00170         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_7, buf, sizeof (buf)));
00171         tr_debug("USSD answer: \"%s\".", buf);
00172     }
00173 
00174     if (strlen(MBED_CONF_APP_USSD_COMMAND_8) > 0) {
00175         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_8);
00176         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_8, buf, sizeof (buf)));
00177         tr_debug("USSD answer: \"%s\".", buf);
00178     }
00179 
00180     if (strlen(MBED_CONF_APP_USSD_COMMAND_9) > 0) {
00181         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_9);
00182         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_9, buf, sizeof (buf)));
00183         tr_debug("USSD answer: \"%s\".", buf);
00184     }
00185 
00186     if (strlen(MBED_CONF_APP_USSD_COMMAND_10) > 0) {
00187         tr_debug("Sending : \"%s\".", MBED_CONF_APP_USSD_COMMAND_10);
00188         TEST_ASSERT(pDriver->ussdCommand(MBED_CONF_APP_USSD_COMMAND_10, buf, sizeof (buf)));
00189         tr_debug("USSD answer: \"%s\".", buf);
00190     }
00191 
00192     TEST_ASSERT(pDriver->nwk_deregistration());
00193 }
00194 
00195 // ----------------------------------------------------------------
00196 // TEST ENVIRONMENT
00197 // ----------------------------------------------------------------
00198 
00199 // Setup the test environment
00200 utest::v1::status_t test_setup(const size_t number_of_cases) {
00201     // Setup Greentea with a timeout
00202     GREENTEA_SETUP(180, "default_auto");
00203     return verbose_test_setup_handler(number_of_cases);
00204 }
00205 
00206 // Test cases
00207 Case cases[] = {
00208     Case("USSD test", test_ussd)
00209 
00210 };
00211 
00212 Specification specification(test_setup, cases);
00213 
00214 // ----------------------------------------------------------------
00215 // MAIN
00216 // ----------------------------------------------------------------
00217 
00218 int main() {
00219 
00220 #ifdef FEATURE_COMMON_PAL
00221     mbed_trace_init();
00222 
00223     mbed_trace_mutex_wait_function_set(lock);
00224     mbed_trace_mutex_release_function_set(unlock);
00225 #endif
00226     
00227     // Run tests
00228     return !Harness::run(specification);
00229 }
00230 
00231 // End Of File
00232