Complete sensor demo.

Dependencies:   modem_ref_helper CRC X_NUCLEO_IKS01A1 DebouncedInterrupt

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)