use postcard::experimental::max_size::MaxSize;
use serde::{Deserialize, Serialize};
use crate::event::{Event, KeyboardEvent};
#[cfg(feature = "_ble")]
pub mod ble;
pub mod central;
pub(crate) mod driver;
pub mod peripheral;
#[cfg(feature = "rp2040")]
pub mod rp;
#[cfg(not(feature = "_ble"))]
pub mod serial;
pub const SPLIT_MESSAGE_MAX_SIZE: usize = SplitMessage::POSTCARD_MAX_SIZE + 4;
#[repr(u8)]
#[derive(Serialize, Deserialize, Debug, Clone, Copy, MaxSize)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub(crate) enum SplitMessage {
Key(KeyboardEvent),
Event(Event),
LedState(bool),
ConnectionState(bool),
Address([u8; 6]),
ClearPeer,
KeyboardIndicator(u8),
Layer(u8),
}