using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using Crestron.SimplSharpPro.DeviceSupport; using PepperDash.Core; using PepperDash.Essentials.Core; using PepperDash.Essentials.Devices.Common; namespace PepperDash.Essentials.Bridges { public static class DigitalLoggerApiExtensions { public static void LinkToApi(this DigitalLogger DigitalLogger, BasicTriList trilist, uint joinStart, string joinMapKey) { var joinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as DigitalLoggerJoinMap; if (joinMap == null) joinMap = new DigitalLoggerJoinMap(); joinMap.OffsetJoinNumbers(joinStart); Debug.Console(1, DigitalLogger, "Linking to Trilist '{0}'", trilist.ID.ToString("X")); for (uint i = 1; i <= DigitalLogger.CircuitCount; i++) { var circuit = i; DigitalLogger.CircuitNameFeedbacks[circuit - 1].LinkInputSig(trilist.StringInput[joinMap.CircuitNames + circuit]); DigitalLogger.CircuitIsCritical[circuit - 1].LinkInputSig(trilist.BooleanInput[joinMap.CircuitIsCritical + circuit]); DigitalLogger.CircuitState[circuit - 1].LinkInputSig(trilist.BooleanInput[joinMap.CircuitState + circuit]); trilist.SetSigTrueAction(joinMap.CircuitCycle + circuit, () => DigitalLogger.CycleCircuit(circuit - 1)); trilist.SetSigTrueAction(joinMap.CircuitOnCmd + circuit, () => DigitalLogger.TurnOnCircuit(circuit - 1)); trilist.SetSigTrueAction(joinMap.CircuitOffCmd + circuit, () => DigitalLogger.TurnOffCircuit(circuit - 1)); } } } public class DigitalLoggerJoinMap : JoinMapBase { public uint IsOnline { get; set; } public uint CircuitNames { get; set; } public uint CircuitState { get; set; } public uint CircuitCycle { get; set; } public uint CircuitIsCritical { get; set; } public uint CircuitOnCmd { get; set; } public uint CircuitOffCmd { get; set; } public DigitalLoggerJoinMap() { // Digital IsOnline = 9; CircuitState = 0; CircuitCycle = 0; CircuitIsCritical = 10; CircuitOnCmd = 10; CircuitOffCmd = 20; // Serial CircuitNames = 0; // Analog } public override void OffsetJoinNumbers(uint joinStart) { var joinOffset = joinStart - 1; IsOnline = IsOnline + joinOffset; CircuitNames = CircuitNames + joinOffset; CircuitState = CircuitState + joinOffset; CircuitCycle = CircuitCycle + joinOffset; CircuitIsCritical = CircuitIsCritical + joinOffset; CircuitOnCmd = CircuitOnCmd + joinOffset; CircuitOffCmd = CircuitOffCmd + joinOffset; } } }