Complete sensor demo.
Dependencies: modem_ref_helper CRC X_NUCLEO_IKS01A1 DebouncedInterrupt
Diff: modem_callbacks.cpp
- Revision:
- 15:1271f3566b98
- Parent:
- 11:9683d014dece
- Child:
- 18:51b15d8bf2fe
--- a/modem_callbacks.cpp Thu Oct 11 15:15:30 2018 +0000 +++ b/modem_callbacks.cpp Fri Aug 02 16:39:28 2019 +0000 @@ -1,6 +1,6 @@ #include "modem_ref_helper.h" -extern Queue<void, 8> g_file_modified; +#define SERIAL_MAX_PACKET_SIZE (255) // ============================================================}}} @@ -8,15 +8,18 @@ // ============================================================{{{ void my_read(u8 fid, u32 offset, u32 length, int id) { - u8 data[256]; // XXX VLA + u8 data[SERIAL_MAX_PACKET_SIZE]; + ASSERT((ALP_ACTION_RSP_TAG_SIZE + ALP_ACTION_RSP_F_DATA_SIZE(offset, length)) <= SERIAL_MAX_PACKET_SIZE, + "Read response too big for serial protocol (%d/%dmax)", length, ALP_ACTION_RSP_TAG_SIZE + ALP_ACTION_RSP_F_DATA_SIZE(offset,SERIAL_MAX_PACKET_SIZE)); if (ram_fs_read(fid, offset, length, data)) { - // Error - length = 0; + modem_respond(ALP_ERR_FILE_NOT_FOUND, id); } - - modem_respond_read(fid, data, offset, length, id); + else + { + modem_respond_read(fid, data, offset, length, id); + } } void my_write(u8 fid, void *data, u32 offset, u32 length, int id) @@ -29,11 +32,13 @@ } else { + extern Queue<void, 8> g_file_modified; + err = ALP_ERR_NONE; g_file_modified.put((void*)fid); } - modem_respond(0, err, id); + modem_respond(err, id); } void my_read_fprop(u8 fid, int id) @@ -46,7 +51,7 @@ void my_flush(u8 fid, int id) { // No flush in this file system - modem_respond(0, ALP_ERR_NONE, id); + modem_respond(ALP_ERR_NONE, id); } void my_delete(u8 fid, int id) @@ -55,7 +60,7 @@ err = (ram_fs_delete(fid))? ALP_ERR_FILE_NOT_FOUND : ALP_ERR_NONE; - modem_respond(0, err, id); + modem_respond(err, id); } void my_udata(void *data, u32 length)