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
Diff: TESTS/unit_tests/ussd/main.cpp
- Revision:
- 0:bb5fabac67ab
- Child:
- 3:027c9eaec52c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TESTS/unit_tests/ussd/main.cpp Mon Jun 05 13:00:31 2017 +0000 @@ -0,0 +1,215 @@ +#include "mbed.h" +#include "greentea-client/test_env.h" +#include "unity.h" +#include "utest.h" +#include "UbloxCellularDriverGen.h" +#include "UDPSocket.h" +#include "FEATURE_COMMON_PAL/nanostack-libservice/mbed-client-libservice/common_functions.h" +#include "mbed_trace.h" +#define TRACE_GROUP "TEST" + +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\"" +// } +//} + +// 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 +// ---------------------------------------------------------------- + +// Lock for debug prints +static Mutex mtx; + +// An instance of the generic cellular class +static UbloxCellularDriverGen *pDriver = + new UbloxCellularDriverGen(MDMTXD, MDMRXD, + MBED_CONF_UBLOX_CELL_BAUD_RATE, + true); +// A general purpose buffer +static char buf[USSD_STRING_LENGTH + 1]; + +// ---------------------------------------------------------------- +// PRIVATE FUNCTIONS +// ---------------------------------------------------------------- + +// Locks for debug prints +static void lock() +{ + mtx.lock(); +} + +static void unlock() +{ + mtx.unlock(); +} + +// ---------------------------------------------------------------- +// 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() { + + mbed_trace_init(); + + mbed_trace_mutex_wait_function_set(lock); + mbed_trace_mutex_release_function_set(unlock); + + // Run tests + return !Harness::run(specification); +} + +// End Of File +