Data reception demo.

Dependencies:   modem_ref_helper CRC

Revision:
2:6652be2d061f
Parent:
1:55636c88cd5e
Child:
3:e9ea4d325c01
--- a/main.cpp	Fri May 12 14:03:27 2017 +0000
+++ b/main.cpp	Mon May 15 15:55:09 2017 +0000
@@ -17,18 +17,20 @@
 #include "modem_ref.h"
 #include "kal_fs.h"
 #include "d7a_1x.h"
+#include "d7a_1x_fs.h"
 #include "alp.h"
 
 #include "CriusOLED.h"
 
-#define RESTORE_TIME 30
+#define RESTORE_TIME    30
+#define KEEP_ALIVE      3600
 
 WizziCom* g_modem_com;
 Semaphore modem_ready(0);
 Queue<void, 8> g_file_modified;
 
 uint8_t g_main_id;
-uint32_t g_time = RESTORE_TIME + 1;
+uint32_t g_restore_time = RESTORE_TIME + 1;
 
 void display_logo(void)
 {
@@ -38,12 +40,32 @@
 
 void thread_reset_display()
 {
+    char str[SIZE_STRING_FILE];
+    uint32_t time;
+    Timer up_time;
+    
+    up_time.start();
+
     while (true)
     {
-        if (g_time++ == RESTORE_TIME)
+        if (g_restore_time++ == RESTORE_TIME)
         {
             display_logo();
         }
+        
+        time = (uint32_t)up_time.read();
+        
+        memset(str, 0, SIZE_STRING_FILE);
+        sprintf(str, "Up time: %02d:%02d:%02d", time/3600, (time/60)%60, time%60);
+        ram_fs_write(FID_STRING_FILE, 0, SIZE_STRING_FILE, (uint8_t*)str);
+        
+        if ((time % KEEP_ALIVE) == 0)
+        {
+            // Keep alive: Report uptime
+            modem_notify_file(FID_STRING_FILE, 0, strlen(str) + 1, g_main_id);
+            modem_ready.wait();
+        }
+        
         Thread::wait(1000);
     }
 }
@@ -71,7 +93,7 @@
                 clear_display();
                 sendStrXY((char*)str,2,0);
                 
-                g_time = 0;
+                g_restore_time = 0;
                 break;
             default:
             break;
@@ -227,7 +249,7 @@
         
     // Release reset
     DigitalIn reset_release(MODEM_PIN_RESET);
-    Thread::wait(1000);
+    Thread::wait(2000);
     
     // Open modem Com port
     g_modem_com = new WizziCom(MODEM_PIN_TX, MODEM_PIN_RX, MODEM_PIN_IRQ_OUT, MODEM_PIN_IRQ_IN);
@@ -243,10 +265,10 @@
     DPRINT("Start Modem Process (id=%d)\n", g_main_id);
     Thread::wait(1000);
     
-    modem_read_file(0, (uint8_t*)&uid.b[0], 0, 8, g_main_id);
+    modem_read_file(D7A_FID_UID, (uint8_t*)&uid.b[0], 0, 8, g_main_id);
     modem_ready.wait();
     
-    modem_read_file(2, (uint8_t*)&rev, 0, sizeof(revision_t), g_main_id);
+    modem_read_file(D7A_FID_FIRMWARE_VERSION, (uint8_t*)&rev, 0, sizeof(revision_t), g_main_id);
     modem_ready.wait();
     
     PRINT("------------ D7A Modem infos ------------\r\n");
@@ -267,6 +289,11 @@
     // Allow remote access.
     modem_update_file(FID_STRING_FILE, (alp_file_header_t*)&h_string_file, (uint8_t*)&f_string_file);
 
+    // Put modem to listen to this access class
+    d7a_xcl_t my_xcl = { .bf.s = 0, .bf.m = 2 };
+    modem_write_file(D7A_FID_DLL_CFG, &my_xcl, 0, sizeof(d7a_xcl_t), g_main_id);
+    modem_ready.wait();
+
     // Configure URC: LQUAL on report file notification every 10 reports
     PRINT("Setup URCs\n");
     modem_enable_urc(ALP_URC_TYPE_LQUAL, IFID_REPORT, 10, true, g_main_id);
@@ -277,7 +304,7 @@
     modem_ready.wait();
     
     PRINT("Notify Modem Version\n");
-    modem_notify_file(FID_MODEM_REV, 0, SIZE_HOST_REV, g_main_id);
+    modem_notify_file(D7A_FID_FIRMWARE_VERSION, 0, SIZE_HOST_REV, g_main_id);
     modem_ready.wait();
     
     PRINT("Notify FW Version\n");
@@ -302,7 +329,7 @@
     
     display_logo();
 
-#ifdef DEBUG_LED
+#if (DEBUG_LED != NC)
     DigitalOut my_led(DEBUG_LED);
 #endif
     
@@ -311,7 +338,7 @@
     while(true)
     {
         Thread::wait(500);
-#ifdef DEBUG_LED
+#if (DEBUG_LED != NC)
         my_led = !my_led;
 #endif
     }