diff --git a/PepperDashEssentials/Bridges/IBasicCommunicationBridgeMap.cs b/PepperDashEssentials/Bridges/IBasicCommunicationBridgeMap.cs new file mode 100644 index 00000000..5b7998cd --- /dev/null +++ b/PepperDashEssentials/Bridges/IBasicCommunicationBridgeMap.cs @@ -0,0 +1,88 @@ +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.DM; + +namespace PepperDash.Essentials.Bridges.TEST +{ + + /// + /// + /// + public static class DmChassisControllerTrilistBridgeExtensions + { + public static void LinkMeToTrilist(this PepperDash.Essentials.DM.DmChassisController chassis, + BasicTriList trilist, Dictionary map, uint joinstart) + { + uint joinOffset = joinstart - 1; + + uint videoSelectOffset = 0 + joinOffset; + uint audioSelectOffset = 40 + joinOffset; + + + // loop chassis number of inupts + for (uint i = 1; i <= chassis.Chassis.NumberOfOutputs; i++) + { + trilist.SetUShortSigAction(videoSelectOffset + i, new Action(u => chassis.ExecuteSwitch(u, i, eRoutingSignalType.Video))); + trilist.SetUShortSigAction(audioSelectOffset + i, new Action(u => chassis.ExecuteSwitch(u, i, eRoutingSignalType.Audio))); + } + + // wire up output change detection (try to add feedbacks or something to DMChassisController?? + + // names? + + // HDCP? + + + } + } + + + + /// + /// For trilists to com sockets only + /// + public static class IBasicCommunicationTrilistBridgeExtensions + { + /// + /// + /// + /// + /// + /// + public static void LinkMeToTrilist(this IBasicCommunication comm, BasicTriList trilist, uint joinStart) + { + // this is a permanent event handler. This cannot be -= from event + comm.TextReceived += (s, a) => trilist.SetString(joinStart, a.Text); + trilist.SetStringSigAction(joinStart, new Action(s => comm.SendText(s))); + var sComm = comm as ISocketStatus; + if (sComm != null) + { + sComm.ConnectionChange += (s, a) => + { + trilist.SetUshort(joinStart, (ushort)(a.Client.ClientStatus)); + trilist.SetBool(joinStart, a.Client.ClientStatus == + Crestron.SimplSharp.CrestronSockets.SocketStatus.SOCKET_STATUS_CONNECTED); + }; + + trilist.SetBoolSigAction(joinStart, new Action(b => + { + if (b) + { + sComm.Connect(); + } + else + { + sComm.Disconnect(); + } + })); + } + } + } +} \ No newline at end of file