#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Message {
code: u16,
state: Option<State>,
alarm_type: Option<AlarmType>,
device: Option<Device>,
sample: Option<u8>,
message: &'static str,
}
impl Message {
pub(crate) fn new(
code: u16,
state: Option<State>,
alarm_type: Option<AlarmType>,
device: Option<Device>,
sample: Option<u8>,
message: &'static str,
) -> Self {
Self {
code,
state,
alarm_type,
device,
sample,
message,
}
}
pub fn code(&self) -> u16 {
self.code
}
pub fn state(&self) -> Option<State> {
self.state
}
pub fn alarm_type(&self) -> Option<AlarmType> {
self.alarm_type
}
pub fn device(&self) -> Option<Device> {
self.device
}
pub fn sample(&self) -> Option<u8> {
self.sample
}
pub fn message(&self) -> &'static str {
self.message
}
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum State {
MaintenanceMandatory,
MaintenanceRequired,
Inoperative,
Secondary,
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum AlarmType {
EdgeDetected,
Occurrence,
FilteredOccurrence,
}
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum Device {
Control,
Pedestal,
Receiver,
SignalProcessor,
Communications,
TowerUtilities,
Transmitter,
}