use crate::words::its::data_words::*;
use std::fmt::Write;
pub const DATA_WORD_SANITY_CHECKER: DataWordSanityChecker = DataWordSanityChecker {};
pub struct DataWordSanityChecker {}
impl DataWordSanityChecker {
#[inline]
pub fn check_any(&self, data_word: &[u8]) -> Result<(), String> {
let mut err_str = String::new();
let id = data_word[9];
if !self.is_valid_any_id(id) {
write!(err_str, "ID is invalid: {id:#02X}").unwrap();
return Err(err_str);
}
Ok(())
}
#[inline]
fn is_valid_il_id(&self, id: u8) -> bool {
VALID_IL_ID.contains(&id)
}
#[inline]
fn is_valid_ml_id(&self, id: u8) -> bool {
VALID_ML_CONNECT0_ID.contains(&id)
|| VALID_ML_CONNECT1_ID.contains(&id)
|| VALID_ML_CONNECT2_ID.contains(&id)
|| VALID_ML_CONNECT3_ID.contains(&id)
}
#[inline]
fn is_valid_ol_id(&self, id: u8) -> bool {
VALID_OL_CONNECT0_ID.contains(&id)
|| VALID_OL_CONNECT1_ID.contains(&id)
|| VALID_OL_CONNECT2_ID.contains(&id)
|| VALID_OL_CONNECT3_ID.contains(&id)
}
#[inline]
fn is_valid_any_id(&self, id: u8) -> bool {
self.is_valid_il_id(id) || self.is_valid_ml_id(id) || self.is_valid_ol_id(id)
}
}