From 8c21a929d06ed108b0e64f3892d036cd4cd67e51 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Mon, 12 Dec 2022 12:52:30 +0100 Subject: serial parser working on qt client side --- shared/protocol-tests/ping.bin | Bin 0 -> 4 bytes shared/protocol.h | 12 ------------ shared/protocol.md | 36 ------------------------------------ shared/serial_parse.h | 9 +++++++++ 4 files changed, 9 insertions(+), 48 deletions(-) create mode 100644 shared/protocol-tests/ping.bin (limited to 'shared') diff --git a/shared/protocol-tests/ping.bin b/shared/protocol-tests/ping.bin new file mode 100644 index 0000000..2b8491c Binary files /dev/null and b/shared/protocol-tests/ping.bin differ diff --git a/shared/protocol.h b/shared/protocol.h index c2001cf..7f06a52 100644 --- a/shared/protocol.h +++ b/shared/protocol.h @@ -62,9 +62,6 @@ typedef struct { cd_cmd_bool_t join; /** @brief `true` to join network, `false` to leave network */ } cd_s_cmd_post_net; -typedef struct { -} cd_s_cmd_response_ping; - /** @brief protocol node */ typedef struct { cd_uuid_t uuid; /** @brief node network uuid */ @@ -80,15 +77,6 @@ typedef struct { cd_s_cmd_node nodes[]; } cd_s_cmd_response_get_node; -typedef struct { -} cd_s_cmd_response_post_led; - -typedef struct { -} cd_s_cmd_response_post_link; - -typedef struct { -} cd_s_cmd_response_post_net; - typedef struct { cd_cmd_opcode_t opcode; /** @brief cmd opcode */ cd_cmd_id_t id; /** @brief response message id */ diff --git a/shared/protocol.md b/shared/protocol.md index 62caded..c3c229f 100644 --- a/shared/protocol.md +++ b/shared/protocol.md @@ -13,39 +13,3 @@ and the starting byte don't count towards message length. opcodes are picked sequentially, and are stored as enum constants inside shared/protocol.h for code readability. -|code|name|implemented|directions|full name| -|--:|---|:-:|:-:|---| -|`0x00`|[PING](#ping)|yes|`r <=> c`|ping -|`0x02`|[EXPT](#expt)|yes|`r --> c`|exception - -### PING - -#### ping (`r <=> c`) (2 bytes) - -|type|description| -|-:|-| -|`uint8_t`|opcode (`0x00 + 0` or `0x00 + 1`)| -|`uint8_t`|ping id| - -**ping** sends back an identical message either way with the **same** direction -bit. _ping id_ is a random 8-bit value that identifies the ping message. this -is the only command that makes either the robot or client send a message with -an opcode not matching the respective sender. the direction bit indicates which -device initiated the ping message. - -### EXPT - -#### exception (`r --> c`) (3+ bytes) - -|type|description| -|-:|-| -|`uint8_t`|opcode (`0x02 + 1`)| -|`uint8_t`|error code| -|`uint8_t`|length| -|`uint8_t[length]`|message contents| - -the **exception** instruction is used by the robot to send errors, warnings, -and other messages back to the client. an error can also optionally contain a -message between 0 and 255 characters long. message length is sent before the -message, and can be 0 in case of no message. - diff --git a/shared/serial_parse.h b/shared/serial_parse.h index 1efedc1..1e9c404 100644 --- a/shared/serial_parse.h +++ b/shared/serial_parse.h @@ -10,8 +10,17 @@ #define CD_SERIAL_READ_SUCCESS true #define CD_SERIAL_READ_FAILURE false +#ifdef __cplusplus +extern "C" { +#endif + /** * parse serial data byte by byte * @return true if read success, false if read fails */ bool cd_serial_parse(uint8_t byte); + +#ifdef __cplusplus +} +#endif + -- cgit v1.2.3