Program to update the D7A modem's firmware.

Dependencies:   modem_ref_helper DebouncedInterrupt

Revision:
26:7fc24677a950
Parent:
25:cf50a4098334
Child:
27:25be84b17eec
--- a/main.cpp	Fri Oct 20 13:35:45 2017 +0000
+++ b/main.cpp	Mon Jan 29 18:08:31 2018 +0000
@@ -122,7 +122,11 @@
     int32_t cup_slack = 0;
     
     // Start & initialize
+#ifdef DEBUG_LED
     DBG_OPEN(DEBUG_LED);
+#else
+    DBG_OPEN(NC);
+#endif
     PRINT("\r\n"
           "-----------------------------------------\r\n"
           "------------- D7A WM Updater ------------\r\n"
@@ -159,19 +163,21 @@
         {
             // Update bootloader
             PRINT("\r\n"
-                  "/!\\ This modem has a 4.7.x bootloader firmware. /!\\\r\n"
+                  "/!\\ This modem has a bootloader firmware.       /!\\\r\n"
                   "/!\\ Step 2/2: Upgrading to full modem firmware. /!\\\r\n"
                   );
             
+            /*
             cup_slack = check_slack(rev.cup_max_size, cup->data_size);
             
             if (cup_slack < 0)
             {
-                PRINT("/!\\ Not enough space for bootloader /!\\\r\n");
+                PRINT("/!\\ Not enough space for firmware /!\\\r\n");
                 break;
             }
-                        
-            cup_start_update(cup_slack);
+            */
+            
+            cup_start_update(0);
         }
         else
         {
@@ -185,13 +191,6 @@
                 break;
             }
             
-            /*
-            if (check_parameter("Firmware id...           ", rev.fw_version.id&0x7F, cup->fw_id))
-            {
-                print_check_rev();
-                break;
-            }*/
-            
             if (version_old != version_new)
             {
                 if (check_parameter("Firmware version major...", rev.fw_version.major, cup->target_fw_major))
@@ -200,24 +199,22 @@
                     break;
                 }
                 
-                if (check_parameter("Firmware version minor...", rev.fw_version.minor, cup->target_fw_minor))
+                PRINT("Checking Firmware version minor... ");
+                if (rev.fw_version.minor < cup->target_fw_minor)
                 {
+                    PRINT("Failed. (0x%08X != 0x%08X)\r\n", rev.fw_version.minor, cup->target_fw_minor);
                     print_check_rev();
                     break;
                 }
+                else
+                {
+                    PRINT("OK. (0x%08X)\r\n", rev.fw_version.minor);
+                }
             }
             else
             {
                 PRINT("\r\nYour modem is up to date! (v%d.%d.%d)\r\n",
                         rev.fw_version.major, rev.fw_version.minor, rev.fw_version.patch);
-                        
-                PRINT("\r\n"
-                      "This new version enables the LoRaWAN stack on the modem.\n"
-                      "If you want to use LoRaWAN with the Dash7Board, please contact us at support@wizzilab.com\n"
-                      "We will enable your device to work with it.\n"
-                      "A demo application is available here to get started with the LoRaWAN stack:\n"
-                      "https://os.mbed.com/teams/WizziLab/code/D7A_1x_demo_LoRaWAN/\n"
-                      );
                 break;
             }
             
@@ -226,8 +223,8 @@
             if (cup_slack < 0)
             {
                 PRINT("\r\n"
-                      "/!\\ Not enough space for full modem firmware binary /!\\\r\n"
-                      "/!\\ Checking for bootloader firmware                /!\\\r\n"
+                      "/!\\ Not enough space for full modem firmware binary. /!\\\r\n"
+                      "/!\\ Checking for bootloader firmware.                /!\\\r\n"
                       "\r\n"
                 );
                                 
@@ -282,12 +279,15 @@
             }
             else
             {
+#ifdef DEBUG_BUTTON
                 PRINT("\r\nReseting firmware: v%d.%d.%d --> v%d.%d.%d\r\n", 
                         rev.fw_version.major, rev.fw_version.minor, rev.fw_version.patch,
                         cup->fw_major, cup->fw_minor, cup->fw_patch);
-#ifdef DEBUG_BUTTON
                 PRINT("PRESS USER BUTTON TO START UPGRADE...\r\n");
                 button_user.wait();
+#else
+                // No button to stop code
+                break;
 #endif
             }