Broadcast read demo.
Dependencies: modem_ref_helper DebouncedInterrupt
Diff: main.cpp
- Revision:
- 2:4629eacf9851
- Parent:
- 1:5ddd7f4db10d
- Child:
- 3:a240b300fae9
--- a/main.cpp Thu May 11 16:49:40 2017 +0000 +++ b/main.cpp Mon May 15 16:02:19 2017 +0000 @@ -16,12 +16,13 @@ #include "modem_ref.h" #include "kal_fs.h" #include "d7a_1x.h" +#include "d7a_1x_fs.h" #include "alp.h" WizziCom* g_modem_com; Semaphore button_user(0); -Semaphore modem_ready(0); +Semaphore modem_ready[MAX_USER_NB]; Queue<void, 8> modem_resp; enum { @@ -146,6 +147,9 @@ uint8_t scan_xcl[] = { 0x0F, 0x2F }; + memset(&istat, 0, sizeof(d7a_sp_res_t)); + memset(&fw_ver, 0, sizeof(fw_version_t)); + // Set custom retry policy //modem_write_file(WM_FID_ALP_CFG, &my_policy, MY_POLICY_IDX * sizeof(alp_retry_policy_t), sizeof(alp_retry_policy_t), g_main_id); //modem_ready.wait(); @@ -162,12 +166,12 @@ PRINT("Scanning XCL 0x%02X...\n", my_itf.cfg.addressee.xcl.byte); - modem_remote_read_file((uint8_t*)&my_itf, MY_D7_ITF_SIZE(&my_itf), (void*)&istat, 2, (void*)&fw_ver, 12, sizeof(fw_version_t), my_user_id); + modem_remote_read_file((uint8_t*)&my_itf, MY_D7_ITF_SIZE(&my_itf), (void*)&istat, D7A_FID_FIRMWARE_VERSION, (void*)&fw_ver, 12, sizeof(fw_version_t), my_user_id); do { evt = modem_resp.get(); - resp = (evt.status == osEventMessage)? (uint32_t)evt.value.p : NULL; + resp = (evt.status == osEventMessage)? (uint32_t)evt.value.p : MODEM_RESP_NO; if (MODEM_RESP_DONE == resp) { @@ -176,8 +180,12 @@ PRINT_DATA("UID:", "%02X", istat.addressee.id, 8, " "); PRINT("rxlev:%d lb:%d ", istat.rxlev, istat.lb); PRINT("v%d.%d.%d\n", fw_ver.major, fw_ver.minor, fw_ver.patch); + + // Reset variables + memset(&istat, 0, sizeof(d7a_sp_res_t)); + memset(&fw_ver, 0, sizeof(fw_version_t)); + } - } } while (MODEM_RESP_TERMINAL != resp); } @@ -223,7 +231,7 @@ if (terminal) { print_status(err); - modem_ready.release(); + modem_ready[id].release(); } else { @@ -251,7 +259,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); @@ -266,11 +274,11 @@ PRINT("Start Modem Process (id=%d)\n", g_main_id); Thread::wait(1000); - modem_read_file(0, uid.b, 0, 8, g_main_id); - modem_ready.wait(); + modem_read_file(D7A_FID_UID, uid.b, 0, 8, g_main_id); + modem_ready[g_main_id].wait(); - modem_read_file(2, &rev, 0, sizeof(revision_t), g_main_id); - modem_ready.wait(); + modem_read_file(D7A_FID_FIRMWARE_VERSION, &rev, 0, sizeof(revision_t), g_main_id); + modem_ready[g_main_id].wait(); PRINT("------------ D7A Modem infos ------------\r\n"); PRINT_DATA(" - UID: ", "%02X", uid.b, 8, "\r\n"); @@ -284,11 +292,11 @@ // 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); - modem_ready.wait(); + modem_ready[g_main_id].wait(); PRINT("Start D7A Stack\n"); modem_activate_itf(ALP_ITF_TYPE_D7A, 24, 0, ALP_D7A_ISTAT_RESP , true, g_main_id); - modem_ready.wait(); + modem_ready[g_main_id].wait(); #ifdef DEBUG_BUTTON DebouncedInterrupt user_interrupt(DEBUG_BUTTON); @@ -299,7 +307,7 @@ ASSERT(status == osOK, "Failed to start but thread (err: %d)\r\n", status); #endif -#ifdef DEBUG_LED +#if (DEBUG_LED != NC) DigitalOut my_led(DEBUG_LED); #endif @@ -308,7 +316,7 @@ while(true) { Thread::wait(500); -#ifdef DEBUG_LED +#if (DEBUG_LED != NC) my_led = !my_led; #endif }