#![no_std]
pub mod fw;
pub mod hw;
pub mod chip;
pub mod mcu;
#[derive(Debug, serde::Serialize, serde::Deserialize)]
pub enum Error {
InvalidMcuVariant { variant: mcu::Variant },
InvalidFirmwareVersion,
}
impl core::fmt::Display for Error {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Error::InvalidMcuVariant { variant } => {
write!(f, "Invalid MCU variant: {}", variant)
}
Error::InvalidFirmwareVersion => {
write!(f, "Invalid firmware version")
}
}
}
}
pub fn crate_version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, Copy, PartialEq, Eq)]
pub enum Model {
Fire,
Ice,
}
impl Model {
pub fn mcu_family(&self) -> mcu::Family {
match self {
Model::Fire => mcu::Family::Rp2350,
Model::Ice => mcu::Family::Stm32f4,
}
}
}