diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs
index fd5fcfe2..549404e0 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs
@@ -115,39 +115,54 @@ namespace PepperDash.Essentials.Core
///
public static ICec GetCecPort(ControlPropertiesConfig config)
{
- var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey);
-
- Debug.Console(0, "GetCecPort: device '{0}' {1}", config.ControlPortDevKey, dev == null
- ? "is not valid, failed to create build cec port"
- : "found in device manager, attempting to build cec port");
-
- if (dev == null)
- return null;
-
- if (String.IsNullOrEmpty(config.ControlPortName))
+ try
{
- Debug.Console(0, "GetCecPort: '{0}' - Configuration missing 'ControlPortName'", config.ControlPortDevKey);
- return null;
+ var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey);
+
+ Debug.Console(0, "GetCecPort: device '{0}' {1}", config.ControlPortDevKey, dev == null
+ ? "is not valid, failed to get cec port"
+ : "found in device manager, attempting to get cec port");
+
+ if (dev == null)
+ return null;
+
+ if (String.IsNullOrEmpty(config.ControlPortName))
+ {
+ Debug.Console(0, "GetCecPort: '{0}' - Configuration missing 'ControlPortName'", config.ControlPortDevKey);
+ return null;
+ }
+
+
+ var inputsOutputs = dev as IRoutingInputsOutputs;
+ if (inputsOutputs == null)
+ {
+ Debug.Console(0, "GetCecPort: Device '{0}' does not support IRoutingInputsOutputs, failed to get CEC port called '{1}'",
+ config.ControlPortDevKey, config.ControlPortName);
+
+ return null;
+ }
+
+ var inputPort = inputsOutputs.InputPorts[config.ControlPortName];
+ if (inputPort != null && inputPort.Port is ICec)
+ return inputPort.Port as ICec;
+
+
+ var outputPort = inputsOutputs.OutputPorts[config.ControlPortName];
+ if (outputPort != null && outputPort.Port is ICec)
+ return outputPort.Port as ICec;
+ }
+ catch (Exception ex)
+ {
+ Debug.Console(1, "GetCecPort Exception Message: {0}", ex.Message);
+ Debug.Console(2, "GetCecPort Exception StackTrace: {0}", ex.StackTrace);
+ if (ex.InnerException != null)
+ Debug.Console(0, "GetCecPort Exception InnerException: {0}", ex.InnerException);
}
- var inputPort = (dev as IRoutingInputsOutputs).InputPorts[config.ControlPortName];
- if (inputPort != null)
- {
- if (inputPort.Port is ICec)
- return inputPort.Port as ICec;
- }
-
- var outputPort = (dev as IRoutingInputsOutputs).OutputPorts[config.ControlPortName];
- if (outputPort != null)
- {
- if (outputPort.Port is ICec)
- return outputPort.Port as ICec;
- }
-
- Debug.Console(0, "GetCecPort: Device '{0}' does not have a CEC port called: '{1}'",
+ Debug.Console(0, "GetCecPort: Device '{0}' does not have a CEC port called '{1}'",
config.ControlPortDevKey, config.ControlPortName);
- return null;
+ return null;
}
///