From 93c0b339583115c376034c5d4156163ca25610ef Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Mon, 22 Feb 2021 09:55:09 -0700 Subject: [PATCH] Updated dmps & blade chassis to use similar routing --- .../Chassis/DmBladeChassisController.cs | 34 +++++--- .../Chassis/DmpsRoutingController.cs | 77 +++++++++---------- 2 files changed, 61 insertions(+), 50 deletions(-) diff --git a/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmBladeChassisController.cs b/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmBladeChassisController.cs index abeba8d8..cee6a955 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmBladeChassisController.cs +++ b/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmBladeChassisController.cs @@ -567,9 +567,7 @@ namespace PepperDash.Essentials.DM { void StartOffTimer(PortNumberType pnt) { if (RouteOffTimers.ContainsKey(pnt)) return; - RouteOffTimers[pnt] = new CTimer(o => { - ExecuteSwitch(0, pnt.Number, pnt.Type); - }, RouteOffTime); + RouteOffTimers[pnt] = new CTimer(o => ExecuteSwitch(null, pnt.Selector, pnt.Type), RouteOffTime); } @@ -592,11 +590,22 @@ namespace PepperDash.Essentials.DM { public void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType sigType) { Debug.Console(2, this, "Making an awesome DM route from {0} to {1} {2}", inputSelector, outputSelector, sigType); - var input = Convert.ToUInt32(inputSelector); // Cast can sometimes fail - var output = Convert.ToUInt32(outputSelector); + var input = inputSelector as DMInput; // Cast can sometimes fail + var output = outputSelector as DMOutput; + + + if (output == null) + { + Debug.Console(0, this, Debug.ErrorLogLevel.Warning, + "Unable to execute switch for inputSelector {0} to outputSelector {1}", inputSelector, + outputSelector); + return; + } + // Check to see if there's an off timer waiting on this and if so, cancel var key = new PortNumberType(output, sigType); - if (input == 0) { + + if (input == null) { StartOffTimer(key); } else { @@ -609,13 +618,13 @@ namespace PepperDash.Essentials.DM { - var inCard = input == 0 ? null : Chassis.Inputs[input]; - var outCard = input == 0 ? null : Chassis.Outputs[output]; + /*var inCard = input == 0 ? null : Chassis.Inputs[input]; + var outCard = input == 0 ? null : Chassis.Outputs[output];*/ // NOTE THAT BITWISE COMPARISONS - TO CATCH ALL ROUTING TYPES - if ((sigType | eRoutingSignalType.Video) != eRoutingSignalType.Video) return; + if ((sigType & eRoutingSignalType.Video) != eRoutingSignalType.Video) return; Chassis.VideoEnter.BoolValue = true; - Chassis.Outputs[output].VideoOut = inCard; + output.VideoOut = input; } #endregion @@ -624,7 +633,10 @@ namespace PepperDash.Essentials.DM { public void ExecuteNumericSwitch(ushort inputSelector, ushort outputSelector, eRoutingSignalType sigType) { - ExecuteSwitch(inputSelector, outputSelector, sigType); + var input = Chassis.Inputs[inputSelector]; + var output = Chassis.Outputs[outputSelector]; + + ExecuteSwitch(input, output, sigType); } #endregion diff --git a/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmpsRoutingController.cs b/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmpsRoutingController.cs index 34d1cd60..0d9b0692 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmpsRoutingController.cs +++ b/essentials-framework/Essentials DM/Essentials_DM/Chassis/DmpsRoutingController.cs @@ -848,21 +848,32 @@ namespace PepperDash.Essentials.DM Debug.Console(2, this, "Attempting a DM route from input {0} to output {1} {2}", inputSelector, outputSelector, sigType); - var input = Convert.ToUInt32(inputSelector); // Cast can sometimes fail - var output = Convert.ToUInt32(outputSelector); + //var input = Convert.ToUInt32(inputSelector); // Cast can sometimes fail + //var output = Convert.ToUInt32(outputSelector); + + var input = inputSelector as DMInput; + var output = outputSelector as DMOutput; + + if (output == null) + { + Debug.Console(0, this, Debug.ErrorLogLevel.Warning, + "Unable to execute switch for inputSelector {0} to outputSelector {1}", inputSelector, + outputSelector); + return; + } var sigTypeIsUsbOrVideo = ((sigType & eRoutingSignalType.Video) == eRoutingSignalType.Video) || ((sigType & eRoutingSignalType.UsbInput) == eRoutingSignalType.UsbInput) || ((sigType & eRoutingSignalType.UsbOutput) == eRoutingSignalType.UsbOutput); - if ((input <= Dmps.NumberOfSwitcherInputs && output <= Dmps.NumberOfSwitcherOutputs && + if (input == null || (input.Number <= Dmps.NumberOfSwitcherInputs && output.Number <= Dmps.NumberOfSwitcherOutputs && sigTypeIsUsbOrVideo) || - (input <= Dmps.NumberOfSwitcherInputs + 5 && output <= Dmps.NumberOfSwitcherOutputs && + (input.Number <= Dmps.NumberOfSwitcherInputs + 5 && output.Number <= Dmps.NumberOfSwitcherOutputs && (sigType & eRoutingSignalType.Audio) == eRoutingSignalType.Audio)) { // Check to see if there's an off timer waiting on this and if so, cancel var key = new PortNumberType(output, sigType); - if (input == 0) + if (input == null) { StartOffTimer(key); } @@ -877,60 +888,45 @@ namespace PepperDash.Essentials.DM } - DMOutput dmOutputCard = output == 0 ? null : Dmps.SwitcherOutputs[output] as DMOutput; + //DMOutput dmOutputCard = output == 0 ? null : Dmps.SwitcherOutputs[output] as DMOutput; //if (inCard != null) //{ // NOTE THAT BITWISE COMPARISONS - TO CATCH ALL ROUTING TYPES if ((sigType & eRoutingSignalType.Video) == eRoutingSignalType.Video) { - DMInput dmInputCard = input == 0 ? null : Dmps.SwitcherInputs[input] as DMInput; - //SystemControl.VideoEnter.BoolValue = true; - if (dmOutputCard != null) - dmOutputCard.VideoOut = dmInputCard; + + output.VideoOut = input; } if ((sigType & eRoutingSignalType.Audio) == eRoutingSignalType.Audio) { - DMInput dmInputCard = null; - if (input <= Dmps.NumberOfSwitcherInputs) + try { - dmInputCard = input == 0 ? null : Dmps.SwitcherInputs[input] as DMInput; + output.AudioOut = input; } + catch (NotSupportedException) + { + Debug.Console(1, this, "Routing input {0} audio to output {1}", + (eDmps34KAudioOutSource) input.Number, + (CrestronControlSystem.eDmps34K350COutputs) output.Number); - if (dmOutputCard != null) - try - { - dmOutputCard.AudioOut = dmInputCard; - } - catch (NotSupportedException) - { - Debug.Console(1, this, "Routing input {0} audio to output {1}", - (eDmps34KAudioOutSource) input, (CrestronControlSystem.eDmps34K350COutputs) output); - - dmOutputCard.AudioOutSource = (eDmps34KAudioOutSource) input; - } + output.AudioOutSource = (eDmps34KAudioOutSource) input.Number; + } } if ((sigType & eRoutingSignalType.UsbOutput) == eRoutingSignalType.UsbOutput) { - DMInput dmInputCard = input == 0 ? null : Dmps.SwitcherInputs[input] as DMInput; - if (dmOutputCard != null) - dmOutputCard.USBRoutedTo = dmInputCard; + + output.USBRoutedTo = input; } - if ((sigType & eRoutingSignalType.UsbInput) == eRoutingSignalType.UsbInput) + if ((sigType & eRoutingSignalType.UsbInput) != eRoutingSignalType.UsbInput) { - DMInput dmInputCard = input == 0 ? null : Dmps.SwitcherInputs[input] as DMInput; - if (dmInputCard != null) - dmInputCard.USBRoutedTo = dmOutputCard; + return; } - //} - //else - //{ - // Debug.Console(1, this, "Unable to execute route from input {0} to output {1}. Input card not available", inputSelector, outputSelector); - //} - + if (input != null) + input.USBRoutedTo = output; } else { @@ -950,7 +946,10 @@ namespace PepperDash.Essentials.DM public void ExecuteNumericSwitch(ushort inputSelector, ushort outputSelector, eRoutingSignalType sigType) { - ExecuteSwitch(inputSelector, outputSelector, sigType); + var input = Dmps.SwitcherInputs[inputSelector]; + var output = Dmps.SwitcherOutputs[outputSelector]; + + ExecuteSwitch(input, output, sigType); } #endregion