mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-17 05:35:03 +00:00
Adds DisplayControllerBRidge
This commit is contained in:
@@ -12,87 +12,121 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
{
|
{
|
||||||
public static class DisplayControllerApiExtensions
|
public static class DisplayControllerApiExtensions
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public static BasicTriList _TriList;
|
||||||
|
public static DisplayControllerJoinMap JoinMap;
|
||||||
|
public static int InputNumber;
|
||||||
|
public static IntFeedback InputNumberFeedback;
|
||||||
|
public static List<string> InputKeys = new List<string>();
|
||||||
public static void LinkToApi(this PepperDash.Essentials.Core.TwoWayDisplayBase displayDevice, BasicTriList trilist, uint joinStart, string joinMapKey)
|
public static void LinkToApi(this PepperDash.Essentials.Core.TwoWayDisplayBase displayDevice, BasicTriList trilist, uint joinStart, string joinMapKey)
|
||||||
{
|
{
|
||||||
var joinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as DisplayControllerJoinMap;
|
JoinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as DisplayControllerJoinMap;
|
||||||
|
_TriList = trilist;
|
||||||
|
|
||||||
if (joinMap == null)
|
if (JoinMap == null)
|
||||||
{
|
{
|
||||||
joinMap = new DisplayControllerJoinMap();
|
JoinMap = new DisplayControllerJoinMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
joinMap.OffsetJoinNumbers(joinStart);
|
JoinMap.OffsetJoinNumbers(joinStart);
|
||||||
Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
Debug.Console(0, "Linking to Bridge Type {0}", displayDevice.GetType().Name.ToString());
|
Debug.Console(0, "Linking to Bridge Type {0}", displayDevice.GetType().Name.ToString());
|
||||||
|
|
||||||
var commMonitor = displayDevice as ICommunicationMonitor;
|
trilist.StringInput[JoinMap.Name].StringValue = displayDevice.GetType().Name.ToString();
|
||||||
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
|
||||||
|
|
||||||
|
InputNumberFeedback = new IntFeedback(() => { return InputNumber;});
|
||||||
|
InputNumberFeedback.LinkInputSig(trilist.UShortInput[JoinMap.InputSelect]);
|
||||||
|
var commMonitor = displayDevice as ICommunicationMonitor;
|
||||||
|
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.IsOnline]);
|
||||||
|
|
||||||
// Poewer Off
|
// Poewer Off
|
||||||
trilist.SetSigTrueAction(joinMap.PowerOff, () => displayDevice.PowerOff());
|
trilist.SetSigTrueAction(JoinMap.PowerOff, () =>
|
||||||
displayDevice.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff]);
|
{
|
||||||
|
InputNumber = 102;
|
||||||
|
InputNumberFeedback.FireUpdate();
|
||||||
|
displayDevice.PowerOff();
|
||||||
|
});
|
||||||
|
|
||||||
|
displayDevice.PowerIsOnFeedback.OutputChange += new EventHandler<FeedbackEventArgs>(PowerIsOnFeedback_OutputChange);
|
||||||
|
displayDevice.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[JoinMap.PowerOff]);
|
||||||
|
|
||||||
// Poewer On
|
// Poewer On
|
||||||
trilist.SetSigTrueAction(joinMap.PowerOn, () => displayDevice.PowerOn());
|
trilist.SetSigTrueAction(JoinMap.PowerOn, () =>
|
||||||
displayDevice.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn]);
|
{
|
||||||
|
InputNumber = 0;
|
||||||
|
InputNumberFeedback.FireUpdate();
|
||||||
|
displayDevice.PowerOn();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
trilist.SetUShortSigAction(joinMap.InputSelect, (a) =>
|
displayDevice.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.PowerOn]);
|
||||||
|
|
||||||
|
int count = 1;
|
||||||
|
foreach (var input in displayDevice.InputPorts)
|
||||||
|
{
|
||||||
|
InputKeys.Add(input.Key.ToString());
|
||||||
|
var tempKey = InputKeys.ElementAt(count - 1);
|
||||||
|
trilist.SetSigTrueAction((ushort)(JoinMap.InputSelectOffset + count), () => { displayDevice.ExecuteSwitch(displayDevice.InputPorts[tempKey].Selector); });
|
||||||
|
trilist.StringInput[(ushort)(JoinMap.InputNamesOffset + count)].StringValue = input.Key.ToString();
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
displayDevice.CurrentInputFeedback.OutputChange += new EventHandler<FeedbackEventArgs>(CurrentInputFeedback_OutputChange);
|
||||||
|
trilist.SetUShortSigAction(JoinMap.InputSelect, (a) =>
|
||||||
{
|
{
|
||||||
if (a == 0)
|
if (a == 0)
|
||||||
{
|
{
|
||||||
displayDevice.PowerOff();
|
displayDevice.PowerOff();
|
||||||
|
InputNumber = 0;
|
||||||
}
|
}
|
||||||
else if (a > 0 && a < displayDevice.InputPorts.Count)
|
else if (a > 0 && a < displayDevice.InputPorts.Count && a != InputNumber)
|
||||||
{
|
{
|
||||||
displayDevice.ExecuteSwitch(displayDevice.InputPorts.ElementAt(a - 1).Selector);
|
displayDevice.ExecuteSwitch(displayDevice.InputPorts.ElementAt(a - 1).Selector);
|
||||||
|
InputNumber = a;
|
||||||
}
|
}
|
||||||
|
else if (a == 102)
|
||||||
|
{
|
||||||
|
displayDevice.PowerToggle();
|
||||||
|
|
||||||
|
}
|
||||||
|
InputNumberFeedback.FireUpdate();
|
||||||
});
|
});
|
||||||
// GenericLighitng Actions & FeedBack
|
|
||||||
|
|
||||||
// int sceneIndex = 1;
|
}
|
||||||
/*
|
|
||||||
foreach (var scene in displayDevice.LightingScenes)
|
static void CurrentInputFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
||||||
{
|
{
|
||||||
var tempIndex = sceneIndex - 1;
|
|
||||||
//trilist.SetSigTrueAction((uint)(joinMap.LightingSceneOffset + sceneIndex), () => displayDevice.SelectScene(displayDevice.LightingScenes[tempIndex]));
|
Debug.Console(0, "CurrentInputFeedback_OutputChange {0}", e.StringValue);
|
||||||
scene.IsActiveFeedback.LinkInputSig(trilist.BooleanInput[(uint)(joinMap.LightingSceneOffset + sceneIndex)]);
|
|
||||||
trilist.StringInput[(uint)(joinMap.LightingSceneOffset + sceneIndex)].StringValue = scene.Name;
|
|
||||||
trilist.BooleanInput[(uint)(joinMap.ButtonVisibilityOffset + sceneIndex)].BoolValue = true;
|
|
||||||
sceneIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displayDevice.GetType().Name.ToString() == "LutronQuantumArea")
|
static void PowerIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
||||||
{
|
{
|
||||||
var lutronDevice = displayDevice as PepperDash.Essentials.Devices.Common.Environment.Lutron.LutronQuantumArea;
|
|
||||||
lutronDevice.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
|
||||||
trilist.SetStringSigAction(joinMap.IntegrationIdSet, s => lutronDevice.IntegrationId = s);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
//ApiEisc.Eisc.SetStringSigAction(ApiMap.integrationID, (s) => { lutronLights.IntegrationId = s; });
|
|
||||||
|
|
||||||
|
// Debug.Console(0, "PowerIsOnFeedback_OutputChange {0}", e.BoolValue);
|
||||||
/*
|
if (!e.BoolValue)
|
||||||
var lutronLights = displayDevice as PepperDash.Essentials.Devices.Common.Environment.Lutron.LutronQuantumArea;
|
|
||||||
|
|
||||||
|
|
||||||
for (uint i = 1; i <= lightingBase.CircuitCount; i++)
|
|
||||||
{
|
{
|
||||||
var circuit = i;
|
InputNumber = 102;
|
||||||
lightingBase.CircuitNameFeedbacks[circuit - 1].LinkInputSig(trilist.StringInput[joinMap.CircuitNames + circuit]);
|
InputNumberFeedback.FireUpdate();
|
||||||
lightingBase.CircuitIsCritical[circuit - 1].LinkInputSig(trilist.BooleanInput[joinMap.CircuitIsCritical + circuit]);
|
|
||||||
lightingBase.CircuitState[circuit - 1].LinkInputSig(trilist.BooleanInput[joinMap.CircuitState + circuit]);
|
|
||||||
trilist.SetSigTrueAction(joinMap.CircuitCycle + circuit, () => lightingBase.CycleCircuit(circuit - 1));
|
|
||||||
trilist.SetSigTrueAction(joinMap.CircuitOnCmd + circuit, () => lightingBase.TurnOnCircuit(circuit - 1));
|
|
||||||
trilist.SetSigTrueAction(joinMap.CircuitOffCmd + circuit, () => lightingBase.TurnOffCircuit(circuit - 1));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
else
|
||||||
|
{
|
||||||
|
InputNumber = 0;
|
||||||
|
InputNumberFeedback.FireUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
public class DisplayControllerJoinMap : JoinMapBase
|
public class DisplayControllerJoinMap : JoinMapBase
|
||||||
{
|
{
|
||||||
|
public uint Name { get; set; }
|
||||||
|
public uint InputNamesOffset { get; set; }
|
||||||
|
public uint InputSelectOffset { get; set; }
|
||||||
public uint IsOnline { get; set; }
|
public uint IsOnline { get; set; }
|
||||||
public uint PowerOff { get; set; }
|
public uint PowerOff { get; set; }
|
||||||
public uint InputSelect { get; set; }
|
public uint InputSelect { get; set; }
|
||||||
@@ -105,13 +139,16 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
public DisplayControllerJoinMap()
|
public DisplayControllerJoinMap()
|
||||||
{
|
{
|
||||||
// Digital
|
// Digital
|
||||||
IsOnline = 1;
|
IsOnline = 50;
|
||||||
PowerOff = 1;
|
PowerOff = 1;
|
||||||
PowerOn = 2;
|
PowerOn = 2;
|
||||||
InputSelect = 1;
|
InputSelect = 4;
|
||||||
IntegrationIdSet = 1;
|
IntegrationIdSet = 1;
|
||||||
LightingSceneOffset = 10;
|
LightingSceneOffset = 10;
|
||||||
ButtonVisibilityOffset = 40;
|
ButtonVisibilityOffset = 40;
|
||||||
|
Name = 1;
|
||||||
|
InputNamesOffset = 10;
|
||||||
|
InputSelectOffset = 4;
|
||||||
// Analog
|
// Analog
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,8 +162,9 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
SelectScene = SelectScene + joinOffset;
|
SelectScene = SelectScene + joinOffset;
|
||||||
LightingSceneOffset = LightingSceneOffset + joinOffset;
|
LightingSceneOffset = LightingSceneOffset + joinOffset;
|
||||||
ButtonVisibilityOffset = ButtonVisibilityOffset + joinOffset;
|
ButtonVisibilityOffset = ButtonVisibilityOffset + joinOffset;
|
||||||
|
Name = Name + joinOffset;
|
||||||
|
InputNamesOffset = InputNamesOffset + joinOffset;
|
||||||
|
InputSelectOffset = InputSelectOffset + joinOffset;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user