Complete sensor demo.

Dependencies:   modem_ref_helper CRC X_NUCLEO_IKS01A1 DebouncedInterrupt

Committer:
Jeej
Date:
Thu Sep 21 11:23:13 2017 +0000
Revision:
6:c17f7cbdeb1a
Parent:
1:4d3968b2941b
Child:
11:9683d014dece
Updated for v4.10.x

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 1:4d3968b2941b 1 #include "modem_ref_helper.h"
Jeej 0:87c57e1b1e1c 2
Jeej 0:87c57e1b1e1c 3 extern Queue<void, 8> g_file_modified;
Jeej 0:87c57e1b1e1c 4
Jeej 0:87c57e1b1e1c 5 // ============================================================}}}
Jeej 0:87c57e1b1e1c 6
Jeej 0:87c57e1b1e1c 7 // Callbacks to MODEM's ALP requests
Jeej 0:87c57e1b1e1c 8 // ============================================================{{{
Jeej 0:87c57e1b1e1c 9 void my_read(u8 fid, u32 offset, u32 length, int id)
Jeej 0:87c57e1b1e1c 10 {
Jeej 0:87c57e1b1e1c 11 u8 data[256]; // XXX VLA
Jeej 0:87c57e1b1e1c 12
Jeej 0:87c57e1b1e1c 13 if (ram_fs_read(fid, offset, length, data))
Jeej 0:87c57e1b1e1c 14 {
Jeej 0:87c57e1b1e1c 15 // Error
Jeej 0:87c57e1b1e1c 16 length = 0;
Jeej 0:87c57e1b1e1c 17 }
Jeej 0:87c57e1b1e1c 18
Jeej 0:87c57e1b1e1c 19 modem_respond_read(fid, data, offset, length, id);
Jeej 0:87c57e1b1e1c 20 }
Jeej 0:87c57e1b1e1c 21
Jeej 0:87c57e1b1e1c 22 void my_write(u8 fid, void *data, u32 offset, u32 length, int id)
Jeej 0:87c57e1b1e1c 23 {
Jeej 0:87c57e1b1e1c 24 alp_errors_t err;
Jeej 0:87c57e1b1e1c 25
Jeej 0:87c57e1b1e1c 26 if (ram_fs_write(fid, offset, length, (uint8_t*)data))
Jeej 0:87c57e1b1e1c 27 {
Jeej 0:87c57e1b1e1c 28 err = ALP_ERR_FILE_NOT_FOUND;
Jeej 0:87c57e1b1e1c 29 }
Jeej 0:87c57e1b1e1c 30 else
Jeej 0:87c57e1b1e1c 31 {
Jeej 0:87c57e1b1e1c 32 err = ALP_ERR_NONE;
Jeej 0:87c57e1b1e1c 33 g_file_modified.put((void*)fid);
Jeej 0:87c57e1b1e1c 34 }
Jeej 0:87c57e1b1e1c 35
Jeej 0:87c57e1b1e1c 36 modem_respond(0, err, id);
Jeej 0:87c57e1b1e1c 37 }
Jeej 0:87c57e1b1e1c 38
Jeej 0:87c57e1b1e1c 39 void my_read_fprop(u8 fid, int id)
Jeej 0:87c57e1b1e1c 40 {
Jeej 0:87c57e1b1e1c 41 u8* hdr = (u8*)ram_fs_get_header(fid);
Jeej 0:87c57e1b1e1c 42
Jeej 0:87c57e1b1e1c 43 modem_respond_fprop(fid, hdr, id);
Jeej 0:87c57e1b1e1c 44 }
Jeej 0:87c57e1b1e1c 45
Jeej 0:87c57e1b1e1c 46 void my_flush(u8 fid, int id)
Jeej 0:87c57e1b1e1c 47 {
Jeej 0:87c57e1b1e1c 48 // No flush in this file system
Jeej 0:87c57e1b1e1c 49 modem_respond(0, ALP_ERR_NONE, id);
Jeej 0:87c57e1b1e1c 50 }
Jeej 0:87c57e1b1e1c 51
Jeej 0:87c57e1b1e1c 52 void my_delete(u8 fid, int id)
Jeej 0:87c57e1b1e1c 53 {
Jeej 0:87c57e1b1e1c 54 alp_errors_t err;
Jeej 0:87c57e1b1e1c 55
Jeej 0:87c57e1b1e1c 56 err = (ram_fs_delete(fid))? ALP_ERR_FILE_NOT_FOUND : ALP_ERR_NONE;
Jeej 0:87c57e1b1e1c 57
Jeej 0:87c57e1b1e1c 58 modem_respond(0, err, id);
Jeej 0:87c57e1b1e1c 59 }
Jeej 0:87c57e1b1e1c 60
Jeej 1:4d3968b2941b 61 void my_udata(u8 fid,void *data,u32 offset,u32 length, u8 i_type, u8 i_length, u8* i_data)
Jeej 1:4d3968b2941b 62 {
Jeej 1:4d3968b2941b 63 (void)data;
Jeej 1:4d3968b2941b 64 (void)i_length;
Jeej 1:4d3968b2941b 65 PRINT("Got UNS File[%3d]@%d %d Bytes\n",fid,offset,length);
Jeej 1:4d3968b2941b 66 if (i_type == ALP_ITF_TYPE_D7A)
Jeej 1:4d3968b2941b 67 {
Jeej 1:4d3968b2941b 68 static union {
Jeej 1:4d3968b2941b 69 u8 b[8];
Jeej 1:4d3968b2941b 70 u32 w[2];
Jeej 1:4d3968b2941b 71 } uid;
Jeej 1:4d3968b2941b 72 d7a_sp_res_t* istat = (d7a_sp_res_t*) i_data;
Jeej 1:4d3968b2941b 73 memcpy(uid.b,istat->addressee.id,8);
Jeej 1:4d3968b2941b 74 PRINT("From UID: %08X%08X (rxlev:%d lb:%d)\n",
Jeej 1:4d3968b2941b 75 HAL_U32_BYTE_SWAP(uid.w[0]), HAL_U32_BYTE_SWAP(uid.w[1]),
Jeej 1:4d3968b2941b 76 istat->rxlev, istat->lb);
Jeej 1:4d3968b2941b 77 }
Jeej 1:4d3968b2941b 78 }
Jeej 1:4d3968b2941b 79
Jeej 0:87c57e1b1e1c 80 void my_lqual(u8 ifid, int per)
Jeej 0:87c57e1b1e1c 81 {
Jeej 0:87c57e1b1e1c 82 PRINT("Interface File [%3d] LQUAL : %d%% PER\r\n", ifid, per);
Jeej 0:87c57e1b1e1c 83 }
Jeej 0:87c57e1b1e1c 84
Jeej 0:87c57e1b1e1c 85 void my_ldown(u8 ifid)
Jeej 0:87c57e1b1e1c 86 {
Jeej 0:87c57e1b1e1c 87 PRINT("Interface File [%3d] LDOWN\r\n", ifid);
Jeej 0:87c57e1b1e1c 88 }
Jeej 0:87c57e1b1e1c 89
Jeej 0:87c57e1b1e1c 90 void my_reset(void)
Jeej 0:87c57e1b1e1c 91 {
Jeej 6:c17f7cbdeb1a 92 PRINT("Restarting application...\r\n");
Jeej 6:c17f7cbdeb1a 93 FLUSH();
Jeej 0:87c57e1b1e1c 94 NVIC_SystemReset();
Jeej 0:87c57e1b1e1c 95 }
Jeej 0:87c57e1b1e1c 96
Jeej 0:87c57e1b1e1c 97 void my_boot(u8 cause, u16 number)
Jeej 0:87c57e1b1e1c 98 {
Jeej 6:c17f7cbdeb1a 99 PRINT("Modem BOOT[%c] #%d\r\n", cause, number);
Jeej 0:87c57e1b1e1c 100
Jeej 0:87c57e1b1e1c 101 // Modem re-booted, restart APP
Jeej 0:87c57e1b1e1c 102 my_reset();
Jeej 0:87c57e1b1e1c 103 }