this is using the mbed os version 5-13-1

Dependencies:   mbed-http

Committer:
ocomeni
Date:
Sun May 19 11:25:28 2019 +0000
Branch:
PassingRegression
Revision:
115:8054dbadfaa0
Parent:
114:b11bb96c09f3
Child:
116:2296cf274661
refactored main program so BLE and WIFI manager not automatically started unless defines are set.; Tested on python platform and working ok. Need some more testing for stability.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ocomeni 73:6f5021cbe752 1 #define MBED_CONF_MBED_TRACE_ENABLE 1
ocomeni 73:6f5021cbe752 2
ocomeni 73:6f5021cbe752 3 #include "select-demo.h"
ocomeni 103:7b566b522427 4 #include "debug.h"
ocomeni 73:6f5021cbe752 5
ocomeni 73:6f5021cbe752 6 #if DEMO == DEMO_HTTPS
ocomeni 73:6f5021cbe752 7
ocomeni 73:6f5021cbe752 8 #include <events/mbed_events.h>
ocomeni 73:6f5021cbe752 9 #include <mbed.h>
ocomeni 73:6f5021cbe752 10 #include "ble/BLE.h"
ocomeni 88:7ffa053be662 11 #include "fault_handlers.h"
ocomeni 73:6f5021cbe752 12 #include "ATCmdParser.h"
ocomeni 103:7b566b522427 13
ocomeni 73:6f5021cbe752 14
ocomeni 73:6f5021cbe752 15 #include "LEDService.h"
ocomeni 73:6f5021cbe752 16 #include "ble/services/UARTService.h"
ocomeni 74:f26e846adfe9 17 #include "common_config.h"
ocomeni 79:a2187bbfa407 18 #include "common_types.h"
ocomeni 74:f26e846adfe9 19 #include "ATCmdManager.h"
ocomeni 75:08eff6258e1b 20 #include "BleManager.h"
ocomeni 78:07bb86e3ce14 21 #include "WiFiManager.h"
ocomeni 92:ec9550034276 22 #include "mbed_memory_status.h"
ocomeni 73:6f5021cbe752 23 UARTService *uart;
ocomeni 73:6f5021cbe752 24
ocomeni 108:3c8fb2c6e7bf 25 DigitalOut led1(LED1);
ocomeni 108:3c8fb2c6e7bf 26 DigitalOut led2(LED2);
ocomeni 108:3c8fb2c6e7bf 27 DigitalOut led3(LED3);
ocomeni 73:6f5021cbe752 28
ocomeni 103:7b566b522427 29 #define FILE_CODE "main"
ocomeni 114:b11bb96c09f3 30 main_states_t mainLoop;
ocomeni 74:f26e846adfe9 31 static RawSerial *device; // tx, rx
ocomeni 78:07bb86e3ce14 32
ocomeni 78:07bb86e3ce14 33 // wifi configuration
ocomeni 78:07bb86e3ce14 34 static wifi_config_t wifi_config;
ocomeni 78:07bb86e3ce14 35 // wifi interface pointer
ocomeni 78:07bb86e3ce14 36 static WiFiInterface *network;
ocomeni 78:07bb86e3ce14 37 // wifi manager pointer
ocomeni 78:07bb86e3ce14 38 static WiFiManager *wiFiManager;
ocomeni 78:07bb86e3ce14 39
ocomeni 114:b11bb96c09f3 40 // BLE instance
ocomeni 114:b11bb96c09f3 41 //BLE& _ble;
ocomeni 114:b11bb96c09f3 42 BLE& _ble = BLE::Instance();
ocomeni 114:b11bb96c09f3 43
ocomeni 78:07bb86e3ce14 44 // BLE configuration
ocomeni 78:07bb86e3ce14 45 static ble_config_t ble_config;
ocomeni 79:a2187bbfa407 46 const uint8_t pairingPassword[6] = "1101";
ocomeni 78:07bb86e3ce14 47 // BLE peripheral pointer
ocomeni 77:0b505d1e15f4 48 static SMDevicePeripheral *peripheral;
ocomeni 78:07bb86e3ce14 49
ocomeni 78:07bb86e3ce14 50 const static char DEVICE_NAME_MAIN[] = "UBLOX-BLE";
ocomeni 73:6f5021cbe752 51 char buffer[BUFFER_LEN];
ocomeni 109:c274780ff609 52 static EventQueue eventQueue_atcmd(/* event count */ 32 * EVENTS_EVENT_SIZE);
ocomeni 109:c274780ff609 53 static EventQueue eventQueue_wifi(/* event count */ 32 * EVENTS_EVENT_SIZE);
ocomeni 113:888e262ff0a9 54 static EventQueue eventQueue_ble(/* event count */ 10 * EVENTS_EVENT_SIZE);
ocomeni 73:6f5021cbe752 55
ocomeni 80:e8f0e92e3ac9 56 /* Queue and memory pool for AT to Wifi commands */
ocomeni 92:ec9550034276 57 static MemoryPool<wifi_cmd_message_t, 16> aT2WiFimPool;
ocomeni 92:ec9550034276 58 static Queue<wifi_cmd_message_t, 16> aT2WiFiCmdQueue;
ocomeni 79:a2187bbfa407 59
ocomeni 80:e8f0e92e3ac9 60 /* Queue and memory pool for WiFi to AT commands */
ocomeni 92:ec9550034276 61 static MemoryPool<at_resp_message_t, 16> wiFi2ATmPool;
ocomeni 92:ec9550034276 62 static Queue<at_resp_message_t, 16> wiFi2ATCmdQueue;
ocomeni 80:e8f0e92e3ac9 63
ocomeni 80:e8f0e92e3ac9 64 /* Queue and memory pool for AT to WiFi data */
ocomeni 92:ec9550034276 65 static MemoryPool<wifi_data_msg_t, PQDSZ> aT2WiFiDatamPool;
ocomeni 92:ec9550034276 66 static Queue<wifi_data_msg_t, PQDSZ> aT2WiFiDataQueue;
ocomeni 80:e8f0e92e3ac9 67
ocomeni 80:e8f0e92e3ac9 68
ocomeni 80:e8f0e92e3ac9 69 /* Queue and memory pool for WiFi to AT data */
ocomeni 92:ec9550034276 70 static MemoryPool<at_data_msg_t, PQDSZ> wiFi2ATDatamPool;
ocomeni 92:ec9550034276 71 static Queue<at_data_msg_t, PQDSZ> wiFi2ATDataQueue;
ocomeni 80:e8f0e92e3ac9 72
ocomeni 80:e8f0e92e3ac9 73
ocomeni 80:e8f0e92e3ac9 74
ocomeni 74:f26e846adfe9 75
ocomeni 74:f26e846adfe9 76 /* creates three tread objects with different priorities */
ocomeni 74:f26e846adfe9 77 //Thread real_time_thread(osPriorityRealtime, 1024, &rt_stk[0]);
ocomeni 74:f26e846adfe9 78 //Thread high_prio_thread(osPriorityHigh, 1024, &hp_stk[0]);
ocomeni 74:f26e846adfe9 79 //Thread low_prio_thread(osPriorityNormal, 1024, &lp_stk[0]);
ocomeni 84:7c7add00f4bf 80
ocomeni 84:7c7add00f4bf 81 #ifdef USE_MAIN_THREAD_STACK
ocomeni 84:7c7add00f4bf 82 // using main thread stack
ocomeni 84:7c7add00f4bf 83 unsigned char btle_stk[1024];
ocomeni 84:7c7add00f4bf 84 unsigned char wifi_stk[8*1024];
ocomeni 84:7c7add00f4bf 85 unsigned char atcmd_stk[4*1024];
ocomeni 74:f26e846adfe9 86 Thread btle_thread(BTLE_THREAD_PRIORITY, 1024, &btle_stk[0]);
ocomeni 84:7c7add00f4bf 87 Thread wifi_thread(WIFI_THREAD_PRIORITY, 8*1024, &wifi_stk[0]);
ocomeni 81:637a87eb8170 88 Thread atcmd_thread(ATCMD_THREAD_PRIORITY, 4*1024, &atcmd_stk[0]);
ocomeni 84:7c7add00f4bf 89 #else
ocomeni 84:7c7add00f4bf 90 // using global heap
ocomeni 113:888e262ff0a9 91 Thread btle_thread(BTLE_THREAD_PRIORITY, 4*1024);
ocomeni 109:c274780ff609 92 Thread wifi_thread(WIFI_THREAD_PRIORITY, 4*1024);
ocomeni 87:99b37d26ff2a 93 Thread atcmd_thread(ATCMD_THREAD_PRIORITY, 4*1024);
ocomeni 84:7c7add00f4bf 94 #endif
ocomeni 74:f26e846adfe9 95
ocomeni 74:f26e846adfe9 96 /* create a semaphore to synchronize the threads */
ocomeni 74:f26e846adfe9 97 Semaphore sync_sema;
ocomeni 74:f26e846adfe9 98
ocomeni 109:c274780ff609 99 Thread atcmd_evt_thread(osPriorityNormal, 1024);
ocomeni 109:c274780ff609 100 Thread wifi_evt_thread;
ocomeni 74:f26e846adfe9 101 #include "network-helper.h"
ocomeni 73:6f5021cbe752 102
ocomeni 73:6f5021cbe752 103 /* List of trusted root CA certificates
ocomeni 73:6f5021cbe752 104 * currently two: GlobalSign, the CA for os.mbed.com and Let's Encrypt, the CA for httpbin.org
ocomeni 73:6f5021cbe752 105 *
ocomeni 73:6f5021cbe752 106 * To add more root certificates, just concatenate them.
ocomeni 73:6f5021cbe752 107 */
ocomeni 73:6f5021cbe752 108 #include "https_certificates.h"
ocomeni 73:6f5021cbe752 109
ocomeni 74:f26e846adfe9 110 // wifi demo
ocomeni 74:f26e846adfe9 111 #include "wifi_demo.h"
ocomeni 73:6f5021cbe752 112
ocomeni 77:0b505d1e15f4 113 Mutex _smutex; // Protect memory access
ocomeni 87:99b37d26ff2a 114
ocomeni 73:6f5021cbe752 115 uint64_t lastTime = 0;
ocomeni 73:6f5021cbe752 116 uint64_t now = 0;
ocomeni 73:6f5021cbe752 117 uint32_t callCount = 0;
ocomeni 73:6f5021cbe752 118
ocomeni 73:6f5021cbe752 119
ocomeni 73:6f5021cbe752 120 // Wifi-demo
ocomeni 73:6f5021cbe752 121 void wifi_demo(NetworkInterface* network){
ocomeni 74:f26e846adfe9 122 int n = wifi_demo_func(network);
ocomeni 74:f26e846adfe9 123 if(n > 0)// error
ocomeni 73:6f5021cbe752 124 {
ocomeni 103:7b566b522427 125 dbg_printf(LOG, "\n --- Error running wifi demo --- \n");
ocomeni 73:6f5021cbe752 126 }
ocomeni 74:f26e846adfe9 127 }
ocomeni 73:6f5021cbe752 128
ocomeni 74:f26e846adfe9 129 // Wifi-demo2
ocomeni 74:f26e846adfe9 130 void wifi_demo2(){
ocomeni 74:f26e846adfe9 131 //int n = wifi_demo_func(network);
ocomeni 74:f26e846adfe9 132 int n =5;
ocomeni 74:f26e846adfe9 133 if(n > 0)// error
ocomeni 73:6f5021cbe752 134 {
ocomeni 103:7b566b522427 135 dbg_printf(LOG, "\n --- Error running wifi demo --- \n");
ocomeni 73:6f5021cbe752 136 }
ocomeni 74:f26e846adfe9 137 }
ocomeni 73:6f5021cbe752 138
ocomeni 73:6f5021cbe752 139
ocomeni 113:888e262ff0a9 140 void printWaitAbortKeyPress(int numSecs, const char * printStr=NULL)
ocomeni 79:a2187bbfa407 141 {
ocomeni 115:8054dbadfaa0 142 #ifdef DEBUG_ENABLED
ocomeni 115:8054dbadfaa0 143 return
ocomeni 115:8054dbadfaa0 144 #endif
ocomeni 113:888e262ff0a9 145 dbg_printf(LOG, "%s", printStr);
ocomeni 103:7b566b522427 146 dbg_printf(LOG, "Waiting for %d seconds... [press key to abort]\n", numSecs);
ocomeni 79:a2187bbfa407 147 char fmtstr[20];
ocomeni 79:a2187bbfa407 148 for(int i=0;i<numSecs;i++){
ocomeni 103:7b566b522427 149 dbg_printf(LOG, "%d", i);
ocomeni 103:7b566b522427 150 dbg_printf(LOG, "\n");
ocomeni 79:a2187bbfa407 151 sprintf(fmtstr, "BLE: loop # %d\n", i);
ocomeni 79:a2187bbfa407 152 peripheral->sendBLEUartData(fmtstr);
ocomeni 79:a2187bbfa407 153 wait(0.5);
ocomeni 113:888e262ff0a9 154 //eventQueue_atcmd.dispatch(500); // Dispatch time - 500msec
ocomeni 79:a2187bbfa407 155 if(device->readable()){
ocomeni 103:7b566b522427 156 dbg_printf(LOG, "keypress detected aborting....\n");
ocomeni 79:a2187bbfa407 157 device->getc();
ocomeni 79:a2187bbfa407 158 break;
ocomeni 79:a2187bbfa407 159 }
ocomeni 79:a2187bbfa407 160 }
ocomeni 79:a2187bbfa407 161 }
ocomeni 79:a2187bbfa407 162
ocomeni 79:a2187bbfa407 163
ocomeni 78:07bb86e3ce14 164
ocomeni 78:07bb86e3ce14 165 void setupDefaultBleConfig()
ocomeni 78:07bb86e3ce14 166 {
ocomeni 78:07bb86e3ce14 167 strcpy(ble_config.deviceName, DEVICE_NAME_MAIN);// set BLE device name
ocomeni 78:07bb86e3ce14 168 ble_config.advInterval = 1000; // set advertising interval to 1 second default
ocomeni 78:07bb86e3ce14 169 ble_config.advTimeout = 0; // set advertising timeout to disabled by default
ocomeni 79:a2187bbfa407 170 // This works in C and C++
ocomeni 79:a2187bbfa407 171 memcpy(ble_config.pairingKey, pairingPassword, 6); //
ocomeni 79:a2187bbfa407 172
ocomeni 79:a2187bbfa407 173 //ble_config.pairingKey = pairingPassword;
ocomeni 78:07bb86e3ce14 174 }
ocomeni 78:07bb86e3ce14 175
ocomeni 78:07bb86e3ce14 176 void setupDefaultWiFiConfig()
ocomeni 78:07bb86e3ce14 177 {
ocomeni 78:07bb86e3ce14 178 strcpy(wifi_config.ssid, MBED_CONF_APP_WIFI_SSID);
ocomeni 78:07bb86e3ce14 179 strcpy(wifi_config.pass, MBED_CONF_APP_WIFI_PASSWORD);
ocomeni 78:07bb86e3ce14 180 wifi_config.security = NSAPI_SECURITY_WPA_WPA2;
ocomeni 78:07bb86e3ce14 181 }
ocomeni 78:07bb86e3ce14 182
ocomeni 74:f26e846adfe9 183 static int reset_counter = 0;
ocomeni 73:6f5021cbe752 184
ocomeni 75:08eff6258e1b 185
ocomeni 75:08eff6258e1b 186
ocomeni 105:e5ce023eee93 187 //#define ENABLE_MEMORY_CHECKS
ocomeni 75:08eff6258e1b 188
ocomeni 77:0b505d1e15f4 189 void print_memory_info() {
ocomeni 103:7b566b522427 190 #ifdef ENABLE_MEMORY_CHECKS
ocomeni 77:0b505d1e15f4 191 // allocate enough room for every thread's stack statistics
ocomeni 77:0b505d1e15f4 192 int cnt = osThreadGetCount();
ocomeni 77:0b505d1e15f4 193 mbed_stats_stack_t *stats = (mbed_stats_stack_t*) malloc(cnt * sizeof(mbed_stats_stack_t));
ocomeni 77:0b505d1e15f4 194
ocomeni 77:0b505d1e15f4 195 cnt = mbed_stats_stack_get_each(stats, cnt);
ocomeni 77:0b505d1e15f4 196 for (int i = 0; i < cnt; i++) {
ocomeni 103:7b566b522427 197 dbg_printf(LOG, "Thread: 0x%lX, Stack size: %lu / %lu\r\n", stats[i].thread_id, stats[i].max_size, stats[i].reserved_size);
ocomeni 77:0b505d1e15f4 198 }
ocomeni 77:0b505d1e15f4 199 free(stats);
ocomeni 77:0b505d1e15f4 200
ocomeni 77:0b505d1e15f4 201 // Grab the heap statistics
ocomeni 77:0b505d1e15f4 202 mbed_stats_heap_t heap_stats;
ocomeni 77:0b505d1e15f4 203 mbed_stats_heap_get(&heap_stats);
ocomeni 103:7b566b522427 204 dbg_printf(LOG, "Heap size: %lu / %lu bytes\r\n", heap_stats.current_size, heap_stats.reserved_size);
ocomeni 103:7b566b522427 205 #endif
ocomeni 77:0b505d1e15f4 206 }
ocomeni 77:0b505d1e15f4 207
ocomeni 108:3c8fb2c6e7bf 208 void blinkLEDs()
ocomeni 108:3c8fb2c6e7bf 209 {
ocomeni 108:3c8fb2c6e7bf 210 static int cnt =0;
ocomeni 108:3c8fb2c6e7bf 211 cnt++;
ocomeni 108:3c8fb2c6e7bf 212 if(cnt == 3){
ocomeni 108:3c8fb2c6e7bf 213 cnt = 0;
ocomeni 108:3c8fb2c6e7bf 214 }
ocomeni 108:3c8fb2c6e7bf 215 if(cnt==0)
ocomeni 108:3c8fb2c6e7bf 216 led1 = !led1;
ocomeni 108:3c8fb2c6e7bf 217 //wait(1.0);
ocomeni 108:3c8fb2c6e7bf 218 if(cnt==1)
ocomeni 108:3c8fb2c6e7bf 219 led2 = !led2;
ocomeni 108:3c8fb2c6e7bf 220 //wait(1.0);
ocomeni 108:3c8fb2c6e7bf 221 if(cnt==2)
ocomeni 108:3c8fb2c6e7bf 222 led3 = !led3;
ocomeni 108:3c8fb2c6e7bf 223 }
ocomeni 108:3c8fb2c6e7bf 224
ocomeni 114:b11bb96c09f3 225 void start_BLE()
ocomeni 114:b11bb96c09f3 226 {
ocomeni 114:b11bb96c09f3 227 //_ble = BLE::Instance();
ocomeni 77:0b505d1e15f4 228 #if MBED_CONF_APP_FILESYSTEM_SUPPORT
ocomeni 77:0b505d1e15f4 229 /* if filesystem creation fails or there is no filesystem the security manager
ocomeni 77:0b505d1e15f4 230 * will fallback to storing the security database in memory */
ocomeni 77:0b505d1e15f4 231 if (!create_filesystem()) {
ocomeni 103:7b566b522427 232 dbg_printf(LOG, "Filesystem creation failed, will use memory storage\r\n");
ocomeni 75:08eff6258e1b 233 }
ocomeni 76:6afda865fbf8 234 #endif
ocomeni 103:7b566b522427 235 dbg_printf(LOG, "\r\n PERIPHERAL \r\n\r\n");
ocomeni 113:888e262ff0a9 236 peripheral = new SMDevicePeripheral(_ble, eventQueue_ble, peer_address, ble_config);
ocomeni 77:0b505d1e15f4 237
ocomeni 77:0b505d1e15f4 238 peripheral->run();
ocomeni 113:888e262ff0a9 239 btle_thread.start(callback(&eventQueue_ble, &EventQueue::dispatch_forever));
ocomeni 114:b11bb96c09f3 240 }
ocomeni 114:b11bb96c09f3 241
ocomeni 114:b11bb96c09f3 242 void stop_BLE()
ocomeni 114:b11bb96c09f3 243 {
ocomeni 114:b11bb96c09f3 244 delete peripheral;
ocomeni 114:b11bb96c09f3 245 }
ocomeni 114:b11bb96c09f3 246
ocomeni 114:b11bb96c09f3 247 void start_WiFi()
ocomeni 114:b11bb96c09f3 248 {
ocomeni 80:e8f0e92e3ac9 249 wiFiManager = new WiFiManager(wifi_config, network,
ocomeni 109:c274780ff609 250 eventQueue_wifi,
ocomeni 80:e8f0e92e3ac9 251 &aT2WiFimPool, &aT2WiFiCmdQueue,
ocomeni 80:e8f0e92e3ac9 252 &wiFi2ATmPool, &wiFi2ATCmdQueue,
ocomeni 80:e8f0e92e3ac9 253 &aT2WiFiDatamPool, &aT2WiFiDataQueue,
ocomeni 80:e8f0e92e3ac9 254 &wiFi2ATDatamPool, &wiFi2ATDataQueue
ocomeni 80:e8f0e92e3ac9 255 );
ocomeni 103:7b566b522427 256 dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
ocomeni 103:7b566b522427 257 dbg_printf(LOG, "\r\n++++++ Test WiFi Manager Network scan from thread ++++++ \r\n");
ocomeni 103:7b566b522427 258 dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
ocomeni 81:637a87eb8170 259 wifi_thread.start(callback(wiFiManager, &WiFiManager::runMain));
ocomeni 103:7b566b522427 260 dbg_printf(LOG, "\r\n after starting wifi thread \r\n");
ocomeni 113:888e262ff0a9 261 printWaitAbortKeyPress(120, "Wait after WiFi Manager dispatch\r\n");
ocomeni 112:a0999ea4ece0 262 // dispatch wifi event queue on event thread
ocomeni 109:c274780ff609 263 wifi_evt_thread.start(callback(&eventQueue_wifi, &EventQueue::dispatch_forever));
ocomeni 114:b11bb96c09f3 264 }
ocomeni 114:b11bb96c09f3 265
ocomeni 114:b11bb96c09f3 266 void stop_WiFi()
ocomeni 114:b11bb96c09f3 267 {
ocomeni 114:b11bb96c09f3 268 delete network;
ocomeni 114:b11bb96c09f3 269 }
ocomeni 114:b11bb96c09f3 270
ocomeni 114:b11bb96c09f3 271
ocomeni 114:b11bb96c09f3 272 void trigger_start_BLE()
ocomeni 114:b11bb96c09f3 273 {
ocomeni 114:b11bb96c09f3 274 mainLoop = START_BLE;
ocomeni 114:b11bb96c09f3 275 }
ocomeni 114:b11bb96c09f3 276
ocomeni 114:b11bb96c09f3 277
ocomeni 114:b11bb96c09f3 278 void trigger_stop_BLE()
ocomeni 114:b11bb96c09f3 279 {
ocomeni 114:b11bb96c09f3 280 mainLoop = STOP_BLE;
ocomeni 114:b11bb96c09f3 281 }
ocomeni 114:b11bb96c09f3 282
ocomeni 114:b11bb96c09f3 283
ocomeni 114:b11bb96c09f3 284 void trigger_start_WiFi()
ocomeni 114:b11bb96c09f3 285 {
ocomeni 114:b11bb96c09f3 286 mainLoop = START_WIFI;
ocomeni 114:b11bb96c09f3 287 }
ocomeni 114:b11bb96c09f3 288
ocomeni 114:b11bb96c09f3 289
ocomeni 114:b11bb96c09f3 290 void trigger_stop_WiFi()
ocomeni 114:b11bb96c09f3 291 {
ocomeni 114:b11bb96c09f3 292 mainLoop = STOP_WIFI;
ocomeni 114:b11bb96c09f3 293 }
ocomeni 114:b11bb96c09f3 294
ocomeni 114:b11bb96c09f3 295
ocomeni 114:b11bb96c09f3 296
ocomeni 115:8054dbadfaa0 297 #define STARTUP_DEBUG_ENABLE
ocomeni 115:8054dbadfaa0 298 //#define AUTO_START_BLE_MANAGER
ocomeni 115:8054dbadfaa0 299 //#define AUTO_START_WIFI_MANAGER
ocomeni 114:b11bb96c09f3 300 #define PAUSE_SECONDS 0
ocomeni 114:b11bb96c09f3 301 #define PAUSE_SECONDS_BLE 0
ocomeni 114:b11bb96c09f3 302 int main() {
ocomeni 114:b11bb96c09f3 303 device = new RawSerial(USBTX, USBRX, 2*DEFAULT_BAUD_RATE);
ocomeni 114:b11bb96c09f3 304 uint8_t debug_level = (LOG | ERR | TXT | DBG);
ocomeni 114:b11bb96c09f3 305 initialise_debug(debug_level);
ocomeni 114:b11bb96c09f3 306 #ifdef MBED_MAJOR_VERSION
ocomeni 114:b11bb96c09f3 307 dbg_printf(LOG, "Mbed OS version %d.%d.%d\n\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
ocomeni 114:b11bb96c09f3 308 #endif
ocomeni 114:b11bb96c09f3 309
ocomeni 114:b11bb96c09f3 310 reset_counter++;
ocomeni 114:b11bb96c09f3 311 dbg_printf(LOG, "\r\n ++++++ PROGRAM STARTING -- reset count = %d ++++++ \r\n", reset_counter);
ocomeni 114:b11bb96c09f3 312 setupDefaultWiFiConfig();
ocomeni 114:b11bb96c09f3 313 setupDefaultBleConfig();
ocomeni 115:8054dbadfaa0 314 #ifdef AUTO_START_BLE_MANAGER
ocomeni 114:b11bb96c09f3 315 //btle_thread.start(callback(peripheral, &SMDevicePeripheral::run));
ocomeni 114:b11bb96c09f3 316 start_BLE();
ocomeni 114:b11bb96c09f3 317 printWaitAbortKeyPress(120, "Wait after BLE dispatch\r\n");
ocomeni 115:8054dbadfaa0 318 #endif
ocomeni 115:8054dbadfaa0 319 //int start = Kernel::get_ms_count();
ocomeni 115:8054dbadfaa0 320 #ifdef AUTO_START_WIFI_MANAGER
ocomeni 114:b11bb96c09f3 321 start_WiFi();
ocomeni 114:b11bb96c09f3 322 printWaitAbortKeyPress(120, "Wait after WiFi instantiation\r\n");
ocomeni 115:8054dbadfaa0 323 #endif
ocomeni 112:a0999ea4ece0 324 // dispatch atcmd event queue on event thread
ocomeni 109:c274780ff609 325 atcmd_evt_thread.start(callback(&eventQueue_atcmd, &EventQueue::dispatch_forever));
ocomeni 103:7b566b522427 326 dbg_printf(LOG, "\r\n++++++ Starting ATCmdmanager ++++++ \r\n");
ocomeni 79:a2187bbfa407 327 ATCmdManager *aTCmdManager = new ATCmdManager(USBTX, USBRX, peripheral,
ocomeni 109:c274780ff609 328 eventQueue_atcmd, wiFiManager,
ocomeni 80:e8f0e92e3ac9 329 &aT2WiFimPool, &aT2WiFiCmdQueue,
ocomeni 80:e8f0e92e3ac9 330 &wiFi2ATmPool, &wiFi2ATCmdQueue,
ocomeni 80:e8f0e92e3ac9 331 &aT2WiFiDatamPool, &aT2WiFiDataQueue,
ocomeni 80:e8f0e92e3ac9 332 &wiFi2ATDatamPool, &wiFi2ATDataQueue,
ocomeni 82:10072c1794d3 333 false);
ocomeni 81:637a87eb8170 334 atcmd_thread.start(callback(aTCmdManager, &ATCmdManager::runMain));
ocomeni 103:7b566b522427 335 dbg_printf(LOG, "\r\n after starting atcmd thread \r\n");
ocomeni 88:7ffa053be662 336 print_memory_info();
ocomeni 115:8054dbadfaa0 337 #ifdef STARTUP_DEBUG_ENABLE
ocomeni 115:8054dbadfaa0 338 initialise_debug(NONE);
ocomeni 115:8054dbadfaa0 339 #endif
ocomeni 108:3c8fb2c6e7bf 340 while(1)
ocomeni 108:3c8fb2c6e7bf 341 {
ocomeni 114:b11bb96c09f3 342 switch(mainLoop)
ocomeni 114:b11bb96c09f3 343 {
ocomeni 114:b11bb96c09f3 344 case MAIN_IDLE:
ocomeni 114:b11bb96c09f3 345 break;
ocomeni 114:b11bb96c09f3 346 case START_BLE:
ocomeni 114:b11bb96c09f3 347 start_BLE();
ocomeni 114:b11bb96c09f3 348 mainLoop = MAIN_IDLE;
ocomeni 114:b11bb96c09f3 349 break;
ocomeni 114:b11bb96c09f3 350 case START_WIFI:
ocomeni 114:b11bb96c09f3 351 start_WiFi();
ocomeni 114:b11bb96c09f3 352 mainLoop = MAIN_IDLE;
ocomeni 114:b11bb96c09f3 353 break;
ocomeni 114:b11bb96c09f3 354 case STOP_BLE:
ocomeni 114:b11bb96c09f3 355 stop_BLE();
ocomeni 114:b11bb96c09f3 356 mainLoop = MAIN_IDLE;
ocomeni 114:b11bb96c09f3 357 break;
ocomeni 114:b11bb96c09f3 358 case STOP_WIFI:
ocomeni 114:b11bb96c09f3 359 stop_WiFi();
ocomeni 114:b11bb96c09f3 360 mainLoop = MAIN_IDLE;
ocomeni 114:b11bb96c09f3 361 break;
ocomeni 114:b11bb96c09f3 362 default:
ocomeni 114:b11bb96c09f3 363 mainLoop = MAIN_IDLE;
ocomeni 114:b11bb96c09f3 364 break;
ocomeni 114:b11bb96c09f3 365 }
ocomeni 108:3c8fb2c6e7bf 366 wait(0.1);
ocomeni 108:3c8fb2c6e7bf 367 }
ocomeni 73:6f5021cbe752 368 }
ocomeni 73:6f5021cbe752 369
ocomeni 73:6f5021cbe752 370 #endif