diff --git a/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs b/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs index 7ad7f700..2be18f09 100644 --- a/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs +++ b/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs @@ -4,12 +4,16 @@ using PepperDash.Essentials.Room.Config; namespace PepperDash.Essentials.Core { - public class EssentialsRoomEmergencyContactClosure : EssentialsRoomEmergencyBase + public class EssentialsRoomEmergencyContactClosure : EssentialsRoomEmergencyBase, IEssentialsRoomEmergency { + public event EventHandler EmergencyStateChange; + IEssentialsRoom Room; string Behavior; bool TriggerOnClose; + public bool InEmergency { get; private set; } + public EssentialsRoomEmergencyContactClosure(string key, EssentialsRoomEmergencyConfig config, IEssentialsRoom room) : base(key) { @@ -32,7 +36,18 @@ namespace PepperDash.Essentials.Core void EsentialsRoomEmergencyContactClosure_StateChange(DigitalInput digitalInput, DigitalInputEventArgs args) { if (args.State && TriggerOnClose || !args.State && !TriggerOnClose) + { + InEmergency = true; + if (EmergencyStateChange != null) + EmergencyStateChange(this, new EventArgs()); RunEmergencyBehavior(); + } + else + { + InEmergency = false; + if (EmergencyStateChange != null) + EmergencyStateChange(this, new EventArgs()); + } } /// @@ -44,4 +59,14 @@ namespace PepperDash.Essentials.Core Room.Shutdown(); } } + + /// + /// Describes the functionality of a room emergency contact closure + /// + public interface IEssentialsRoomEmergency + { + event EventHandler EmergencyStateChange; + + bool InEmergency { get; } + } } \ No newline at end of file