Okundu Omeni
/
wifi-https-ble-sm-uart-atcmd-5-13-1
this is using the mbed os version 5-13-1
Diff: source/main-https.cpp
- Revision:
- 79:a2187bbfa407
- Parent:
- 78:07bb86e3ce14
- Child:
- 80:e8f0e92e3ac9
--- a/source/main-https.cpp Sat Mar 16 13:05:52 2019 +0000 +++ b/source/main-https.cpp Wed Mar 20 21:02:47 2019 +0000 @@ -15,6 +15,7 @@ #include "LEDService.h" #include "ble/services/UARTService.h" #include "common_config.h" +#include "common_types.h" #include "ATCmdManager.h" #include "BleManager.h" #include "WiFiManager.h" @@ -35,6 +36,7 @@ // BLE configuration static ble_config_t ble_config; +const uint8_t pairingPassword[6] = "1101"; // BLE interface pointer //BLE &_ble; // BLE peripheral pointer @@ -50,6 +52,9 @@ LEDService *ledServicePtr; +MemoryPool<wifi_cmd_message_t, 16> aT2WiFimPool; +Queue<wifi_cmd_message_t, 16> aT2WiFiCmdQueue; + /* allocate statically stacks for the three threads */ //unsigned char rt_stk[1024]; @@ -266,12 +271,36 @@ } } +void printWaitAbortKeyPress(int numSecs) +{ + printf("Waiting for %d seconds... [press key to abort]\n", numSecs); + char fmtstr[20]; + for(int i=0;i<numSecs;i++){ + printf("%d", i); + printf("\n"); + sprintf(fmtstr, "BLE: loop # %d\n", i); + peripheral->sendBLEUartData(fmtstr); + wait(0.5); + eventQueue.dispatch(500); // Dispatch time - 500msec + if(device->readable()){ + printf("keypress detected aborting....\n"); + device->getc(); + break; + } + } +} + + void setupDefaultBleConfig() { strcpy(ble_config.deviceName, DEVICE_NAME_MAIN);// set BLE device name ble_config.advInterval = 1000; // set advertising interval to 1 second default ble_config.advTimeout = 0; // set advertising timeout to disabled by default + // This works in C and C++ + memcpy(ble_config.pairingKey, pairingPassword, 6); // + + //ble_config.pairingKey = pairingPassword; } void setupDefaultWiFiConfig() @@ -342,6 +371,7 @@ } //#define DISABLE_WIFI +#define DISABLE_WIFI_DEMO int main() { reset_counter++; //performFreeMemoryCheck(); @@ -349,8 +379,8 @@ printf("\r\n ++++++ PROGRAM STARTING -- reset count = %d ++++++ \r\n", reset_counter); device = new RawSerial(USBTX, USBRX, DEFAULT_BAUD_RATE); //ble_security_main(); + setupDefaultWiFiConfig(); setupDefaultBleConfig(); - setupDefaultWiFiConfig(); BLE& _ble = BLE::Instance(); events::EventQueue queue(/* event count */ 10 * EVENTS_EVENT_SIZE); #if MBED_CONF_APP_FILESYSTEM_SUPPORT @@ -372,7 +402,7 @@ //performFreeMemoryCheck(); //reportGapState(); print_memory_info(); - printWait(60); // lets give time to see BLE advertising... + printWaitAbortKeyPress(120); //reportGapState(); peripheral->stopAdvertising(); //queue.break_dispatch(); @@ -384,7 +414,11 @@ #ifndef DISABLE_WIFI // comment out wifi part int start = Kernel::get_ms_count(); #ifdef DISABLE_WIFI_DEMO - wiFiManager = new WiFiManager(wifi_config, wifi); + network = WiFiInterface::get_default_instance(); + if (!network) { + printf("ERROR: No WiFiInterface found.\n"); + } + wiFiManager = new WiFiManager(wifi_config, network, &aT2WiFimPool, &aT2WiFiCmdQueue); #else NetworkInterface* network = connect_to_default_network_interface(); int stop = Kernel::get_ms_count(); @@ -398,11 +432,11 @@ #endif #else device->printf("\n Wifi Demo disabled so just waiting it out... \n\n"); - printWait(60); // lets wait for a minute before turning BLE back on + printWait(2); // lets wait for a minute before turning BLE back on device->printf("\n ++++++ restarting BLE ++++++ \n\n"); #endif peripheral->startAdvertising(); - printWait(60); + printWait(2); #ifdef ENABLE_UART_BACKGRND_DEMO for(int i=0;i<255;i++) { @@ -424,10 +458,64 @@ wait(0.1); } #endif + + device->printf("\r\n++++++ Press key for Wifi demo test ++++++ \r\n"); + printWaitAbortKeyPress(120); +#ifdef SKIP_WIFI_SCAN_DEMO + device->printf("\r\n++++++ Test WiFi Manager Network Scan ++++++ \r\n"); + int count; + count = wiFiManager->scanNetworks(); + if (count <= 0) { + device->printf("scan() failed with return value: %d\n", count); + } + else { + device->printf("\r\n++++++ Test WiFi Scan found %d networks ++++++ \r\n ++++ SUCCESS ++++\r\n", count); + } +#endif + device->printf("\r\n++++++ Test WiFi Manager Network connect ++++++ \r\n"); + nsapi_error_t werror; + werror = wiFiManager->connect(); + if (werror < 0) { + device->printf("connect() failed with return value: %d\n", werror); + } + else { + device->printf("\r\n++++++ Test WiFi connect SUCCESSFUL ++++++ \r\n"); + } + if(!werror) // connect successful - test dicsonnection + { + device->printf("\r\n++++++ Test WiFi Manager Network disconnect ++++++ \r\n"); + werror = wiFiManager->disconnect(); + if (werror) { + device->printf("disconnect() failed with return value: %d\n", werror); + } + else { + device->printf("\r\n++++++ Test WiFi disconnect SUCCESSFUL ++++++ \r\n"); + } + } + + //wiFiManager->runMain(); + device->printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n"); + device->printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n"); + device->printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n"); + device->printf("\r\n++++++ Test WiFi Manager Network scan from thread ++++++ \r\n"); + device->printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n"); + device->printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n"); + device->printf("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n"); + t.start(callback(wiFiManager, &WiFiManager::runMain)); + /* disconnect in 2 s */ + //_event_queue.call_in( + // 2000, &_ble.gap(), + // &Gap::disconnect, _handle, Gap::REMOTE_USER_TERMINATED_CONNECTION + //eventQueue.dispatch_forever(); + wifi_thread.start(callback(&eventQueue, &EventQueue::dispatch_forever)); device->printf("\r\n++++++ Starting ATCmdmanager ++++++ \r\n"); - ATCmdManager *aTCmdManager = new ATCmdManager(USBTX, USBRX, peripheral, wiFiManager, true); + ATCmdManager *aTCmdManager = new ATCmdManager(USBTX, USBRX, peripheral, + eventQueue, wiFiManager, + &aT2WiFimPool, &aT2WiFiCmdQueue, + true); aTCmdManager->runMain(); - atcmd_thread.start(callback(aTCmdManager, &ATCmdManager::runMain)); + //atcmd_thread.start(callback(aTCmdManager, &ATCmdManager::runMain)); + while(1) wait(0.1); //performFreeMemoryCheck(); //eventQueue.dispatch_forever();