7class COBSSerialDevice {
9 using Packet = std::vector<uint8_t>;
11 using WirePacket = std::vector<uint8_t>;
19 COBSSerialDevice(int32_t port, int32_t baud);
30 int send_cobs_packet_blocking(
const uint8_t *data,
size_t size,
bool leading_delimeter =
false);
39 int receive_cobs_packet_blocking(uint8_t *buffer,
size_t max_size, uint32_t timeout_us = 0);
48 static void cobs_encode(
const Packet &in, WirePacket &out,
bool add_start_delimeter =
false);
54 static void cobs_decode(
const WirePacket &in, Packet &out);
59 static void hexdump(
const uint8_t *data,
size_t len);
66 bool poll_incoming_data_once();
72 bool handle_incoming_byte(uint8_t
byte);
74 vex::mutex serial_access_mut;
79 Packet writing_buffer;
81 WirePacket encoded_write;
84 std::vector<uint8_t> incoming_buffer;
86 WirePacket incoming_wire_packet;
88 Packet last_decoded_packet;