oca 0.2.0

An experiment with no_std
Documentation
use crate::ocp1::pdu::Header;

pub struct SyncValue;

impl SyncValue {
    pub const VALUE: u8 = 0x3B;
}

#[derive(Debug, thiserror::Error)]
#[error("invalid sync value {0}")]
pub struct InvalidSyncValue(u8);

impl TryFrom<u8> for SyncValue {
    type Error = InvalidSyncValue;

    fn try_from(value: u8) -> Result<Self, Self::Error> {
        match value {
            SyncValue::VALUE => Ok(SyncValue),
            value => Err(InvalidSyncValue(value)),
        }
    }
}

#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct MessagePdu<'a> {
    pub header: Header,
    pub data: &'a [u8],
}