use bacnet_types::constructed::{BACnetEventParameter, FaultParameters};
use bacnet_types::enums::{EventState, PropertyIdentifier};
use bacnet_types::primitives::{ObjectIdentifier, PropertyValue};
use crate::event::history::EventHistory;
pub(super) struct AlertEnrollmentWriteRollback {
pub(super) enabled: bool,
pub(super) event_state: u32,
pub(super) acked_transitions: u8,
pub(super) event_history: EventHistory,
}
pub type EventEnrollmentMonitoredSource = (ObjectIdentifier, PropertyIdentifier, Option<u32>);
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EventEnrollmentPending {
pub state: EventState,
pub remaining: u32,
pub condition: u64,
pub params_fingerprint: u64,
}
#[derive(Debug, Clone, Default, PartialEq)]
pub struct EventEnrollmentEvalState {
pub pending: Option<EventEnrollmentPending>,
pub cov_baseline: Option<PropertyValue>,
pub last_offnormal_value: Option<u64>,
}
pub(super) enum EventEnrollmentWriteRollback {
Detection {
enabled: bool,
event_state: u32,
acked_transitions: u8,
event_history: EventHistory,
monitored_reference: Option<EventEnrollmentMonitoredSource>,
evaluation: EventEnrollmentEvalState,
},
EventParameters {
value: BACnetEventParameter,
pending: Option<EventEnrollmentPending>,
},
FaultParameters(Option<FaultParameters>),
TimeDelayNormal {
value: Option<u32>,
pending: Option<EventEnrollmentPending>,
},
}