Experiment of serial command protocol

Dependencies:   RingBuffer SerialInterfaceProtocol duinotech_16x2_LCD mbed

You can edit this area

Revision:
2:54932809c7b2
Parent:
0:2ba6a9f316b6
Child:
3:0c4aa3cec685
--- a/CommandPacket.cpp	Sat Jun 04 12:11:17 2016 +0000
+++ b/CommandPacket.cpp	Thu Jun 09 12:28:31 2016 +0000
@@ -43,6 +43,7 @@
 
     return val;
 }
+    
 
 bool CommandPacket::verify()
 {
@@ -85,3 +86,30 @@
     
     return errorCode;
 }
+
+int CommandPacket::serialize(uint8_t *output)
+{    
+    // create buffer for payload
+    uint8_t buffer[length * 2];
+    memset(buffer, 0x0, sizeof(buffer));
+    
+    for (int i = 0; i < length; i++)
+    {
+        sprintf((char *) (buffer + i * 2), "%02X", payload[i]);
+    }
+    
+    // assume the user provide output buffer large enough
+    sprintf((char *) output, "%c%02X%02X%s%02X%c",
+        sflag,
+        command,
+        length,
+        (char *) buffer,
+        generate_checksum(payload, length),
+        eflag
+    );
+    
+    return length;
+}
+        
+    
+