44 "a frame must fit in one LoRa packet");
79uint16_t
crc16(
const uint8_t* data,
size_t len);
93 uint8_t payload_len, uint8_t* out,
size_t out_cap,
constexpr uint8_t kUnArmLen
void put_u16(uint8_t *p, uint16_t v)
constexpr uint8_t kSelfTestLen
FrameStatus encode_frame(FrameType type, uint16_t seq, const uint8_t *payload, uint8_t payload_len, uint8_t *out, size_t out_cap, size_t &out_len)
Build a frame into out[0..out_cap).
void put_u32(uint8_t *p, uint32_t v)
uint16_t crc16(const uint8_t *data, size_t len)
CRC-16/CCITT-FALSE: poly 0x1021, init 0xFFFF, no reflection, no xorout.
constexpr uint8_t kHeartbeatLen
Required payload length per type.
constexpr uint8_t kFrameVersion
FrameStatus decode_frame(const uint8_t *buf, size_t len, Frame &out)
Parse and validate a received packet.
constexpr size_t kFrameHeaderLen
constexpr size_t kFrameCrcLen
uint32_t get_u32(const uint8_t *p)
constexpr size_t kLoraMaxPacket
constexpr uint8_t kArmLen
uint16_t get_u16(const uint8_t *p)
constexpr size_t kFrameMaxLen
constexpr size_t kFrameOverhead
constexpr size_t kFrameMaxPayload