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 DmChassisControllerApiExtensions { public static void LinkToApi(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 IBasicCommunicationApiExtensions { /// /// /// /// /// /// public static void LinkToApi(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(); } })); } } } }