oca 0.2.0

An experiment with no_std
Documentation
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct OcaONo(u32);

impl From<u32> for OcaONo {
    fn from(value: u32) -> OcaONo {
        OcaONo(value)
    }
}

impl From<OcaONo> for u32 {
    fn from(OcaONo(value): OcaONo) -> u32 {
        value
    }
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct OcaMethod {
    pub object: OcaONo,
    pub id: OcaMethodId,
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct OcaMethodId {
    pub level: u16,
    pub index: u16,
}

impl From<(u16, u16)> for OcaMethodId {
    fn from((level, index): (u16, u16)) -> Self {
        Self { level, index }
    }
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct OcaEvent {
    pub object: OcaONo,
    pub id: OcaEventId,
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct OcaEventId {
    pub level: u16,
    pub index: u16,
}

impl From<(u16, u16)> for OcaEventId {
    fn from((level, index): (u16, u16)) -> Self {
        Self { level, index }
    }
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum OcaStatus {
    Ok,
    Err(u8),
}

impl From<u8> for OcaStatus {
    fn from(value: u8) -> OcaStatus {
        match value {
            0 => OcaStatus::Ok,
            _ => OcaStatus::Err(value),
        }
    }
}

impl From<OcaStatus> for u8 {
    fn from(value: OcaStatus) -> u8 {
        match value {
            OcaStatus::Ok => 0,
            OcaStatus::Err(value) => value,
        }
    }
}