#![no_std]
pub mod chip_id;
pub mod commands;
pub mod crc;
pub mod errors;
pub mod events;
pub mod frame;
pub mod info;
pub mod modulation;
pub use chip_id::RadioChipId;
pub use commands::{Command, TxFlags};
pub use errors::ErrorCode;
pub use events::{
DeviceMessage, OkPayload, Owner, RxOrigin, RxPayload, SetConfigResult, SetConfigResultCode,
TxDonePayload, TxResult,
};
pub use frame::{FrameDecoder, FrameResult, encode_frame};
pub use info::{Info, cap};
pub use modulation::{
FlrcBitrate, FlrcBt, FlrcCodingRate, FlrcConfig, FlrcPreambleLen, FskConfig, LoRaBandwidth,
LoRaCodingRate, LoRaConfig, LoRaHeaderMode, LrFhssBandwidth, LrFhssCodingRate, LrFhssConfig,
LrFhssGrid, Modulation, ModulationId,
};
pub const MAX_OTA_PAYLOAD: usize = 255;
pub const MAX_PAYLOAD_FIELD: usize = MAX_OTA_PAYLOAD + 20;
pub const FRAME_HEADER_SIZE: usize = 3;
pub const FRAME_TRAILER_SIZE: usize = 2;
pub const MAX_PRE_COBS_FRAME: usize = FRAME_HEADER_SIZE + MAX_PAYLOAD_FIELD + FRAME_TRAILER_SIZE;
pub const MAX_COBS_OVERHEAD: usize = 3;
pub const MAX_WIRE_FRAME: usize = MAX_PRE_COBS_FRAME + MAX_COBS_OVERHEAD + 1;
pub const MAX_SYNC_WORD_LEN: usize = 8;
pub const MAX_MCU_UID_LEN: usize = 32;
pub const MAX_RADIO_UID_LEN: usize = 16;
pub const MAX_OK_PAYLOAD: usize = 37 + MAX_MCU_UID_LEN + MAX_RADIO_UID_LEN;
pub const MAX_SETCONFIG_OK_PAYLOAD: usize = 2 + 1 + 24;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum FrameEncodeError {
PayloadTooLarge,
BufferTooSmall,
CobsEncode,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum FrameDecodeError {
Cobs,
Crc,
TooShort,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum CommandEncodeError {
BufferTooSmall,
EmptyTxPayload,
PayloadTooLarge,
SyncWordTooLong,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum CommandParseError {
UnknownType,
WrongLength,
InvalidField,
ReservedBitSet,
UnknownModulation,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum DeviceMessageEncodeError {
BufferTooSmall,
PayloadTooLarge,
InvalidField,
SyncWordTooLong,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum DeviceMessageParseError {
UnknownType,
WrongLength,
TooShort,
InvalidField,
MissingContext,
UnknownContext,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum ModulationEncodeError {
BufferTooSmall,
SyncWordTooLong,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum ModulationParseError {
WrongLength { expected: usize, actual: usize },
TooShort,
InvalidField,
UnknownModulation,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum InfoParseError {
TooShort,
BufferTooSmall,
InvalidField,
}