use crate::messages::primitive_aliases::Code2;
use std::fmt::Debug;
#[derive(Clone, PartialEq, Eq, Hash)]
pub struct ScanDataFlags(Code2);
impl ScanDataFlags {
pub(crate) fn new(value: Code2) -> Self {
Self(value)
}
pub fn avset_enabled(&self) -> bool {
let enabled_flag = self.0 & 0b0001 != 0;
let disabled_flag = self.0 & 0b0010 != 0;
debug_assert!(
enabled_flag ^ disabled_flag,
"Unexpected AVSET state (expected: enabled XOR disabled)"
);
enabled_flag
}
pub fn ebc_enabled(&self) -> bool {
self.0 & 0b0100 != 0
}
pub fn rda_log_data_enabled(&self) -> bool {
self.0 & 0b1000 != 0
}
pub fn time_series_data_recording_enabled(&self) -> bool {
self.0 & 0b10000 != 0
}
}
impl Debug for ScanDataFlags {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("ScanDataFlags")
.field("avset_enabled", &self.avset_enabled())
.field("ebc_enabled", &self.ebc_enabled())
.field("rda_log_data_enabled", &self.rda_log_data_enabled())
.field(
"time_series_data_recording_enabled",
&self.time_series_data_recording_enabled(),
)
.finish()
}
}