LoRaWAN demo.
Dependencies: modem_ref_helper DebouncedInterrupt
d7a_callbacks.cpp
- Committer:
- Jeej
- Date:
- 2021-02-19
- Revision:
- 21:f0aecd41db08
- Parent:
- 20:49a8ecd1dda3
File content as of revision 21:f0aecd41db08:
#include "modem_d7a.h" #include "ram_fs.h" // ============================================================}}} // Callbacks to MODEM's ALP requests // ============================================================{{{ void my_read(u8 action, uint8_t fid, uint32_t offset, uint32_t length, int id) { uint8_t data[256]; #if 0 //if (!ram_fs_read(fid, (uint8_t*)data, offset, length)) { modem_ref_respond_read(fid, data, offset, length, id); } else #endif { modem_ref_respond(action, ALP_ERR_FILE_NOT_FOUND, id); } } void my_write(u8 action, uint8_t fid, void *data, uint32_t offset, uint32_t length, int id) { if (!ram_fs_write(fid, (uint8_t*)data, offset, length)) { extern Queue<uint8_t, 8> g_file_modified; modem_ref_respond(action, ALP_ERR_NONE, id); g_file_modified.put((uint8_t*)(uint32_t)fid); } else { modem_ref_respond(action, ALP_ERR_FILE_NOT_FOUND, id); } } void my_read_fprop(u8 action, uint8_t fid, int id) { uint8_t* hdr = (uint8_t*)ram_fs_get_header(fid); if (hdr != NULL) { modem_ref_respond_fprop(fid, (alp_file_header_t*)hdr, id); } else { modem_ref_respond(action, ALP_ERR_FILE_NOT_FOUND, id); } } void my_flush(u8 action, uint8_t fid, int id) { // No flush in this file system modem_ref_respond(action, ALP_ERR_NONE, id); } void my_delete(u8 action, uint8_t fid, int id) { modem_ref_respond(action, (ram_fs_delete(fid))? ALP_ERR_FILE_NOT_FOUND : ALP_ERR_NONE, id); } void my_udata(alp_payload_t* alp) { alp_payload_print(alp); } void my_lqual(uint8_t ifid, int per) { PRINT("Interface File [%3d] LQUAL : %d%% PER\r\n", ifid, per); } void my_ldown(uint8_t ifid) { PRINT("Interface File [%3d] LDOWN\r\n", ifid); } void my_reset(void) { PRINT("Restarting application...\r\n"); FLUSH(); NVIC_SystemReset(); } void my_boot(uint8_t cause, u16 number) { PRINT("Modem BOOT[%c] #%d\r\n", cause, number); // Modem re-booted, restart APP my_reset(); } void my_busy(uint8_t busy) { if (busy) { PRINT("Modem Busy\r\n"); /* Stop report, do not use modem */ /* Wait for modem reboot or modem not busy */ } else { PRINT("Modem not Busy\r\n"); /* Resume reports */ } } void my_itf_busy(uint8_t ifid, uint32_t seconds) { extern Queue<uint32_t, 8> g_urc; //PRINT("ITF[%d] Busy for %d seconds.\r\n", ifid, seconds); g_urc.put((uint32_t*)seconds); }