#[cfg(not(feature = "std"))]
use core::{
clone::Clone,
cmp::{Eq, PartialEq},
fmt::Debug,
prelude::rust_2021::derive,
result::Result::Ok,
};
use byteorder_cursor::{BigEndian, Cursor};
use super::{Result, SmaSerde};
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub(crate) struct SmaCmdWord {
pub channel: u8,
pub opcode: u32,
}
impl SmaCmdWord {
const LENGTH: usize = 4;
}
impl SmaSerde for SmaCmdWord {
fn serialize(&self, buffer: &mut Cursor<&mut [u8]>) -> Result<()> {
buffer.check_remaining(Self::LENGTH)?;
buffer.write_u8(self.channel);
buffer.write_u24::<BigEndian>(self.opcode);
Ok(())
}
fn deserialize(buffer: &mut Cursor<&[u8]>) -> Result<Self> {
buffer.check_remaining(Self::LENGTH)?;
let channel = buffer.read_u8();
let opcode = buffer.read_u24::<BigEndian>();
Ok(Self { channel, opcode })
}
}