diff options
| author | Scott Powell <sqij@protonmail.com> | 2025-01-29 10:12:22 +1100 |
|---|---|---|
| committer | Scott Powell <sqij@protonmail.com> | 2025-01-29 10:12:22 +1100 |
| commit | 4f0acbd8dafc25e772d0364897d653ffe08a9eef (patch) | |
| tree | a3ea145a2cbb268f861fdf06650213a3b2eab16b /src/helpers/ArduinoSerialInterface.cpp | |
| parent | e53f0d0725a5b15c68bc88f550924cccb0fb5474 (diff) | |
* companion_radio_usb: encoding in ArduinoSerialInterface changed to 16-bit frame lengths
* MAX_FRAME_SIZE now 172 (to fit max 160 byte text msg)
Diffstat (limited to 'src/helpers/ArduinoSerialInterface.cpp')
| -rw-r--r-- | src/helpers/ArduinoSerialInterface.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/helpers/ArduinoSerialInterface.cpp b/src/helpers/ArduinoSerialInterface.cpp index ac0bf848..a01fa586 100644 --- a/src/helpers/ArduinoSerialInterface.cpp +++ b/src/helpers/ArduinoSerialInterface.cpp @@ -1,8 +1,9 @@ #include "ArduinoSerialInterface.h" -#define RECV_STATE_IDLE 0 -#define RECV_STATE_HDR_FOUND 1 -#define RECV_STATE_LEN_FOUND 2 +#define RECV_STATE_IDLE 0 +#define RECV_STATE_HDR_FOUND 1 +#define RECV_STATE_LEN1_FOUND 2 +#define RECV_STATE_LEN2_FOUND 3 void ArduinoSerialInterface::enable() { _isEnabled = true; @@ -26,10 +27,12 @@ size_t ArduinoSerialInterface::writeFrame(const uint8_t src[], size_t len) { return 0; } - uint8_t hdr[2]; + uint8_t hdr[3]; hdr[0] = '>'; - hdr[1] = len; - _serial->write(hdr, 2); + hdr[1] = (len & 0xFF); // LSB + hdr[2] = (len >> 8); // MSB + + _serial->write(hdr, 3); return _serial->write(src, len); } @@ -45,9 +48,13 @@ size_t ArduinoSerialInterface::checkRecvFrame(uint8_t dest[]) { } break; case RECV_STATE_HDR_FOUND: - _frame_len = (uint8_t)c; + _frame_len = (uint8_t)c; // LSB + _state = RECV_STATE_LEN1_FOUND; + break; + case RECV_STATE_LEN1_FOUND: + _frame_len |= ((uint16_t)c) << 8; // MSB rx_len = 0; - _state = _frame_len > 0 ? RECV_STATE_LEN_FOUND : RECV_STATE_IDLE; + _state = _frame_len > 0 ? RECV_STATE_LEN2_FOUND : RECV_STATE_IDLE; break; default: if (rx_len < MAX_FRAME_SIZE) { |
