mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-28 11:54:57 +00:00
53 lines
2.4 KiB
C#
53 lines
2.4 KiB
C#
using Crestron.SimplSharpPro.DeviceSupport;
|
|
using Newtonsoft.Json;
|
|
using PepperDash.Core;
|
|
using PepperDash.Essentials.Core;
|
|
using PepperDash.Essentials.Core.CrestronIO;
|
|
|
|
namespace PepperDash.Essentials.Bridges
|
|
{
|
|
public static class StatusSignDeviceApiExtensions
|
|
{
|
|
public static void LinkToApi(this StatusSignController ssDevice, BasicTriList trilist, uint joinStart,
|
|
string joinMapKey)
|
|
{
|
|
var joinMap = new StatusSignControllerJoinMap(joinStart);
|
|
|
|
var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey);
|
|
|
|
if (!string.IsNullOrEmpty(joinMapSerialized))
|
|
joinMap = JsonConvert.DeserializeObject<StatusSignControllerJoinMap>(joinMapSerialized);
|
|
|
|
joinMap.OffsetJoinNumbers(joinStart);
|
|
|
|
Debug.Console(1, ssDevice, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
|
|
|
trilist.SetBoolSigAction(joinMap.RedControl, b => EnableControl(trilist, joinMap, ssDevice));
|
|
trilist.SetBoolSigAction(joinMap.GreenControl, b => EnableControl(trilist, joinMap, ssDevice));
|
|
trilist.SetBoolSigAction(joinMap.BlueControl, b => EnableControl(trilist, joinMap, ssDevice));
|
|
|
|
trilist.SetUShortSigAction(joinMap.RedLed, u => SetColor(trilist, joinMap, ssDevice));
|
|
trilist.SetUShortSigAction(joinMap.GreenLed, u => SetColor(trilist, joinMap, ssDevice));
|
|
trilist.SetUShortSigAction(joinMap.BlueLed, u => SetColor(trilist, joinMap, ssDevice));
|
|
}
|
|
|
|
private static void EnableControl(BasicTriList triList, StatusSignControllerJoinMap joinMap,
|
|
StatusSignController device)
|
|
{
|
|
var redEnable = triList.BooleanOutput[joinMap.RedControl].BoolValue;
|
|
var greenEnable = triList.BooleanOutput[joinMap.GreenControl].BoolValue;
|
|
var blueEnable = triList.BooleanOutput[joinMap.BlueControl].BoolValue;
|
|
device.EnableLedControl(redEnable, greenEnable, blueEnable);
|
|
}
|
|
|
|
private static void SetColor(BasicTriList triList, StatusSignControllerJoinMap joinMap,
|
|
StatusSignController device)
|
|
{
|
|
var redBrightness = triList.UShortOutput[joinMap.RedLed].UShortValue;
|
|
var greenBrightness = triList.UShortOutput[joinMap.GreenLed].UShortValue;
|
|
var blueBrightness = triList.UShortOutput[joinMap.BlueLed].UShortValue;
|
|
|
|
device.SetColor(redBrightness, greenBrightness, blueBrightness);
|
|
}
|
|
}
|
|
} |