LoRaWAN demo.

Dependencies:   modem_ref_helper DebouncedInterrupt

Committer:
wizziguy
Date:
Tue Mar 13 17:13:49 2018 +0000
Revision:
5:2d5d3124703a
Parent:
0:06ba20deb797
Child:
7:026f8c8bcdab
dded switch between WL TTN and own TTN

Who changed what in which revision?

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