8class COBSSerialDevice {
11 using Packet = std::vector<uint8_t>;
13 using WirePacket = std::vector<uint8_t>;
20 COBSSerialDevice(int32_t port, int32_t baud);
31 int send_cobs_packet_blocking(
const uint8_t *data,
size_t size,
bool leading_delimeter =
false);
40 int receive_cobs_packet_blocking(uint8_t *buffer,
size_t max_size, uint32_t timeout_us = 0);
49 static void cobs_encode(
const Packet &in, WirePacket &out,
bool add_start_delimeter =
false);
55 static void cobs_decode(
const WirePacket &in, Packet &out);
60 static void hexdump(
const uint8_t *data,
size_t len);
62 Packet get_last_decoded_packet();
69 bool poll_incoming_data_once();
74 bool handle_incoming_byte(uint8_t
byte);
77 vex::mutex serial_access_mut;
82 Packet writing_buffer;
84 WirePacket encoded_write;
87 std::vector<uint8_t> incoming_buffer;
89 WirePacket incoming_wire_packet;
91 Packet last_decoded_packet;