From 533ca05ac20f1257df85be6aaabf97fd2fe06d9c Mon Sep 17 00:00:00 2001 From: Jason DeVito Date: Thu, 14 Dec 2023 12:43:46 -0600 Subject: [PATCH 1/3] feat: adds additional dm input/output event cases to event handlers --- .../Chassis/HdPsXxxController.cs | 146 ++++++++++++------ 1 file changed, 99 insertions(+), 47 deletions(-) diff --git a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs index 6b0f8520..45510a88 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs +++ b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs @@ -88,7 +88,7 @@ namespace PepperDash_Essentials_DM.Chassis var audioDevice = new HdPsXxxOutputAudioController(Key, item.Number, _chassis); Debug.Console(2, this, "Adding HdPsXxxOutputAudioController '{0}' for output '{1}'", audioDevice.Key, item.Number); DeviceManager.AddDevice(audioDevice); - } + } foreach (var item in _chassis.AnalogAuxiliaryMixer) { var audioDevice = new HdPsXxxAnalogAuxMixerController(Key, item.MixerNumber, _chassis); @@ -111,7 +111,7 @@ namespace PepperDash_Essentials_DM.Chassis Debug.Console(1, this, "Failed to setup inputs, properties are null"); return; } - + // iterate through HDMI inputs foreach (var item in _chassis.HdmiInputs) { @@ -124,7 +124,7 @@ namespace PepperDash_Essentials_DM.Chassis input.Name.StringValue = name; - InputNameFeedbacks.Add(new StringFeedback(index.ToString(CultureInfo.InvariantCulture), + InputNameFeedbacks.Add(new StringFeedback(index.ToString(CultureInfo.InvariantCulture), () => InputNames[index])); var port = new RoutingInputPort(key, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, input, this) @@ -134,10 +134,10 @@ namespace PepperDash_Essentials_DM.Chassis Debug.Console(1, this, "Adding Input port: {0} - {1}", port.Key, name); InputPorts.Add(port); - InputHdcpEnableFeedback.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), + InputHdcpEnableFeedback.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), () => input.InputPort.HdcpSupportOnFeedback.BoolValue)); - VideoInputSyncFeedbacks.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), + VideoInputSyncFeedbacks.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), () => input.VideoDetectedFeedback.BoolValue)); } @@ -147,13 +147,13 @@ namespace PepperDash_Essentials_DM.Chassis var input = item; var index = item.Number; var key = string.Format("dmLiteIn{0}", index); - var name = string.IsNullOrEmpty(InputNames[index]) - ? string.Format("DM Input {0}", index) + var name = string.IsNullOrEmpty(InputNames[index]) + ? string.Format("DM Input {0}", index) : InputNames[index]; input.Name.StringValue = name; - InputNameFeedbacks.Add(new StringFeedback(index.ToString(CultureInfo.InvariantCulture), + InputNameFeedbacks.Add(new StringFeedback(index.ToString(CultureInfo.InvariantCulture), () => InputNames[index])); var port = new RoutingInputPort(key, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, input, this) @@ -163,10 +163,10 @@ namespace PepperDash_Essentials_DM.Chassis Debug.Console(0, this, "Adding Input port: {0} - {1}", port.Key, name); InputPorts.Add(port); - InputHdcpEnableFeedback.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), + InputHdcpEnableFeedback.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), () => input.InputPort.HdcpSupportOnFeedback.BoolValue)); - VideoInputSyncFeedbacks.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), + VideoInputSyncFeedbacks.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), () => input.VideoDetectedFeedback.BoolValue)); } @@ -186,10 +186,10 @@ namespace PepperDash_Essentials_DM.Chassis { var output = item; var index = item.Number; - var name = string.IsNullOrEmpty(OutputNames[index]) - ? string.Format("Port {0}", index) + var name = string.IsNullOrEmpty(OutputNames[index]) + ? string.Format("Port {0}", index) : OutputNames[index]; - + output.Name.StringValue = name; var hdmiKey = string.Format("hdmiOut{0}", index); @@ -209,11 +209,11 @@ namespace PepperDash_Essentials_DM.Chassis }; Debug.Console(1, this, "Adding Port port: {0} - {1}", dmLitePort.Key, name); OutputPorts.Add(dmLitePort); - - OutputRouteNameFeedback.Add(new StringFeedback(index.ToString(CultureInfo.InvariantCulture), - () => output.VideoOutFeedback.NameFeedback.StringValue)); - VideoOutputRouteFeedbacks.Add(new IntFeedback(index.ToString(CultureInfo.InvariantCulture), + OutputRouteNameFeedback.Add(new StringFeedback(index.ToString(CultureInfo.InvariantCulture), + () => output.VideoOutFeedback.NameFeedback.StringValue)); + + VideoOutputRouteFeedbacks.Add(new IntFeedback(index.ToString(CultureInfo.InvariantCulture), () => output.VideoOutFeedback == null ? 0 : (int)output.VideoOutFeedback.Number)); } /* @@ -352,8 +352,8 @@ Selector: {4} public void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType signalType) { var input = inputSelector as HdPsXxxInput; - var output = outputSelector as HdPsXxxOutput; - + var output = outputSelector as HdPsXxxOutput; + Debug.Console(2, this, "ExecuteSwitch: input={0}, output={1}", input, output); if (output == null) @@ -456,24 +456,58 @@ Selector: {4} // _chassis input change event private void _chassis_InputChange(Switch device, DMInputEventArgs args) { - var eventId = args.EventId; - - switch (eventId) + switch (args.EventId) { + case DMInputEventIds.RemoteTransmitterDetectedEventId: + { + // signal found on HD-PSXxx > Inputs > Inputs DM Lite X + Debug.Console(2, this, "{0} DM Input Event ID {1}-RemoteTransmitterDetected | Number {2}", + device.ToString(), args.EventId, args.Number); + break; + } + case DMInputEventIds.SourceSyncEventId: + { + // signal found on HD-PSXxx > Inputs > HDMI/DM Lite X + Debug.Console(1, this, "{0} DM Input Event ID {1}-SourceSync | Number {2}: Updating VideoInputSyncFeedbacks", + device.ToString(), args.EventId, args.Number); + + var input = args.Number; + + var feedback = VideoInputSyncFeedbacks[(int)input]; + if (feedback == null) return; + + feedback.FireUpdate(); + + //foreach (var item in VideoInputSyncFeedbacks) + //{ + // item.FireUpdate(); + //} + break; + } case DMInputEventIds.VideoDetectedEventId: { - Debug.Console(1, this, "Event ID {0}: Updating VideoInputSyncFeedbacks", eventId); - foreach (var item in VideoInputSyncFeedbacks) - { - item.FireUpdate(); - } + Debug.Console(1, this, "{0} DM Input Event ID {1}-VideoDetected | Number {2}: Updating VideoInputSyncFeedbacks", + device.ToString(), args.EventId, args.Number); + + var input = args.Number; + + var feedback = VideoInputSyncFeedbacks[(int) input]; + if (feedback == null) return; + + feedback.FireUpdate(); + + //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); + Debug.Console(1, this, "{0} DM Input Event ID {1}-Name | Number {2}: Updating name feedbacks", + device.ToString(), args.EventId, args.Number); var input = args.Number; var name = _chassis.HdmiInputs[input].NameFeedback.StringValue; @@ -483,7 +517,8 @@ Selector: {4} } default: { - Debug.Console(1, this, "Uhandled DM Input Event ID {0}", eventId); + Debug.Console(1, this, "{0} DM Input Event ID {1} | Number {2}: Uhandled", + device.ToString(), args.EventId, args.Number); break; } } @@ -491,33 +526,50 @@ Selector: {4} OnDmInputChange(args); } - // _chassis output change event private void _chassis_OutputChange(Switch device, DMOutputEventArgs args) { - if (args.EventId != DMOutputEventIds.VideoOutEventId) return; + switch (args.EventId) + { + case DMOutputEventIds.VideoOutEventId: + { + var output = args.Number; - var output = args.Number; + var input = _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback == null + ? 0 + : _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback.Number; - var input = _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback == null - ? 0 - : _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback.Number; + var outputName = OutputNames[output]; - var outputName = OutputNames[output]; + var feedback = VideoOutputRouteFeedbacks[outputName]; + if (feedback == null) return; - var feedback = VideoOutputRouteFeedbacks[outputName]; - if (feedback == null) return; + var inputPort = InputPorts.FirstOrDefault( + p => p.FeedbackMatchObject == _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback); - var inputPort = InputPorts.FirstOrDefault( - p => p.FeedbackMatchObject == _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback); + var outputPort = OutputPorts.FirstOrDefault( + p => p.FeedbackMatchObject == _chassis.HdmiDmLiteOutputs[output]); - var outputPort = OutputPorts.FirstOrDefault( - p => p.FeedbackMatchObject == _chassis.HdmiDmLiteOutputs[output]); + feedback.FireUpdate(); - feedback.FireUpdate(); + OnSwitchChange(new RoutingNumericEventArgs(output, input, outputPort, inputPort, eRoutingSignalType.AudioVideo)); - OnSwitchChange(new RoutingNumericEventArgs( - output, input, outputPort, inputPort, eRoutingSignalType.AudioVideo)); + break; + } + case DMOutputEventIds.RemoteReceiverDetectedEventId: + { + // signal found on HD-PSXxx > Output[s] > Output [X] > DM Lite [X] + Debug.Console(2, this, "{0} DM Output Event Id {1} | Number:{2} | Index {3}: RemoteRecevierDetectedEventId", + device.ToString(), args.EventId, args.Number, args.Index); + break; + } + default: + { + Debug.Console(2, this, "{0} DM Output Event Id {1} | Number:{2} | Index:{3}: Unhandled", + device.ToString(), args.EventId, args.Number, args.Index); + break; + } + } } @@ -543,9 +595,9 @@ Selector: {4} #region Factory - public class HdSp401ControllerFactory : EssentialsDeviceFactory + public class HdPsXxxControllerFactory : EssentialsDeviceFactory { - public HdSp401ControllerFactory() + public HdPsXxxControllerFactory() { TypeNames = new List { "hdps401", "hdps402", "hdps621", "hdps622" }; } From 19f2c6aa7976580b8da1695a8c5459fddb63ba79 Mon Sep 17 00:00:00 2001 From: Jason DeVito Date: Thu, 14 Dec 2023 16:32:22 -0600 Subject: [PATCH 2/3] fix: update dm event handlers, adds debug statements --- .../Chassis/HdPsXxxController.cs | 48 ++++++------------- 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs index 45510a88..c0723893 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs +++ b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs @@ -138,7 +138,7 @@ namespace PepperDash_Essentials_DM.Chassis () => input.InputPort.HdcpSupportOnFeedback.BoolValue)); VideoInputSyncFeedbacks.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), - () => input.VideoDetectedFeedback.BoolValue)); + () => input.InputPort.SyncDetectedFeedback.BoolValue)); } // iterate through DM Lite inputs @@ -167,7 +167,7 @@ namespace PepperDash_Essentials_DM.Chassis () => input.InputPort.HdcpSupportOnFeedback.BoolValue)); VideoInputSyncFeedbacks.Add(new BoolFeedback(index.ToString(CultureInfo.InvariantCulture), - () => input.VideoDetectedFeedback.BoolValue)); + () => input.InputPort.SyncDetectedFeedback.BoolValue)); } _chassis.DMInputChange += _chassis_InputChange; @@ -459,17 +459,18 @@ Selector: {4} switch (args.EventId) { case DMInputEventIds.RemoteTransmitterDetectedEventId: - { + { // signal found on HD-PSXxx > Inputs > Inputs DM Lite X Debug.Console(2, this, "{0} DM Input Event ID {1}-RemoteTransmitterDetected | Number {2}", device.ToString(), args.EventId, args.Number); break; } - case DMInputEventIds.SourceSyncEventId: + case DMInputEventIds.SourceSyncEventId: // id-14 + case DMInputEventIds.VideoDetectedEventId: // id-9 { // signal found on HD-PSXxx > Inputs > HDMI/DM Lite X Debug.Console(1, this, "{0} DM Input Event ID {1}-SourceSync | Number {2}: Updating VideoInputSyncFeedbacks", - device.ToString(), args.EventId, args.Number); + device.Name, args.EventId, args.Number); var input = args.Number; @@ -478,28 +479,6 @@ Selector: {4} feedback.FireUpdate(); - //foreach (var item in VideoInputSyncFeedbacks) - //{ - // item.FireUpdate(); - //} - break; - } - case DMInputEventIds.VideoDetectedEventId: - { - Debug.Console(1, this, "{0} DM Input Event ID {1}-VideoDetected | Number {2}: Updating VideoInputSyncFeedbacks", - device.ToString(), args.EventId, args.Number); - - var input = args.Number; - - var feedback = VideoInputSyncFeedbacks[(int) input]; - if (feedback == null) return; - - feedback.FireUpdate(); - - //foreach (var item in VideoInputSyncFeedbacks) - //{ - // item.FireUpdate(); - //} break; } case DMInputEventIds.InputNameFeedbackEventId: @@ -507,7 +486,7 @@ Selector: {4} case DMInputEventIds.NameFeedbackEventId: { Debug.Console(1, this, "{0} DM Input Event ID {1}-Name | Number {2}: Updating name feedbacks", - device.ToString(), args.EventId, args.Number); + device.Name, args.EventId, args.Number); var input = args.Number; var name = _chassis.HdmiInputs[input].NameFeedback.StringValue; @@ -518,7 +497,7 @@ Selector: {4} default: { Debug.Console(1, this, "{0} DM Input Event ID {1} | Number {2}: Uhandled", - device.ToString(), args.EventId, args.Number); + device.Name, args.EventId, args.Number); break; } } @@ -533,6 +512,9 @@ Selector: {4} { case DMOutputEventIds.VideoOutEventId: { + Debug.Console(2, this, "{0} DM Output Event Id {1} | Number {2} | Index {3}: VideoOutEventId", + device.Name, args.EventId, args.Number, args.Index); + var output = args.Number; var input = _chassis.HdmiDmLiteOutputs[output].VideoOutFeedback == null @@ -559,14 +541,14 @@ Selector: {4} case DMOutputEventIds.RemoteReceiverDetectedEventId: { // signal found on HD-PSXxx > Output[s] > Output [X] > DM Lite [X] - Debug.Console(2, this, "{0} DM Output Event Id {1} | Number:{2} | Index {3}: RemoteRecevierDetectedEventId", - device.ToString(), args.EventId, args.Number, args.Index); + Debug.Console(2, this, "{0} DM Output Event Id {1} | Number {2} | Index {3}: RemoteRecevierDetectedEventId", + device.Name, args.EventId, args.Number, args.Index); break; } default: { - Debug.Console(2, this, "{0} DM Output Event Id {1} | Number:{2} | Index:{3}: Unhandled", - device.ToString(), args.EventId, args.Number, args.Index); + Debug.Console(2, this, "{0} DM Output Event Id {1} | Number {2} | Index:{3}: Unhandled", + device.Name, args.EventId, args.Number, args.Index); break; } } From b24501642079c1f936f6c678aac474e4c7f651e6 Mon Sep 17 00:00:00 2001 From: Jason DeVito Date: Thu, 14 Dec 2023 17:02:14 -0600 Subject: [PATCH 3/3] fix: updated dminputchange event debug message --- .../Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs index c0723893..c267acea 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs +++ b/essentials-framework/Essentials DM/Essentials_DM/Chassis/HdPsXxxController.cs @@ -469,7 +469,7 @@ Selector: {4} case DMInputEventIds.VideoDetectedEventId: // id-9 { // signal found on HD-PSXxx > Inputs > HDMI/DM Lite X - Debug.Console(1, this, "{0} DM Input Event ID {1}-SourceSync | Number {2}: Updating VideoInputSyncFeedbacks", + Debug.Console(1, this, "{0} DM Input Event ID {1} | Number {2}: Updating VideoInputSyncFeedbacks", device.Name, args.EventId, args.Number); var input = args.Number;