use core::num::NonZeroU8;
pub mod acm;
pub mod call;
pub mod header;
pub mod union;
#[derive(Clone, Copy)]
pub enum Class {
Communications {
subclass: SubClass,
protocol: Protocol,
},
CdcData,
}
impl Class {
pub fn class(&self) -> NonZeroU8 {
unsafe {
NonZeroU8::new_unchecked(match self {
Class::Communications { .. } => 2,
Class::CdcData => 10,
})
}
}
pub fn subclass(&self) -> u8 {
match self {
Class::Communications { subclass, .. } => *subclass as u8,
Class::CdcData => 0,
}
}
pub fn protocol(&self) -> u8 {
match self {
Class::Communications { protocol, .. } => *protocol as u8,
Class::CdcData => 0,
}
}
}
#[derive(Clone, Copy)]
pub enum SubClass {
AbstractControlModel = 0x02,
}
#[derive(Clone, Copy)]
pub enum Protocol {
ATCommands = 1,
}
const CS_INTERFACE: u8 = 0x24;
const SUBTYPE_HEADER: u8 = 0x00;
const SUBTYPE_CALL: u8 = 0x01;
const SUBTYPE_ACM: u8 = 0x02;
const SUBTYPE_UNION: u8 = 0x06;