Complete sensor demo.

Dependencies:   modem_ref_helper CRC X_NUCLEO_IKS01A1 DebouncedInterrupt

Committer:
Jeej
Date:
Mon May 15 16:00:25 2017 +0000
Revision:
0:87c57e1b1e1c
Child:
1:4d3968b2941b
First working version of V3 demo.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 0:87c57e1b1e1c 1 #include "mbed.h"
Jeej 0:87c57e1b1e1c 2 #include "rtos.h"
Jeej 0:87c57e1b1e1c 3 #include "WizziDebug.h"
Jeej 0:87c57e1b1e1c 4
Jeej 0:87c57e1b1e1c 5 #include "alp_spec.h"
Jeej 0:87c57e1b1e1c 6 #include "alp_helpers.h"
Jeej 0:87c57e1b1e1c 7 #include "modem_ref.h"
Jeej 0:87c57e1b1e1c 8
Jeej 0:87c57e1b1e1c 9 #include "ram_fs.h"
Jeej 0:87c57e1b1e1c 10 #include "hal_types.h"
Jeej 0:87c57e1b1e1c 11
Jeej 0:87c57e1b1e1c 12 extern Queue<void, 8> g_file_modified;
Jeej 0:87c57e1b1e1c 13
Jeej 0:87c57e1b1e1c 14 // ============================================================}}}
Jeej 0:87c57e1b1e1c 15
Jeej 0:87c57e1b1e1c 16 // Callbacks to MODEM's ALP requests
Jeej 0:87c57e1b1e1c 17 // ============================================================{{{
Jeej 0:87c57e1b1e1c 18 void my_read(u8 fid, u32 offset, u32 length, int id)
Jeej 0:87c57e1b1e1c 19 {
Jeej 0:87c57e1b1e1c 20 u8 data[256]; // XXX VLA
Jeej 0:87c57e1b1e1c 21
Jeej 0:87c57e1b1e1c 22 if (ram_fs_read(fid, offset, length, data))
Jeej 0:87c57e1b1e1c 23 {
Jeej 0:87c57e1b1e1c 24 // Error
Jeej 0:87c57e1b1e1c 25 length = 0;
Jeej 0:87c57e1b1e1c 26 }
Jeej 0:87c57e1b1e1c 27
Jeej 0:87c57e1b1e1c 28 modem_respond_read(fid, data, offset, length, id);
Jeej 0:87c57e1b1e1c 29 }
Jeej 0:87c57e1b1e1c 30
Jeej 0:87c57e1b1e1c 31 void my_write(u8 fid, void *data, u32 offset, u32 length, int id)
Jeej 0:87c57e1b1e1c 32 {
Jeej 0:87c57e1b1e1c 33 alp_errors_t err;
Jeej 0:87c57e1b1e1c 34
Jeej 0:87c57e1b1e1c 35 if (ram_fs_write(fid, offset, length, (uint8_t*)data))
Jeej 0:87c57e1b1e1c 36 {
Jeej 0:87c57e1b1e1c 37 err = ALP_ERR_FILE_NOT_FOUND;
Jeej 0:87c57e1b1e1c 38 }
Jeej 0:87c57e1b1e1c 39 else
Jeej 0:87c57e1b1e1c 40 {
Jeej 0:87c57e1b1e1c 41 err = ALP_ERR_NONE;
Jeej 0:87c57e1b1e1c 42 g_file_modified.put((void*)fid);
Jeej 0:87c57e1b1e1c 43 }
Jeej 0:87c57e1b1e1c 44
Jeej 0:87c57e1b1e1c 45 modem_respond(0, err, id);
Jeej 0:87c57e1b1e1c 46 }
Jeej 0:87c57e1b1e1c 47
Jeej 0:87c57e1b1e1c 48 void my_read_fprop(u8 fid, int id)
Jeej 0:87c57e1b1e1c 49 {
Jeej 0:87c57e1b1e1c 50 u8* hdr = (u8*)ram_fs_get_header(fid);
Jeej 0:87c57e1b1e1c 51
Jeej 0:87c57e1b1e1c 52 modem_respond_fprop(fid, hdr, id);
Jeej 0:87c57e1b1e1c 53 }
Jeej 0:87c57e1b1e1c 54
Jeej 0:87c57e1b1e1c 55 void my_flush(u8 fid, int id)
Jeej 0:87c57e1b1e1c 56 {
Jeej 0:87c57e1b1e1c 57 // No flush in this file system
Jeej 0:87c57e1b1e1c 58 modem_respond(0, ALP_ERR_NONE, id);
Jeej 0:87c57e1b1e1c 59 }
Jeej 0:87c57e1b1e1c 60
Jeej 0:87c57e1b1e1c 61 void my_delete(u8 fid, int id)
Jeej 0:87c57e1b1e1c 62 {
Jeej 0:87c57e1b1e1c 63 alp_errors_t err;
Jeej 0:87c57e1b1e1c 64
Jeej 0:87c57e1b1e1c 65 err = (ram_fs_delete(fid))? ALP_ERR_FILE_NOT_FOUND : ALP_ERR_NONE;
Jeej 0:87c57e1b1e1c 66
Jeej 0:87c57e1b1e1c 67 modem_respond(0, err, id);
Jeej 0:87c57e1b1e1c 68 }
Jeej 0:87c57e1b1e1c 69
Jeej 0:87c57e1b1e1c 70 void my_lqual(u8 ifid, int per)
Jeej 0:87c57e1b1e1c 71 {
Jeej 0:87c57e1b1e1c 72 PRINT("Interface File [%3d] LQUAL : %d%% PER\r\n", ifid, per);
Jeej 0:87c57e1b1e1c 73 }
Jeej 0:87c57e1b1e1c 74
Jeej 0:87c57e1b1e1c 75 void my_ldown(u8 ifid)
Jeej 0:87c57e1b1e1c 76 {
Jeej 0:87c57e1b1e1c 77 PRINT("Interface File [%3d] LDOWN\r\n", ifid);
Jeej 0:87c57e1b1e1c 78 }
Jeej 0:87c57e1b1e1c 79
Jeej 0:87c57e1b1e1c 80 void my_reset(void)
Jeej 0:87c57e1b1e1c 81 {
Jeej 0:87c57e1b1e1c 82 NVIC_SystemReset();
Jeej 0:87c57e1b1e1c 83 }
Jeej 0:87c57e1b1e1c 84
Jeej 0:87c57e1b1e1c 85 void my_boot(u8 cause, u16 number)
Jeej 0:87c57e1b1e1c 86 {
Jeej 0:87c57e1b1e1c 87 PRINT("Modem BOOT[%c] #%d\r\nRe-Init\r\n", cause, number);
Jeej 0:87c57e1b1e1c 88
Jeej 0:87c57e1b1e1c 89 // Modem re-booted, restart APP
Jeej 0:87c57e1b1e1c 90 my_reset();
Jeej 0:87c57e1b1e1c 91 }