refactor: GetCecPort method to handle exceptions

This commit is contained in:
Jason DeVito
2023-09-20 15:38:25 -05:00
parent 7ecb2ecf6d
commit 6d020132cf

View File

@@ -114,12 +114,14 @@ namespace PepperDash.Essentials.Core
/// <param name="config"></param> /// <param name="config"></param>
/// <returns></returns> /// <returns></returns>
public static ICec GetCecPort(ControlPropertiesConfig config) public static ICec GetCecPort(ControlPropertiesConfig config)
{
try
{ {
var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey); var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey);
Debug.Console(0, "GetCecPort: device '{0}' {1}", config.ControlPortDevKey, dev == null Debug.Console(0, "GetCecPort: device '{0}' {1}", config.ControlPortDevKey, dev == null
? "is not valid, failed to create build cec port" ? "is not valid, failed to get cec port"
: "found in device manager, attempting to build cec port"); : "found in device manager, attempting to get cec port");
if (dev == null) if (dev == null)
return null; return null;
@@ -130,21 +132,34 @@ namespace PepperDash.Essentials.Core
return null; return null;
} }
var inputPort = (dev as IRoutingInputsOutputs).InputPorts[config.ControlPortName];
if (inputPort != null) var inputsOutputs = dev as IRoutingInputsOutputs;
if (inputsOutputs == null)
{ {
if (inputPort.Port is ICec) Debug.Console(0, "GetCecPort: Device '{0}' does not support IRoutingInputsOutputs, failed to get CEC port called '{1}'",
return inputPort.Port as ICec; config.ControlPortDevKey, config.ControlPortName);
return null;
} }
var outputPort = (dev as IRoutingInputsOutputs).OutputPorts[config.ControlPortName]; var inputPort = inputsOutputs.InputPorts[config.ControlPortName];
if (outputPort != null) if (inputPort != null && inputPort.Port is ICec)
{ return inputPort.Port as ICec;
if (outputPort.Port is ICec)
var outputPort = inputsOutputs.OutputPorts[config.ControlPortName];
if (outputPort != null && outputPort.Port is ICec)
return outputPort.Port as 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);
}
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); config.ControlPortDevKey, config.ControlPortName);
return null; return null;