From a71e9913833344fab5f27d10998bd1d2f14dbad8 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 22 Sep 2017 15:40:08 -0600 Subject: [PATCH] set up program to load Cisco Codec from config, not just manually --- .../DSP/BiampTesira/BiampTesiraForteDsp.cs | 2 +- .../Factory/DeviceFactory.cs | 48 +++++++++++-------- .../VideoCodec/CiscoCodec/CiscoCodec.cs | 13 ++--- .../VideoCodec/CiscoCodec/xConfiguration.cs | 5 +- .../VideoCodec/CiscoCodec/xEvent.cs | 5 +- .../VideoCodec/CiscoCodec/xStatus.cs | 4 +- .../PepperDashEssentials/ControlSystem.cs | 8 ++-- 7 files changed, 52 insertions(+), 33 deletions(-) diff --git a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs index 5ce7f3a8..9ecabde9 100644 --- a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs +++ b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs @@ -17,10 +17,10 @@ namespace PepperDash.Essentials.Devices.Common.DSP // Verbose on subscriptions? + // Example subscription feedback responses // ! "publishToken":"name" "value":-77.0 // ! "myLevelName" -77 - public class BiampTesiraForteDsp : DspBase { public IBasicCommunication Communication { get; private set; } diff --git a/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs b/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs index 361697da..e8dedd90 100644 --- a/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs +++ b/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs @@ -10,7 +10,8 @@ using PepperDash.Core; using PepperDash.Essentials.Core; using PepperDash.Essentials.Core.Config; -using PepperDash.Essentials.Devices.Common.DSP; +using PepperDash.Essentials.Devices.Common.DSP; +using PepperDash.Essentials.Devices.Common.VideoCodec; using PepperDash.Essentials.Devices.Common; @@ -104,25 +105,32 @@ namespace PepperDash.Essentials.Devices.Common { return new PepperDash.Essentials.Devices.Common.VideoCodec .MockVC(key, name); - } - - else if (groupName == "settopbox") //(typeName == "irstbbase") - { - var irCont = IRPortHelper.GetIrOutputPortController(dc); - var config = dc.Properties.ToObject(); - var stb = new IRSetTopBoxBase(key, name, irCont, config); - - //stb.HasDvr = properties.Value("hasDvr"); - var listName = properties.Value("presetsList"); - if (listName != null) - stb.LoadPresets(listName); - return stb; - } - - else if (typeName == "roku") - { - var irCont = IRPortHelper.GetIrOutputPortController(dc); - return new Roku2(key, name, irCont); + } + + else if (typeName == "ciscocodec") + { + var comm = CommFactory.CreateCommForDevice(dc); + var props = JsonConvert.DeserializeObject(properties.ToString()); + return new PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoCodec(key, name, comm, props); + } + + else if (groupName == "settopbox") //(typeName == "irstbbase") + { + var irCont = IRPortHelper.GetIrOutputPortController(dc); + var config = dc.Properties.ToObject(); + var stb = new IRSetTopBoxBase(key, name, irCont, config); + + //stb.HasDvr = properties.Value("hasDvr"); + var listName = properties.Value("presetsList"); + if (listName != null) + stb.LoadPresets(listName); + return stb; + } + + else if (typeName == "roku") + { + var irCont = IRPortHelper.GetIrOutputPortController(dc); + return new Roku2(key, name, irCont); } return null; diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoCodec.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoCodec.cs index 5214c41f..080dc66b 100644 --- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoCodec.cs +++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoCodec.cs @@ -149,7 +149,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco int PresentationSource; - string PhoneBookMode; + string PhonebookMode = "Local"; // Default to Local + + int PhonebookResultsLimit = 255; // Could be set later by config. // Constructor for IBasicCommunication public CiscoCodec(string key, string name, IBasicCommunication comm, CiscoCodecPropertiesConfig props ) @@ -173,7 +175,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco DeviceManager.AddDevice(CommunicationMonitor); - PhoneBookMode = props.PhonebookMode; + PhonebookMode = props.PhonebookMode; SyncState = new CodecSyncState(key + "--sync"); @@ -218,7 +220,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco //SendText("xCommand Bookings List Days: 1 DayOffset: 0"); // Get Phonebook (determine local/corporate from config, and set results limit) - //SendText("xCommand Phonebook Search PhonebookType: {0} ContactType: Folder Limit: {0}", PhonebookType, PhonebookResultsLimit); + SendText(string.Format("xCommand Phonebook Search PhonebookType: {0} ContactType: Folder Limit: {1}", PhonebookMode, PhonebookResultsLimit)); } /// @@ -237,6 +239,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco socket.ConnectionChange += new EventHandler(socket_ConnectionChange); } + CommunicationMonitor.Start(); + InputPorts.Add(new RoutingInputPort(RoutingPortNames.HdmiIn1, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, new Action(SelectPresentationSource1), this)); InputPorts.Add(new RoutingInputPort(RoutingPortNames.HdmiIn2, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, new Action(SelectPresentationSource2), this)); @@ -503,7 +507,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco } } - /// /// Evaluates an event received from the codec /// @@ -534,8 +537,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco (selector as Action)(); } - //protected Func InCallFeedbackFunc { get { return () => false; } } - protected override Func IncomingCallFeedbackFunc { get { return () => false; } } /// diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xConfiguration.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xConfiguration.cs index 530cb791..53be2fe3 100644 --- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xConfiguration.cs +++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xConfiguration.cs @@ -5,7 +5,10 @@ using System.Text; using Crestron.SimplSharp; namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco -{ +{ + /// + /// This class exists to capture serialized data sent back by a Cisco codec in JSON output mode + /// public class CiscoCodecConfiguration { public class DefaultVolume diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xEvent.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xEvent.cs index d66974b5..884b166c 100644 --- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xEvent.cs +++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xEvent.cs @@ -5,7 +5,10 @@ using System.Text; using Crestron.SimplSharp; namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco -{ +{ + /// + /// This class exists to capture serialized data sent back by a Cisco codec in JSON output mode + /// public class CiscoCodecEvents { public class CauseValue diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xStatus.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xStatus.cs index 5cb5abb5..4068f720 100644 --- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xStatus.cs +++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/xStatus.cs @@ -7,6 +7,9 @@ using Crestron.SimplSharp.CrestronXml.Serialization; namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { + /// + /// This class exists to capture serialized data sent back by a Cisco codec in JSON output mode + /// public class CiscoCodecStatus { // Helper Classes for Proerties @@ -1634,7 +1637,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco public string Value { get; set; } } - public class FacilityServiceId { public string Value { get; set; } diff --git a/Essentials/PepperDashEssentials/ControlSystem.cs b/Essentials/PepperDashEssentials/ControlSystem.cs index ba15d68c..c2b153ac 100644 --- a/Essentials/PepperDashEssentials/ControlSystem.cs +++ b/Essentials/PepperDashEssentials/ControlSystem.cs @@ -29,8 +29,8 @@ namespace PepperDash.Essentials /// public override void InitializeSystem() { - //CrestronConsole.AddNewConsoleCommand(s => GoWithLoad(), "go", "Reloads configuration file", - // ConsoleAccessLevelEnum.AccessOperator); + CrestronConsole.AddNewConsoleCommand(s => GoWithLoad(), "go", "Reloads configuration file", + ConsoleAccessLevelEnum.AccessOperator); //CrestronConsole.AddNewConsoleCommand(s => TearDown(), "ungo", "Unloads configuration file", // ConsoleAccessLevelEnum.AccessOperator); CrestronConsole.AddNewConsoleCommand(s => @@ -40,7 +40,7 @@ namespace PepperDash.Essentials }, "listtielines", "Prints out all tie lines", ConsoleAccessLevelEnum.AccessOperator); - GoWithLoad(); + //GoWithLoad(); } /// @@ -128,6 +128,7 @@ namespace PepperDash.Essentials } // CODEC TESTING + /* try { GenericSshClient TestCodecClient = new GenericSshClient("TestCodec-1--SshClient", "10.11.50.135", 22, "crestron", "2H3Zu&OvgXp6"); @@ -149,6 +150,7 @@ namespace PepperDash.Essentials { Debug.Console(0, "Error in something Neil is working on ;) \r{0}", e); } + */ // CODEC TESTING }