use crate::util::*;
use alice_protocol_reader::prelude::macros::load_bytes;
pub mod cdw;
pub mod ddw;
pub mod ihw;
pub mod tdh;
pub mod tdt;
pub mod util;
impl alice_protocol_reader::prelude::ByteSlice for Ihw {}
impl alice_protocol_reader::prelude::ByteSlice for Tdh {}
impl alice_protocol_reader::prelude::ByteSlice for Cdw {}
impl alice_protocol_reader::prelude::ByteSlice for Tdt {}
impl alice_protocol_reader::prelude::ByteSlice for Ddw0 {}
pub trait StatusWord:
fmt::Debug + PartialEq + Sized + alice_protocol_reader::prelude::ByteSlice + fmt::Display
{
fn id(&self) -> u8;
#[inline]
fn load<T: io::Read>(reader: &mut T) -> Result<Self, io::Error>
where
Self: Sized,
{
let buf = load_bytes!(10, reader);
Self::from_buf(&buf)
}
fn from_buf(buf: &[u8]) -> Result<Self, io::Error>;
fn is_reserved_0(&self) -> bool;
}
#[inline]
fn display_byte_slice<T: StatusWord>(status_word: &T, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let slice = status_word.to_byte_slice();
for (i, byte) in slice.iter().enumerate() {
if i > 0 {
f.write_str(" ")?;
}
write!(f, "{}", format_args!("{:02X}", byte))?;
}
Ok(())
}