diff options
author | lonkaars <loek@pipeframe.xyz> | 2022-12-12 12:52:30 +0100 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2022-12-12 12:52:30 +0100 |
commit | 8c21a929d06ed108b0e64f3892d036cd4cd67e51 (patch) | |
tree | f4ae31eff8d8ea97812e7375a58d0958f5161373 /shared | |
parent | 52571310d06e2c20d2959c7f6ca2d9e6a1cf281c (diff) |
serial parser working on qt client side
Diffstat (limited to 'shared')
-rw-r--r-- | shared/protocol-tests/ping.bin | bin | 0 -> 4 bytes | |||
-rw-r--r-- | shared/protocol.h | 12 | ||||
-rw-r--r-- | shared/protocol.md | 36 | ||||
-rw-r--r-- | shared/serial_parse.h | 9 |
4 files changed, 9 insertions, 48 deletions
diff --git a/shared/protocol-tests/ping.bin b/shared/protocol-tests/ping.bin Binary files differnew file mode 100644 index 0000000..2b8491c --- /dev/null +++ b/shared/protocol-tests/ping.bin 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 */ @@ -81,15 +78,6 @@ typedef struct { } 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 */ cd_cmd_bool_t success; /** @brief `true` if some error occurred */ 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`|<u>ping</u> -|`0x02`|[EXPT](#expt)|yes|`r --> c`|<u>ex</u>ce<u>pt</u>ion - -### 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 + |