![](/media/cache/profiles/aa03f7d585b4ae5554378b5843a73d11.jpg.50x50_q85.png)
Experiment of serial command protocol
Dependencies: RingBuffer SerialInterfaceProtocol duinotech_16x2_LCD mbed
You can edit this area
Diff: CommandPacket.cpp
- 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; +} + + +