Data reception demo.
Dependencies: modem_ref_helper CRC
Diff: main.cpp
- Revision:
- 2:6652be2d061f
- Parent:
- 1:55636c88cd5e
- Child:
- 3:e9ea4d325c01
diff -r 55636c88cd5e -r 6652be2d061f main.cpp --- 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 }