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

Dependencies:   mbed-http

Branch:
PassingRegression
Revision:
121:ac4f59839e4f
Parent:
120:779b74689747
Child:
124:eae4512b131b
--- a/source/main-https.cpp	Mon May 27 17:00:43 2019 +0000
+++ b/source/main-https.cpp	Sat Jun 01 15:29:03 2019 +0000
@@ -220,7 +220,10 @@
     else
         dbg_printf(LOG, "(expected %d!).\n", expected_rc);
 }
-
+void setupDefaultStartupConfig()
+{
+    app_config.startup_config.ble_enable = true;
+}
 
 void setupDefaultCloudConfig()
 {
@@ -247,24 +250,34 @@
     rc = nvstore.reset();
     dbg_printf(LOG, "Reset NVStore. ");
     print_return_code(rc, NVSTORE_SUCCESS);
-
 }
 
-void saveConfiguration(uint32_t configKey)
+bool deleteConfiguration(nvstore_key_t configKey)
 {
     int rc;
-    rc = nvstore.set(configKey, sizeof(app_config), &app_config);
+    // Clear NVStore data. Should only be done once at factory configuration
+    rc = nvstore.remove(configKey);
+    dbg_printf(LOG, "Deleted config key %d from NVStore. ", (int)configKey);
+    print_return_code(rc, NVSTORE_SUCCESS);
+    return (rc == NVSTORE_SUCCESS);
+}
+
+void saveConfiguration(nvstore_key_t configKey)
+{
+    int rc;
+    rc = nvstore.set((uint16_t)configKey, sizeof(app_config), &app_config);
     print_return_code(rc, NVSTORE_SUCCESS);
 }
 
-void loadConfiguration(uint32_t configKey)
+bool loadConfiguration(nvstore_key_t configKey)
 {
     int rc;
     // Get the value of this key (should be 3000)
     uint16_t actual_len_bytes;
-    rc = nvstore.get(configKey, sizeof(app_config), &app_config, actual_len_bytes);
+    rc = nvstore.get((uint16_t)configKey, sizeof(app_config), &app_config, actual_len_bytes);
     print_app_config();
     print_return_code(rc, NVSTORE_SUCCESS);
+    return (rc == NVSTORE_SUCCESS && (sizeof(app_config) == actual_len_bytes));
 }
 
 static int reset_counter = 0;
@@ -398,7 +411,18 @@
 #define PAUSE_SECONDS_BLE 0
 int main() {
 #ifndef USE_DEFAULT_CONFIGURATION
-    loadConfiguration(APP_CONFIG_0);
+    if(loadConfiguration(APP_CONFIG_0) == false)
+    {
+        setupDefaultStartupConfig();
+        setupDefaultUartConfig();
+        setupDefaultWiFiConfig();
+        setupDefaultBleConfig();
+        setupDefaultCloudConfig();
+    }
+    if(app_config.startup_config.ble_enable)
+    {
+        trigger_start_BLE();
+    }
 #else
     setupDefaultUartConfig();
     setupDefaultWiFiConfig();
@@ -457,7 +481,7 @@
                                                 &wiFi2ATDatamPool, &wiFi2ATDataQueue,
                                                 &aT2BleDatamPool, &aT2BleDataQueue,
                                                 &ble2ATDatamPool, &ble2ATDataQueue,
-                                                false);
+                                                &app_config.startup_config, false);
     atcmd_thread.start(callback(aTCmdManager, &ATCmdManager::runMain));
     dbg_printf(LOG, "\r\n after starting atcmd thread \r\n");
     print_memory_info();