Program to update the D7A modem's firmware.

Dependencies:   modem_ref_helper DebouncedInterrupt

Revision:
33:9cd782e2b423
Parent:
32:e3ee65b5b835
--- a/cup.cpp	Tue Aug 20 13:51:30 2019 +0000
+++ b/cup.cpp	Wed Oct 23 14:44:56 2019 +0000
@@ -87,11 +87,16 @@
     Timer tim;
     int32_t rem;
     float now = 0;
-    float before = 0;
+    
+    float speed_before = 0;
     float speed = 0;
     int speed_data = 0;
+    
+    float time_before = 0;
     float time_left = 0;
     
+    float print_before = 0;
+    
     uint8_t id = modem_get_id(my_cup_callback);
     
     if (bootloader)
@@ -124,19 +129,31 @@
         rem -= chunk;
         fof += chunk;
         
-        percent = (100*fof)/cup->data_size;
         now = tim.read();
         speed_data += chunk;
         
-        if (now - before > 1.0 || before == 0)
+        // Update speed
+        if (now - speed_before > 1.0 || speed_before == 0)
         {
-            speed = (speed_data/(now - before))/1024.0;
-            before = now;
+            speed = (speed_data/(now - speed_before))/1024.0;
+            speed_before = now;
             speed_data = 0;
+        }
+        
+        // Update time left
+        if (now - time_before > 0.2 || time_before == 0 || rem == 0)
+        {
+            time_before = now;
             time_left = (rem / speed) / 1024.0;
         }
         
-        PRINT("\rUPLOADING CUP FILE %d/%d (%3d%%) %.2f kB/s %.0fs    ", fof, cup->data_size, percent, speed, time_left);
+        // Print
+        if (now - print_before > 0.1 || print_before == 0 || rem == 0)
+        {
+            percent = (100*fof)/cup->data_size;
+            print_before = now;
+            PRINT("\rUPLOADING CUP FILE %d/%d (%3d%%) %.2f kB/s %.0fs    ", fof, cup->data_size, percent, speed, time_left);
+        }
     }
     
     PRINT("\n");