From 2afa9df705ffb5d6e473861968da0e886825253b Mon Sep 17 00:00:00 2001 From: Jason DeVito Date: Tue, 12 Sep 2023 14:08:20 -0500 Subject: [PATCH] fix: removes HdPsXxx controller, propertiesConfig and join map --- PepperDashEssentials/ControlSystem.cs | 49 +- .../JoinMaps/HdPsXxxControllerJoinMap.cs | 190 ----- .../PepperDash_Essentials_Core.csproj | 1 - .../Chassis/HdPsXxxController.cs | 657 ------------------ .../Config/HdPsXxxPropertiesConfig.cs | 30 - .../PepperDash_Essentials_DM.csproj | 2 - 6 files changed, 28 insertions(+), 901 deletions(-) delete mode 100644 essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdPsXxxControllerJoinMap.cs delete mode 100644 essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs delete mode 100644 essentials-framework/Essentials DM/Essentials_DM/Config/HdPsXxxPropertiesConfig.cs diff --git a/PepperDashEssentials/ControlSystem.cs b/PepperDashEssentials/ControlSystem.cs index 0ebfd927..1bafbbac 100644 --- a/PepperDashEssentials/ControlSystem.cs +++ b/PepperDashEssentials/ControlSystem.cs @@ -392,45 +392,51 @@ namespace PepperDash.Essentials { Debug.Console(2, "Adding DmpsRoutingController for {0} to Device Manager.", this.ControllerPrompt); - var propertiesConfig = JsonConvert.DeserializeObject(devConf.Properties.ToString()) ?? - new DM.Config.DmpsRoutingPropertiesConfig(); + var propertiesConfig = JsonConvert.DeserializeObject(devConf.Properties.ToString()); - DeviceManager.AddDevice(DmpsRoutingController.GetDmpsRoutingController("processor-avRouting", this.ControllerPrompt, propertiesConfig)); + if(propertiesConfig == null) + propertiesConfig = new DM.Config.DmpsRoutingPropertiesConfig(); + + DeviceManager.AddDevice(DmpsRoutingController.GetDmpsRoutingController("processor-avRouting", this.ControllerPrompt, propertiesConfig)); } else if (this.ControllerPrompt.IndexOf("mpc3", StringComparison.OrdinalIgnoreCase) > -1) { - Debug.Console(2, "MPC3 processor type detected. Adding Mpc3TouchpanelController."); + Debug.Console(2, "MPC3 processor type detected. Adding Mpc3TouchpanelController."); - var butToken = devConf.Properties["buttons"]; - if (butToken == null) - { - Debug.Console(0, Debug.ErrorLogLevel.Error, - "Error: Unable to deserialize buttons collection for device: {0}", devConf.Key); + var butToken = devConf.Properties["buttons"]; + if (butToken == null) + { + Debug.Console(0, Debug.ErrorLogLevel.Error, + "Error: Unable to deserialize buttons collection for device: {0}", devConf.Key); continue; - } - - var buttons = butToken.ToObject>(); - var tpController = new Core.Touchpanels.Mpc3TouchpanelController( - string.Format("{0}-keypadButtons", devConf.Key), devConf.Name, Global.ControlSystem, buttons); + } - DeviceManager.AddDevice(tpController); + var buttons = butToken.ToObject>(); + var tpController = new Core.Touchpanels.Mpc3TouchpanelController( + string.Format("{0}-keypadButtons", devConf.Key), devConf.Name, Global.ControlSystem, buttons); + + DeviceManager.AddDevice(tpController); } else { Debug.Console(2, "************Processor is not DMPS type***************"); } + + continue; } // Try local factories first - var newDev = null ?? PepperDash.Essentials.Core.DeviceFactory.GetDevice(devConf); + IKeyed newDev = null; - if (newDev == null) - Debug.Console(0, Debug.ErrorLogLevel.Error, "ERROR: Cannot load unknown device type '{0}', key '{1}'.", - devConf.Type, devConf.Key); - else - DeviceManager.AddDevice(newDev); + if (newDev == null) + newDev = PepperDash.Essentials.Core.DeviceFactory.GetDevice(devConf); + + if (newDev != null) + DeviceManager.AddDevice(newDev); + else + Debug.Console(0, Debug.ErrorLogLevel.Error, "ERROR: Cannot load unknown device type '{0}', key '{1}'.", devConf.Type, devConf.Key); } catch (Exception e) { @@ -438,6 +444,7 @@ namespace PepperDash.Essentials } } Debug.Console(0, Debug.ErrorLogLevel.Notice, "All Devices Loaded."); + } diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdPsXxxControllerJoinMap.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdPsXxxControllerJoinMap.cs deleted file mode 100644 index 3f2901c9..00000000 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdPsXxxControllerJoinMap.cs +++ /dev/null @@ -1,190 +0,0 @@ -using System; -using PepperDash.Essentials.Core; - -namespace PepperDash_Essentials_Core.Bridges -{ - public class HdPsXxxControllerJoinMap : JoinMapBaseAdvanced - { - - #region Digital - - [JoinName("EnableAutoRoute")] - public JoinDataComplete EnableAutoRoute = new JoinDataComplete( - new JoinData - { - JoinNumber = 1, - JoinSpan = 1 - }, - new JoinMetadata - { - Description = "Enable Automatic Routing on Xx1 Switchers", - JoinCapabilities = eJoinCapabilities.ToFromSIMPL, - JoinType = eJoinType.Digital - }); - - - [JoinName("InputSync")] - public JoinDataComplete InputSync = new JoinDataComplete( - new JoinData - { - JoinNumber = 2, - JoinSpan = 8 - }, - new JoinMetadata - { - Description = "Device Input Sync", - JoinCapabilities = eJoinCapabilities.ToSIMPL, - JoinType = eJoinType.Digital - }); - - - [JoinName("EnableInputHdcp")] - public JoinDataComplete EnableInputHdcp = new JoinDataComplete( - new JoinData - { - JoinNumber = 11, - JoinSpan = 8 - }, - new JoinMetadata - { - Description = "Device Enable Input Hdcp", - JoinCapabilities = eJoinCapabilities.ToFromSIMPL, - JoinType = eJoinType.Digital - }); - - - [JoinName("DisableInputHdcp")] - public JoinDataComplete DisableInputHdcp = new JoinDataComplete( - new JoinData - { - JoinNumber = 21, - JoinSpan = 8 - }, - new JoinMetadata - { - Description = "Device Disnable Input Hdcp", - JoinCapabilities = eJoinCapabilities.ToFromSIMPL, - JoinType = eJoinType.Digital - }); - - - [JoinName("IsOnline")] - public JoinDataComplete IsOnline = new JoinDataComplete( - new JoinData - { - JoinNumber = 30, - JoinSpan = 1 - }, - new JoinMetadata - { - Description = "Device Onlne", - JoinCapabilities = eJoinCapabilities.ToSIMPL, - JoinType = eJoinType.Digital - }); - - #endregion - - - #region Analog - - [JoinName("OutputRoute")] - public JoinDataComplete OutputRoute = new JoinDataComplete( - new JoinData - { - JoinNumber = 11, - JoinSpan = 2 - }, - new JoinMetadata - { - Description = "Device Output Route Set/Get", - JoinCapabilities = eJoinCapabilities.ToFromSIMPL, - JoinType = eJoinType.Analog - }); - - #endregion - - - #region Serial - - [JoinName("Name")] - public JoinDataComplete Name = new JoinDataComplete( - new JoinData - { - JoinNumber = 1, - JoinSpan = 1 - }, - new JoinMetadata - { - Description = "Device Name", - JoinCapabilities = eJoinCapabilities.ToSIMPL, - JoinType = eJoinType.Serial - }); - - - [JoinName("InputName")] - public JoinDataComplete InputName = new JoinDataComplete( - new JoinData - { - JoinNumber = 2, - JoinSpan = 8 - }, - new JoinMetadata - { - Description = "Device Input Name", - JoinCapabilities = eJoinCapabilities.ToSIMPL, - JoinType = eJoinType.Serial - }); - - - [JoinName("OutputName")] - public JoinDataComplete OutputName = new JoinDataComplete( - new JoinData - { - JoinNumber = 11, - JoinSpan = 2 - }, - new JoinMetadata - { - Description = "Device Output Name", - JoinCapabilities = eJoinCapabilities.ToSIMPL, - JoinType = eJoinType.Serial - }); - - - [JoinName("OutputRoutedName")] - public JoinDataComplete OutputRoutedName = new JoinDataComplete( - new JoinData - { - JoinNumber = 16, - JoinSpan = 2 - }, - new JoinMetadata - { - Description = "Device Output Route Name", - JoinCapabilities = eJoinCapabilities.ToSIMPL, - JoinType = eJoinType.Serial - }); - - - #endregion - - /// - /// Constructor to use when instantiating this join map without inheriting from it - /// - /// Join this join map will start at - public HdPsXxxControllerJoinMap(uint joinStart) - : this(joinStart, typeof(HdPsXxxControllerJoinMap)) - { - } - - /// - /// Constructor to use when extending this Join map - /// - /// Join this join map will start at - /// Type of the child join map - protected HdPsXxxControllerJoinMap(uint joinStart, Type type) - : base(joinStart, type) - { - } - } -} \ No newline at end of file diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj index 0d9aa9bc..75d4626d 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj @@ -127,7 +127,6 @@ - diff --git a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs deleted file mode 100644 index d923949e..00000000 --- a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs +++ /dev/null @@ -1,657 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; -using Crestron.SimplSharpPro; -using Crestron.SimplSharpPro.DeviceSupport; -using Crestron.SimplSharpPro.DM; -using Newtonsoft.Json; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.Bridges; -using PepperDash.Essentials.Core.Config; -using PepperDash_Essentials_Core.Bridges; -using PepperDash_Essentials_DM.Config; - -namespace PepperDash_Essentials_DM.Chassis -{ - [Description("Wrapper class for all HdPsXxx switchers")] - public class HdPsXxxController : CrestronGenericBridgeableBaseDevice, IRoutingNumericWithFeedback, IHasFeedback - { - - private readonly HdPsXxx _chassis; - private readonly HdPs401 _chassis401; - private readonly HdPs621 _chassis621; - - public RoutingPortCollection InputPorts { get; private set; } - public RoutingPortCollection OutputPorts { get; private set; } - - public Dictionary InputNames { get; set; } - public Dictionary OutputNames { get; set; } - - public FeedbackCollection InputNameFeedbacks { get; private set; } - public FeedbackCollection InputHdcpEnableFeedback { get; private set; } - - public FeedbackCollection OutputNameFeedbacks { get; private set; } - public FeedbackCollection OutputRouteNameFeedback { get; private set; } - - public FeedbackCollection VideoInputSyncFeedbacks { get; private set; } - public FeedbackCollection VideoOutputRouteFeedbacks { get; private set; } - - public StringFeedback DeviceNameFeedback { get; private set; } - public BoolFeedback AutoRouteFeedback { get; private set; } - - public event EventHandler NumericSwitchChange; - - /// - /// Constructor - /// - /// - /// - /// HdPs401 device instance - /// - public HdPsXxxController(string key, string name, HdPsXxx chassis, HdPsXxxPropertiesConfig props) - : base(key, name, chassis) - { - _chassis = chassis; - Name = name; - - if (props == null) - { - Debug.Console(1, this, "HdPsXxxController properties are null, failed to build device"); - return; - } - - InputPorts = new RoutingPortCollection(); - InputNameFeedbacks = new FeedbackCollection(); - InputHdcpEnableFeedback = new FeedbackCollection(); - InputNames = new Dictionary(); - //InputNames = props.Inputs; - - OutputPorts = new RoutingPortCollection(); - OutputNameFeedbacks = new FeedbackCollection(); - OutputRouteNameFeedback = new FeedbackCollection(); - OutputNames = new Dictionary(); - //OutputNames = props.Outputs; - - VideoInputSyncFeedbacks = new FeedbackCollection(); - VideoOutputRouteFeedbacks = new FeedbackCollection(); - - if (_chassis.NumberOfOutputs == 1) - { - if (_chassis is HdPs401) - _chassis401 = _chassis as HdPs401; - if (_chassis is HdPs621) - _chassis621 = _chassis as HdPs621; - - AutoRouteFeedback = new BoolFeedback(() => _chassis401.PriorityRouteOnFeedback.BoolValue); - } - - SetupInputs(props.Inputs); - SetupOutputs(props.Outputs); - - AddPostActivationAction(AddFeedbackCollecitons); - } - - // input setup - private void SetupInputs(Dictionary dict) - { - if (dict == null) - { - Debug.Console(1, this, "Failed to setup inputs, properties are null"); - return; - } - foreach (var kvp in dict) - { - Debug.Console(1, this, "props.Input[{0}]: {1}", kvp.Key, kvp.Value); - } - InputNames = dict; - - for (uint i = 1; i <= _chassis.NumberOfInputs; i++) - { - var index = i; - var name = string.IsNullOrEmpty(InputNames[index]) ? string.Format("Input {0}", index) : InputNames[index]; - var input = _chassis.Inputs[index]; - var hdmiInput = _chassis.HdmiInputs[index]; - var dmLiteInput = _chassis.DmLiteInputs[index]; - - InputNameFeedbacks.Add(new StringFeedback(name, () => InputNames[index])); - - // TODO [ ] verify which input type is needed - input.Name.StringValue = name; - hdmiInput.Name.StringValue = name; - dmLiteInput.Name.StringValue = name; - - var port = new RoutingInputPort(name, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, input, this) - { - FeedbackMatchObject = input - }; - InputPorts.Add(port); - - InputHdcpEnableFeedback.Add(new BoolFeedback(name, () => hdmiInput.InputPort.HdcpSupportOnFeedback.BoolValue)); - - VideoInputSyncFeedbacks.Add(new BoolFeedback(name, () => input.VideoDetectedFeedback.BoolValue)); - } - - _chassis.DMInputChange += _chassis_InputChange; - } - - // output setup - private void SetupOutputs(Dictionary dict) - { - if (dict == null) - { - Debug.Console(1, this, "Failed to setup outputs, properties are null"); - return; - } - foreach (var kvp in dict) - { - Debug.Console(1, this, "props.Output[{0}]: {1}", kvp.Key, kvp.Value); - } - OutputNames = dict; - - for (uint i = 1; i <= _chassis.NumberOfOutputs; i++) - { - var index = i; - var name = string.IsNullOrEmpty(OutputNames[index]) ? string.Format("Output {0}", index) : OutputNames[index]; - var output = _chassis.Outputs[index]; - var hdmiDmLiteOutput = _chassis.HdmiDmLiteOutputs[index]; - - OutputNameFeedbacks.Add(new StringFeedback(name, () => OutputNames[index])); - - // TODO [ ] verify which output type is needed - output.Name.StringValue = name; - hdmiDmLiteOutput.Name.StringValue = name; - - var port = new RoutingOutputPort(name, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, output, this) - { - FeedbackMatchObject = output - }; - OutputPorts.Add(port); - - OutputRouteNameFeedback.Add(new StringFeedback(name, () => output.VideoOutFeedback.NameFeedback.StringValue)); - - VideoOutputRouteFeedbacks.Add(new IntFeedback(name, () => output.VideoOutFeedback == null ? 0 : (int)output.VideoOutFeedback.Number)); - } - - _chassis.DMOutputChange += _chassis_OutputChange; - } - - - #region BridgeLinking - - /// - /// Link device to API - /// - /// - /// - /// - /// - public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge) - { - var joinMap = new HdPsXxxControllerJoinMap(joinStart); - - if (bridge != null) - { - bridge.AddJoinMap(Key, joinMap); - } - else - { - Debug.Console(0, this, "Please update config to use 'eiscApiAdvanced' to get all join map features for this device"); - } - - IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]); - DeviceNameFeedback.LinkInputSig(trilist.StringInput[joinMap.Name.JoinNumber]); - - _chassis.OnlineStatusChange += _chassis_OnlineStatusChange; - - if (_chassis401 != null) LinkChassis401ToApi(trilist, joinMap); - - if (_chassis621 != null) LinkChassis621ToApi(trilist, joinMap); - - LinkChassisInputsToApi(trilist, joinMap); - LinkChassisOutputsToApi(trilist, joinMap); - - trilist.OnlineStatusChange += (sender, args) => - { - if (!args.DeviceOnLine) return; - }; - } - - - // links inputs to API - private void LinkChassisInputsToApi(BasicTriList trilist, HdPsXxxControllerJoinMap joinMap) - { - for (uint i = 1; i <= _chassis.NumberOfInputs; i++) - { - var input = i; - var inputName = InputNames[input]; - var indexWithOffset = input - 1; - - trilist.SetSigTrueAction(joinMap.EnableInputHdcp.JoinNumber + indexWithOffset, () => EnableHdcp(input)); - trilist.SetSigTrueAction(joinMap.DisableInputHdcp.JoinNumber + indexWithOffset, () => DisableHdcp(input)); - - InputHdcpEnableFeedback[inputName].LinkInputSig(trilist.BooleanInput[joinMap.EnableInputHdcp.JoinNumber + indexWithOffset]); - InputHdcpEnableFeedback[inputName].LinkComplementInputSig(trilist.BooleanInput[joinMap.EnableInputHdcp.JoinNumber + indexWithOffset]); - - VideoInputSyncFeedbacks[inputName].LinkInputSig(trilist.BooleanInput[joinMap.InputSync.JoinNumber + indexWithOffset]); - - InputNameFeedbacks[inputName].LinkInputSig(trilist.StringInput[joinMap.InputName.JoinNumber + indexWithOffset]); - } - } - - - // links outputs to API - private void LinkChassisOutputsToApi(BasicTriList trilist, HdPsXxxControllerJoinMap joinMap) - { - for (uint i = 1; i <= _chassis.NumberOfOutputs; i++) - { - var output = i; - var outputName = OutputNames[output]; - var indexWithOffset = output - 1; - - trilist.SetUShortSigAction(joinMap.OutputRoute.JoinNumber + indexWithOffset, (a) => - ExecuteNumericSwitch(a, (ushort) output, eRoutingSignalType.AudioVideo)); - - OutputNameFeedbacks[outputName].LinkInputSig(trilist.StringInput[joinMap.OutputName.JoinNumber + indexWithOffset]); - OutputRouteNameFeedback[outputName].LinkInputSig(trilist.StringInput[joinMap.OutputRoutedName.JoinNumber + indexWithOffset]); - - VideoOutputRouteFeedbacks[outputName].LinkInputSig(trilist.UShortInput[joinMap.OutputRoute.JoinNumber + indexWithOffset]); - } - } - - - // links HdPs401 chassis to API - private void LinkChassis401ToApi(BasicTriList trilist, HdPsXxxControllerJoinMap joinMap) - { - trilist.SetSigTrueAction(joinMap.EnableAutoRoute.JoinNumber, () => _chassis401.AutoRouteOn()); - trilist.SetSigFalseAction(joinMap.EnableAutoRoute.JoinNumber, () => _chassis401.AutoRouteOff()); - - AutoRouteFeedback.LinkInputSig(trilist.BooleanInput[joinMap.EnableAutoRoute.JoinNumber]); - } - - - // links HdPs621 chassis to API - private void LinkChassis621ToApi(BasicTriList trilist, HdPsXxxControllerJoinMap joinMap) - { - trilist.SetSigTrueAction(joinMap.EnableAutoRoute.JoinNumber, () => _chassis621.AutoRouteOn()); - trilist.SetSigFalseAction(joinMap.EnableAutoRoute.JoinNumber, () => _chassis621.AutoRouteOff()); - - AutoRouteFeedback.LinkInputSig(trilist.BooleanInput[joinMap.EnableAutoRoute.JoinNumber]); - } - - - #endregion - - - /// - /// Executes a device switch using objects - /// - /// - /// - /// - public void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType signalType) - { - var input = inputSelector as HdPsXxxHdmiInput; - var output = outputSelector as HdPsXxxHdmiOutput; - - Debug.Console(2, this, "ExecuteSwitch: input={0}, output={1}", input, output); - - if (output == null) - { - Debug.Console(0, this, "Unable to make switch, output selector is not HdPsXxxHdmiOutput"); - return; - } - - // TODO [ ] Validate if sending the same input toggles the switch - var current = output.VideoOut; - if (current != input) - output.VideoOut = input; - } - - - /// - /// Executes a device switch using numeric values - /// - /// - /// - /// - public void ExecuteNumericSwitch(ushort inputSelector, ushort outputSelector, eRoutingSignalType signalType) - { - var input = inputSelector == 0 ? null : _chassis.Inputs[inputSelector]; - var output = _chassis.Outputs[outputSelector]; - - Debug.Console(2, this, "ExecuteNumericSwitch: input={0}, output={1}", input, output); - - ExecuteSwitch(input, output, signalType); - } - - - /// - /// Enables Hdcp on the provided port - /// - /// - public void EnableHdcp(uint port) - { - if (port <= 0 || port > _chassis.NumberOfInputs) return; - - _chassis.HdmiInputs[port].InputPort.HdcpSupportOn(); - InputHdcpEnableFeedback[InputNames[port]].FireUpdate(); - } - - - /// - /// Disables Hdcp on the provided port - /// - /// - public void DisableHdcp(uint port) - { - if (port <= 0 || port > _chassis.NumberOfInputs) return; - - _chassis.HdmiInputs[port].InputPort.HdcpSupportOff(); - InputHdcpEnableFeedback[InputNames[port]].FireUpdate(); - } - - - /// - /// Enables switcher auto route - /// - public void EnableAutoRoute() - { - if (_chassis.NumberOfInputs != 1) return; - - if (_chassis401 != null) - { - _chassis401.AutoRouteOn(); - } - - if (_chassis621 != null) - { - _chassis621.AutoRouteOn(); - } - } - - - /// - /// Disables switcher auto route - /// - public void DisableAutoRoute() - { - if (_chassis.NumberOfInputs != 1) return; - - if (_chassis401 != null) - { - _chassis401.AutoRouteOff(); - } - - if (_chassis621 != null) - { - _chassis621.AutoRouteOff(); - } - } - - #region Events - - - // _chassis online/offline event - private void _chassis_OnlineStatusChange(GenericBase currentDevice, - OnlineOfflineEventArgs args) - { - IsOnline.FireUpdate(); - - if (!args.DeviceOnLine) return; - - foreach (var feedback in Feedbacks) - { - feedback.FireUpdate(); - } - } - - - // _chassis input change event - private void _chassis_InputChange(Switch device, DMInputEventArgs args) - { - var eventId = args.EventId; - - switch (eventId) - { - case DMInputEventIds.VideoDetectedEventId: - { - Debug.Console(1, this, "Event ID {0}: Updating VideoInputSyncFeedbacks", eventId); - foreach (var item in VideoInputSyncFeedbacks) - { - item.FireUpdate(); - } - break; - } - case DMInputEventIds.InputNameFeedbackEventId: - case DMInputEventIds.InputNameEventId: - case DMInputEventIds.NameFeedbackEventId: - { - Debug.Console(1, this, "Event ID {0}: Updating name feedbacks", eventId); - - var input = args.Number; - var name = _chassis.HdmiInputs[input].NameFeedback.StringValue; - - Debug.Console(1, this, "Input {0} Name {1}", input, name); - break; - } - default: - { - Debug.Console(1, this, "Uhandled DM Input Event ID {0}", eventId); - break; - } - } - } - - - // _chassis output change event - private void _chassis_OutputChange(Switch device, DMOutputEventArgs args) - { - if (args.EventId != DMOutputEventIds.VideoOutEventId) return; - - var output = args.Number; - - var input = _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback == null - ? 0 - : _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback.Number; - - var outputName = OutputNames[output]; - - var feedback = VideoOutputRouteFeedbacks[outputName]; - if (feedback == null) return; - - var inputPort = InputPorts.FirstOrDefault( - p => p.FeedbackMatchObject == _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback); - - var outputPort = OutputPorts.FirstOrDefault( - p => p.FeedbackMatchObject == _chassis.HdmiDmLiteOutputs[output]); - - feedback.FireUpdate(); - - OnSwitchChange(new RoutingNumericEventArgs( - output, input, outputPort, inputPort, eRoutingSignalType.AudioVideo)); - } - - - /// - /// Raise an event when the status of a switch object changes. - /// - /// Argumetns defined as IKeyName sender, output, input, & eRoutingSignalType - private void OnSwitchChange(RoutingNumericEventArgs args) - { - var newEvent = NumericSwitchChange; - if (newEvent != null) newEvent(this, args); - } - - - #endregion - - - #region FeedbacksAndFeedbackCollections - - - /// - /// Add feedback colleciton arrays to feedback collections - /// - /// BoolFeedback[] arrays - public void AddCollectionsToList(params FeedbackCollection[] feedbackCollections) - { - foreach (var item in feedbackCollections.SelectMany(feedbackCollection => feedbackCollections)) - { - AddCollectionsToList(item); - } - } - - - /// - /// Add feedback colleciton arrays to feedback collections - /// - /// IntFeedback[] arrays - public void AddCollectionsToList(params FeedbackCollection[] feedbackCollections) - { - foreach (var item in feedbackCollections.SelectMany(feedbackCollection => feedbackCollections)) - { - AddCollectionsToList(item); - } - } - - - /// - /// Add feedback colleciton arrays to feedback collections - /// - /// StringFeedback[] arrays - public void AddCollectionsToList(params FeedbackCollection[] feedbackCollections) - { - foreach (var item in feedbackCollections.SelectMany(feedbackCollection => feedbackCollections)) - { - AddCollectionsToList(item); - } - } - - - /// - /// Adds feedback colleciton to feedback collections - /// - /// BoolFeedback - public void AddCollectionToList(FeedbackCollection feedbackCollection) - { - foreach (var item in feedbackCollection.Where(item => item != null)) - { - AddFeedbackToList(item); - } - } - - - /// - /// Adds feedback colleciton to feedback collections - /// - /// IntFeedback - public void AddCollectionToList(FeedbackCollection feedbackCollection) - { - foreach (var item in feedbackCollection.Where(item => item != null)) - { - AddFeedbackToList(item); - } - } - - - /// - /// Adds feedback colleciton to feedback collections - /// - /// StringFeedback - public void AddCollectionToList(FeedbackCollection feedbackCollection) - { - foreach (var item in feedbackCollection.Where(item => item != null)) - { - AddFeedbackToList(item); - } - } - - - /// - /// Adds individual feedbacks to feedback collection - /// - /// Feedback - public void AddFeedbackToList(PepperDash.Essentials.Core.Feedback fb) - { - if (fb == null || Feedbacks.Contains(fb)) return; - - Feedbacks.Add(fb); - } - - - /// - /// Adds provided feedbacks to feedback collection list - /// - public void AddFeedbackCollecitons() - { - AddFeedbackToList(DeviceNameFeedback); - AddCollectionsToList(VideoInputSyncFeedbacks, InputHdcpEnableFeedback); - AddCollectionsToList(VideoOutputRouteFeedbacks); - AddCollectionsToList(InputNameFeedbacks, OutputNameFeedbacks, OutputRouteNameFeedback); - } - - - #endregion - - - #region Factory - - - public class HdSp401ControllerFactory : EssentialsDeviceFactory - { - public HdSp401ControllerFactory() - { - TypeNames = new List() { "hdps401", "hdps402", "hdps621", "hdps622" }; - } - public override EssentialsDevice BuildDevice(DeviceConfig dc) - { - Debug.Console(1, "Factory Attempting to create new HD-PSXxx device"); - - var props = JsonConvert.DeserializeObject(dc.Properties.ToString()); - if (props == null) - { - Debug.Console(1, "Factory failed to create new HD-PSXxx device, properties config was null"); - return null; - } - - var key = dc.Key; - var name = dc.Name; - var type = dc.Type.ToLower(); - var control = props.Control; - var ipid = control.IpIdInt; - //var address = control.TcpSshProperties.Address; - - switch (type) - { - case ("hdps401"): - { - return new HdPsXxxController(key, name, new HdPs401(ipid, Global.ControlSystem), props); - } - case ("hdps402"): - { - return new HdPsXxxController(key, name, new HdPs402(ipid, Global.ControlSystem), props); - } - case ("hdps621"): - { - return new HdPsXxxController(key, name, new HdPs621(ipid, Global.ControlSystem), props); - } - case ("hdps622"): - { - return new HdPsXxxController(key, name, new HdPs622(ipid, Global.ControlSystem), props); - } - default: - { - Debug.Console(1, "Factory failed to create new {0} device", type); - return null; - } - } - } - } - - - #endregion - } -} \ No newline at end of file diff --git a/essentials-framework/Essentials DM/Essentials_DM/Config/HdPsXxxPropertiesConfig.cs b/essentials-framework/Essentials DM/Essentials_DM/Config/HdPsXxxPropertiesConfig.cs deleted file mode 100644 index c02fc511..00000000 --- a/essentials-framework/Essentials DM/Essentials_DM/Config/HdPsXxxPropertiesConfig.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json; -using PepperDash.Core; -using PepperDash.Essentials.DM.Config; - -namespace PepperDash_Essentials_DM.Config -{ - public class HdPsXxxPropertiesConfig - { - [JsonProperty("control")] - public ControlPropertiesConfig Control { get; set; } - - [JsonProperty("inputs")] - //public Dictionary Inputs { get; set; } - public Dictionary Inputs { get; set; } - - [JsonProperty("outputs")] - //public Dictionary Outputs { get; set; } - public Dictionary Outputs { get; set; } - - public HdPsXxxPropertiesConfig() - { - //Inputs = new Dictionary(); - //Outputs = new Dictionary(); - - Inputs = new Dictionary(); - Outputs = new Dictionary(); - } - } -} \ No newline at end of file diff --git a/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj b/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj index 0011c305..adfddbe3 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj +++ b/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj @@ -104,8 +104,6 @@ - -