use crate::{
Error, Result,
blocks::common::{BlockHeader, BlockParse},
};
#[derive(Debug, Clone)]
pub struct SignalDataBlock<'a> {
pub header: BlockHeader,
pub data: &'a [u8],
}
impl<'a> BlockParse<'a> for SignalDataBlock<'a> {
const ID: &'static str = "##SD";
fn from_bytes(bytes: &'a [u8]) -> Result<Self> {
let header = Self::parse_header(bytes)?;
let expected_bytes = header.length as usize;
if bytes.len() < expected_bytes {
return Err(Error::TooShortBuffer {
actual: bytes.len(),
expected: expected_bytes,
file: file!(),
line: line!(),
});
}
let data = &bytes[24..expected_bytes];
Ok(SignalDataBlock { header, data })
}
}