mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
Refactors all references to EssentialsRoomBase and EssentialsHuddleSpaceRoom to use the new interfaces instead
58 lines
1.7 KiB
C#
58 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Crestron.SimplSharp;
|
|
using Crestron.SimplSharpPro;
|
|
using Crestron.SimplSharpPro.DeviceSupport;
|
|
|
|
using PepperDash.Core;
|
|
using PepperDash.Essentials.Core;
|
|
using PepperDash.Essentials.Room.Config;
|
|
|
|
namespace PepperDash.Essentials.Room
|
|
{
|
|
|
|
|
|
|
|
public class EssentialsRoomEmergencyContactClosure : EssentialsRoomEmergencyBase
|
|
{
|
|
IEssentialsRoom Room;
|
|
string Behavior;
|
|
bool TriggerOnClose;
|
|
|
|
public EssentialsRoomEmergencyContactClosure(string key, EssentialsRoomEmergencyConfig config, IEssentialsRoom room) :
|
|
base(key)
|
|
{
|
|
Room = room;
|
|
var cs = Global.ControlSystem;
|
|
|
|
if (config.Trigger.Type.Equals("contact", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
var portNum = (uint)config.Trigger.Number;
|
|
if (portNum <= cs.NumberOfDigitalInputPorts)
|
|
{
|
|
cs.DigitalInputPorts[portNum].Register();
|
|
cs.DigitalInputPorts[portNum].StateChange += EsentialsRoomEmergencyContactClosure_StateChange;
|
|
}
|
|
}
|
|
Behavior = config.Behavior;
|
|
TriggerOnClose = config.Trigger.TriggerOnClose;
|
|
}
|
|
|
|
void EsentialsRoomEmergencyContactClosure_StateChange(DigitalInput digitalInput, DigitalInputEventArgs args)
|
|
{
|
|
if (args.State && TriggerOnClose || !args.State && !TriggerOnClose)
|
|
RunEmergencyBehavior();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public void RunEmergencyBehavior()
|
|
{
|
|
if (Behavior.Equals("shutdown"))
|
|
Room.Shutdown();
|
|
}
|
|
}
|
|
} |