diff --git a/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IDPad.cs b/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IDPad.cs index 131b24c0..7c2f139f 100644 --- a/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IDPad.cs +++ b/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IDPad.cs @@ -1,50 +1,50 @@ -using Crestron.SimplSharpPro; -using Crestron.SimplSharpPro.DeviceSupport; - -using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.SmartObjects; - -namespace PepperDash.Essentials.Core -{ - /// - /// - /// - public interface IDPad - { - void Up(bool pressRelease); - void Down(bool pressRelease); - void Left(bool pressRelease); - void Right(bool pressRelease); - void Select(bool pressRelease); - void Menu(bool pressRelease); - void Exit(bool pressRelease); - } - - /// - /// - /// - public static class IDPadExtensions - { - public static void LinkButtons(this IDPad dev, BasicTriList triList) - { - triList.SetBoolSigAction(138, dev.Up); - triList.SetBoolSigAction(139, dev.Down); - triList.SetBoolSigAction(140, dev.Left); - triList.SetBoolSigAction(141, dev.Right); - triList.SetBoolSigAction(142, dev.Select); - triList.SetBoolSigAction(130, dev.Menu); - triList.SetBoolSigAction(134, dev.Exit); - } - - public static void UnlinkButtons(this IDPad dev, BasicTriList triList) - { - triList.ClearBoolSigAction(138); - triList.ClearBoolSigAction(139); - triList.ClearBoolSigAction(140); - triList.ClearBoolSigAction(141); - triList.ClearBoolSigAction(142); - triList.ClearBoolSigAction(130); - triList.ClearBoolSigAction(134); +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; + +namespace PepperDash.Essentials.Core +{ + /// + /// + /// + public interface IDPad + { + void Up(bool pressRelease); + void Down(bool pressRelease); + void Left(bool pressRelease); + void Right(bool pressRelease); + void Select(bool pressRelease); + void Menu(bool pressRelease); + void Exit(bool pressRelease); + } + + /// + /// + /// + public static class IDPadExtensions + { + public static void LinkButtons(this IDPad dev, BasicTriList triList) + { + triList.SetBoolSigAction(138, dev.Up); + triList.SetBoolSigAction(139, dev.Down); + triList.SetBoolSigAction(140, dev.Left); + triList.SetBoolSigAction(141, dev.Right); + triList.SetBoolSigAction(142, dev.Select); + triList.SetBoolSigAction(130, dev.Menu); + triList.SetBoolSigAction(134, dev.Exit); } - } + + public static void UnlinkButtons(this IDPad dev, BasicTriList triList) + { + triList.ClearBoolSigAction(138); + triList.ClearBoolSigAction(139); + triList.ClearBoolSigAction(140); + triList.ClearBoolSigAction(141); + triList.ClearBoolSigAction(142); + triList.ClearBoolSigAction(130); + triList.ClearBoolSigAction(134); + } + } } \ No newline at end of file diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo index ab60f177..3d8ac5bd 100644 Binary files a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo and b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo differ diff --git a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo index d3fdabc8..1990431c 100644 Binary files a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo and b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo differ diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo index 6d19ee97..e836ffde 100644 Binary files a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo and b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo differ diff --git a/Essentials/PepperDashEssentials/Configuration Original/Configuration.cs b/Essentials/PepperDashEssentials/Configuration Original/Configuration.cs index 1f29ce18..30350e79 100644 --- a/Essentials/PepperDashEssentials/Configuration Original/Configuration.cs +++ b/Essentials/PepperDashEssentials/Configuration Original/Configuration.cs @@ -173,8 +173,8 @@ namespace PepperDash.Essentials //} } - static void AddSourcesToSystem(Room system, ConfigSourceList configList) - { + //static void AddSourcesToSystem(Room system, ConfigSourceList configList) + //{ //foreach (var configItem in configList.PresentationSources) //{ // var src = (IPresentationSource)DeviceManager.GetDeviceForKey(configItem.SourceKey); @@ -184,7 +184,7 @@ namespace PepperDash.Essentials // Debug.Console(0, system, "cannot find source '{0}' from list {1}", // configItem.SourceKey, configList.Name); //} - } + //} /// /// Links up routing, creates tie lines diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.csproj b/Essentials/PepperDashEssentials/PepperDashEssentials.csproj index f4597524..6b18300d 100644 --- a/Essentials/PepperDashEssentials/PepperDashEssentials.csproj +++ b/Essentials/PepperDashEssentials/PepperDashEssentials.csproj @@ -142,7 +142,14 @@ + + + + + + + diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo index 540ae9e3..e8d50916 100644 Binary files a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo and b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo differ diff --git a/Essentials/PepperDashEssentials/Room/Cotija/CotijaRoomBridge.cs b/Essentials/PepperDashEssentials/Room/Cotija/CotijaRoomBridge.cs index 1e1f2559..ed911a3b 100644 --- a/Essentials/PepperDashEssentials/Room/Cotija/CotijaRoomBridge.cs +++ b/Essentials/PepperDashEssentials/Room/Cotija/CotijaRoomBridge.cs @@ -6,6 +6,7 @@ using Crestron.SimplSharp; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PepperDash.Essentials.Core; +using PepperDash.Essentials.Room.Cotija; namespace PepperDash.Essentials { @@ -144,29 +145,28 @@ namespace PepperDash.Essentials var previousDev = info.SourceDevice; // device type interfaces - //if (previousDev is ISetTopBoxControls) - // (previousDev as ISetTopBoxControls).UnlinkButtons(TriList); - //// common interfaces - //if (previousDev is IChannel) - // (previousDev as IChannel).UnlinkButtons(TriList); - //if (previousDev is IColor) - // (previousDev as IColor).UnlinkButtons(TriList); + if (previousDev is ISetTopBoxControls) + (previousDev as ISetTopBoxControls).UnlinkActions(Parent); + // common interfaces + if (previousDev is IChannel) + (previousDev as IChannel).UnlinkActions(Parent); + if (previousDev is IColor) + (previousDev as IColor).UnlinkActions(Parent); if (previousDev is IDPad) (previousDev as IDPad).UnlinkActions(Parent); - //if (previousDev is IDvr) - // (previousDev as IDvr).UnlinkButtons(TriList); - //if (previousDev is INumericKeypad) - // (previousDev as INumericKeypad).UnlinkButtons(TriList); - //if (previousDev is IPower) - // (previousDev as IPower).UnlinkButtons(TriList); - //if (previousDev is ITransport) - // (previousDev as ITransport).UnlinkButtons(TriList); + if (previousDev is IDvr) + (previousDev as IDvr).UnlinkActions(Parent); + if (previousDev is INumericKeypad) + (previousDev as INumericKeypad).UnlinkActions(Parent); + if (previousDev is IPower) + (previousDev as IPower).UnlinkActions(Parent); + if (previousDev is ITransport) + (previousDev as ITransport).UnlinkActions(Parent); } JObject roomStatus = new JObject(); var huddleRoom = room as EssentialsHuddleSpaceRoom; - //roomStatus.Add("isOn", huddleRoom.OnFeedback.BoolValue); roomStatus.Add("selectedSourceKey", huddleRoom.CurrentSourceInfoKey); JObject message = new JObject(); @@ -182,26 +182,24 @@ namespace PepperDash.Essentials { var dev = info.SourceDevice; - //if (dev is ISetTopBoxControls) - // (dev as ISetTopBoxControls).LinkButtons(TriList); - //if (dev is IChannel) - // (dev as IChannel).LinkButtons(TriList); - //if (dev is IColor) - // (dev as IColor).LinkButtons(TriList); + if (dev is ISetTopBoxControls) + (dev as ISetTopBoxControls).LinkActions(Parent); + if (dev is IChannel) + (dev as IChannel).LinkActions(Parent); + if (dev is IColor) + (dev as IColor).LinkActions(Parent); if (dev is IDPad) (dev as IDPad).LinkActions(Parent); - //if (dev is IDvr) - // (dev as IDvr).LinkButtons(TriList); - //if (dev is INumericKeypad) - // (dev as INumericKeypad).LinkButtons(TriList); - //if (dev is IPower) - // (dev as IPower).LinkButtons(TriList); - //if (dev is ITransport) - // (dev as ITransport).LinkButtons(TriList); + if (dev is IDvr) + (dev as IDvr).LinkActions(Parent); + if (dev is INumericKeypad) + (dev as INumericKeypad).LinkActions(Parent); + if (dev is IPower) + (dev as IPower).LinkActions(Parent); + if (dev is ITransport) + (dev as ITransport).LinkActions(Parent); } } - - } /// diff --git a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs index a89b7c7f..b0d1937e 100644 --- a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs +++ b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs @@ -24,7 +24,7 @@ namespace PepperDash.Essentials HttpClient Client; - Dictionary ActionDictionary = new Dictionary(); + Dictionary ActionDictionary = new Dictionary(StringComparer.InvariantCultureIgnoreCase); Dictionary PushedActions = new Dictionary(); @@ -233,7 +233,10 @@ namespace PepperDash.Essentials } else { - Debug.Console(0, this, "Response from server: {0}\n{1}", resp.Code, err); + if (resp != null) + Debug.Console(1, this, "Response from server: {0}\n{1}", resp.Code, err); + else + Debug.Console(1, this, "Null response received from server."); } } catch (Exception e) diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IChannelExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IChannelExtensions.cs new file mode 100644 index 00000000..d665bd2c --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IChannelExtensions.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class IChannelExtensions + { + public static void LinkActions(this IChannel dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "chanup", new PressAndHoldAction(dev.ChannelUp)); + controller.AddAction(prefix + "chandown", new PressAndHoldAction(dev.ChannelDown)); + controller.AddAction(prefix + "lastchan", new PressAndHoldAction(dev.LastChannel)); + controller.AddAction(prefix + "guide", new PressAndHoldAction(dev.Guide)); + controller.AddAction(prefix + "info", new PressAndHoldAction(dev.Info)); + controller.AddAction(prefix + "exit", new PressAndHoldAction(dev.Exit)); + } + + public static void UnlinkActions(this IChannel dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "chanup"); + controller.RemoveAction(prefix + "chandown"); + controller.RemoveAction(prefix + "lastchan"); + controller.RemoveAction(prefix + "guide"); + controller.RemoveAction(prefix + "info"); + controller.RemoveAction(prefix + "exit"); + } + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IColorExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IColorExtensions.cs new file mode 100644 index 00000000..e7e90471 --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IColorExtensions.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class IColorExtensions + { + public static void LinkActions(this IColor dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "red", new PressAndHoldAction(dev.Red)); + controller.AddAction(prefix + "green", new PressAndHoldAction(dev.Green)); + controller.AddAction(prefix + "yellow", new PressAndHoldAction(dev.Yellow)); + controller.AddAction(prefix + "blue", new PressAndHoldAction(dev.Blue)); + } + + public static void UnlinkActions(this IColor dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "red"); + controller.RemoveAction(prefix + "green"); + controller.RemoveAction(prefix + "yellow"); + controller.RemoveAction(prefix + "blue"); + } + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDPadExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDPadExtensions.cs index f6d3e0c1..294c9623 100644 --- a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDPadExtensions.cs +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDPadExtensions.cs @@ -6,7 +6,7 @@ using Crestron.SimplSharp; using PepperDash.Essentials.Core; using PepperDash.Core; -namespace PepperDash.Essentials +namespace PepperDash.Essentials.Room.Cotija { public static class IDPadExtensions { @@ -14,13 +14,13 @@ namespace PepperDash.Essentials { var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); - controller.AddAction(prefix + "up", new Action(dev.Up)); - controller.AddAction(prefix + "down", new Action(dev.Down)); - controller.AddAction(prefix + "left", new Action(dev.Left)); - controller.AddAction(prefix + "right", new Action(dev.Right)); - controller.AddAction(prefix + "select", new Action(dev.Select)); - controller.AddAction(prefix + "menu", new Action(dev.Menu)); - controller.AddAction(prefix + "exit", new Action(dev.Exit)); + controller.AddAction(prefix + "up", new PressAndHoldAction(dev.Up)); + controller.AddAction(prefix + "down", new PressAndHoldAction(dev.Down)); + controller.AddAction(prefix + "left", new PressAndHoldAction(dev.Left)); + controller.AddAction(prefix + "right", new PressAndHoldAction(dev.Right)); + controller.AddAction(prefix + "select", new PressAndHoldAction(dev.Select)); + controller.AddAction(prefix + "menu", new PressAndHoldAction(dev.Menu)); + controller.AddAction(prefix + "exit", new PressAndHoldAction(dev.Exit)); } public static void UnlinkActions(this IDPad dev, CotijaSystemController controller) diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDvrExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDvrExtensions.cs new file mode 100644 index 00000000..3909b540 --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IDvrExtensions.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class IDvrExtensions + { + public static void LinkActions(this IDvr dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "dvrlist", new PressAndHoldAction(dev.DvrList)); + controller.AddAction(prefix + "record", new PressAndHoldAction(dev.Record)); + } + + public static void UnlinkActions(this IDvr dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "dvrlist"); + controller.RemoveAction(prefix + "record"); + } + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/INumericExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/INumericExtensions.cs new file mode 100644 index 00000000..008b5b25 --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/INumericExtensions.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class INumericExtensions + { + public static void LinkActions(this INumericKeypad dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "num0", new PressAndHoldAction(dev.Digit0)); + controller.AddAction(prefix + "num1", new PressAndHoldAction(dev.Digit1)); + controller.AddAction(prefix + "num2", new PressAndHoldAction(dev.Digit2)); + controller.AddAction(prefix + "num3", new PressAndHoldAction(dev.Digit3)); + controller.AddAction(prefix + "num4", new PressAndHoldAction(dev.Digit4)); + controller.AddAction(prefix + "num5", new PressAndHoldAction(dev.Digit5)); + controller.AddAction(prefix + "num6", new PressAndHoldAction(dev.Digit6)); + controller.AddAction(prefix + "num7", new PressAndHoldAction(dev.Digit0)); + controller.AddAction(prefix + "num8", new PressAndHoldAction(dev.Digit0)); + controller.AddAction(prefix + "num9", new PressAndHoldAction(dev.Digit0)); + controller.AddAction(prefix + "dash", new PressAndHoldAction(dev.KeypadAccessoryButton1)); + controller.AddAction(prefix + "enter", new PressAndHoldAction(dev.KeypadAccessoryButton2)); +#warning Deal with the Accessory functions on the numpad later + } + + public static void UnlinkActions(this INumericKeypad dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "num0"); + controller.RemoveAction(prefix + "num1"); + controller.RemoveAction(prefix + "num2"); + controller.RemoveAction(prefix + "num3"); + controller.RemoveAction(prefix + "num4"); + controller.RemoveAction(prefix + "num5"); + controller.RemoveAction(prefix + "num6"); + controller.RemoveAction(prefix + "num7"); + controller.RemoveAction(prefix + "num8"); + controller.RemoveAction(prefix + "num9"); + controller.RemoveAction(prefix + "dash"); + controller.RemoveAction(prefix + "enter"); + } + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IPowerExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IPowerExtensions.cs new file mode 100644 index 00000000..ff986325 --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/IPowerExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class IPowerExtensions + { + public static void LinkActions(this IPower dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "poweron", new Action(dev.PowerOn)); + controller.AddAction(prefix + "poweroff", new Action(dev.PowerOff)); + controller.AddAction(prefix + "powertoggle", new Action(dev.PowerToggle)); + } + + public static void UnlinkActions(this IPower dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "poweron"); + controller.RemoveAction(prefix + "poweroff"); + controller.RemoveAction(prefix + "powertoggle"); + + } + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/ISetTopBoxControlsExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/ISetTopBoxControlsExtensions.cs new file mode 100644 index 00000000..14dc8e90 --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/ISetTopBoxControlsExtensions.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class ISetTopBoxControlsExtensions + { + public static void LinkActions(this ISetTopBoxControls dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "dvrlist", new PressAndHoldAction(dev.DvrList)); + controller.AddAction(prefix + "replay", new PressAndHoldAction(dev.Replay)); + } + + public static void UnlinkActions(this ISetTopBoxControls dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "dvrlist"); + controller.RemoveAction(prefix + "replay"); + } + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/ITransportExtensions.cs b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/ITransportExtensions.cs new file mode 100644 index 00000000..64af15b0 --- /dev/null +++ b/Essentials/PepperDashEssentials/Room/Cotija/DeviceTypeInterfaces/ITransportExtensions.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials.Room.Cotija +{ + public static class ITransportExtensions + { + public static void LinkActions(this ITransport dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.AddAction(prefix + "play", new PressAndHoldAction(dev.Play)); + controller.AddAction(prefix + "pause", new PressAndHoldAction(dev.Pause)); + controller.AddAction(prefix + "stop", new PressAndHoldAction(dev.Stop)); + controller.AddAction(prefix + "prevtrack", new PressAndHoldAction(dev.ChapPlus)); + controller.AddAction(prefix + "nexttrack", new PressAndHoldAction(dev.ChapMinus)); + controller.AddAction(prefix + "rewind", new PressAndHoldAction(dev.Rewind)); + controller.AddAction(prefix + "ffwd", new PressAndHoldAction(dev.FFwd)); + controller.AddAction(prefix + "record", new PressAndHoldAction(dev.Record)); + } + + public static void UnlinkActions(this ITransport dev, CotijaSystemController controller) + { + var prefix = string.Format(@"/device/{0}/", (dev as IKeyed).Key); + + controller.RemoveAction(prefix + "play"); + controller.RemoveAction(prefix + "pause"); + controller.RemoveAction(prefix + "stop"); + controller.RemoveAction(prefix + "prevtrack"); + controller.RemoveAction(prefix + "nexttrack"); + controller.RemoveAction(prefix + "rewind"); + controller.RemoveAction(prefix + "ffwd"); + controller.RemoveAction(prefix + "record"); + } + } +} \ No newline at end of file