Class AlarmStateMachine
Defined in File alarm_state_machine.hpp
Nested Relationships
Nested Types
Class Documentation
-
class AlarmStateMachine
Pure, side-effect-free state machine bridging OPC-UA AlarmConditionType state combinations to SOVD fault lifecycle. The poller owns the
last_known_statusper (ConditionId) and feeds it back asprev_statuson every event.Decision order (first match wins) follows the design table in design/index.rst and issue #386:
BranchId != null -> Suppressed + NoOp (history only)
EnabledState == false -> Suppressed (clear if was active)
ShelvingState != Unshelved -> Suppressed (clear if was active)
ActiveState == true -> Confirmed (idempotent re-report)
ActiveState == false -> Healed or Cleared based on Acked + Confirmed
Retain is intentionally not modeled by this state machine and does not affect
compute(). Per Part 9 §5.5.2.10 it controls visibility during ConditionRefresh bursts rather than the lifecycle mapping implemented here. The current EventFilter does not include Retain in its select clauses; if/when ConditionRefresh-with-Retain filtering is added (issue #389), it will live in the poller’s pre-compute path, not in this pure-function table. (Copilot review on PR #387.)Public Static Functions
-
static inline Outcome compute(SovdAlarmStatus prev_status, const AlarmEventInput &in)
-
struct Outcome