mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 20:54:55 +00:00
fix (Core): Add better log messages and null checks
Checking if a device exists in the Device Manager and if it implements `IRelayPorts` are now 2 separate steps instead of one. There is now a null check in the PostActivation method to allow for logging an error if getting the relay device fails.
This commit is contained in:
@@ -44,6 +44,12 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
{
|
{
|
||||||
RelayOutput = postActivationFunc(config);
|
RelayOutput = postActivationFunc(config);
|
||||||
|
|
||||||
|
if (RelayOutput == null)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Unable to get parent relay device for device key {0} and port {1}", config.PortDeviceKey, config.PortNumber);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
RelayOutput.Register();
|
RelayOutput.Register();
|
||||||
|
|
||||||
RelayOutput.StateChange += RelayOutput_StateChange;
|
RelayOutput.StateChange += RelayOutput_StateChange;
|
||||||
@@ -61,30 +67,32 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
{
|
{
|
||||||
if (!Global.ControlSystem.SupportsRelay)
|
if (!Global.ControlSystem.SupportsRelay)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "GetRelayDevice: Processor does not support relays");
|
Debug.Console(0, "Processor does not support relays");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
relayDevice = Global.ControlSystem;
|
relayDevice = Global.ControlSystem;
|
||||||
|
|
||||||
|
return relayDevice.RelayPorts[dc.PortNumber];
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
var essentialsDevice = DeviceManager.GetDeviceForKey(dc.PortDeviceKey);
|
||||||
|
if (essentialsDevice == null)
|
||||||
{
|
{
|
||||||
var relayDev = DeviceManager.GetDeviceForKey(dc.PortDeviceKey) as IRelayPorts;
|
Debug.Console(0, "Device {0} was not found in Device Manager. Check configuration or for errors with device.", dc.PortDeviceKey);
|
||||||
if (relayDev == null)
|
return null;
|
||||||
{
|
|
||||||
Debug.Console(0, "GetRelayDevice: Device {0} is not a valid device", dc.PortDeviceKey);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
relayDevice = relayDev;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
relayDevice = essentialsDevice as IRelayPorts;
|
||||||
|
|
||||||
if (relayDevice == null)
|
if (relayDevice == null)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "GetRelayDevice: Device '0' is not a valid IRelayPorts Device", dc.PortDeviceKey);
|
Debug.Console(0, "Device {0} is not a valid relay parent. Please check configuration.", dc.PortDeviceKey);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dc.PortNumber > relayDevice.NumberOfRelayPorts)
|
if (dc.PortNumber > relayDevice.NumberOfRelayPorts)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "GetRelayDevice: Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
|
Debug.Console(0, "Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
return relayDevice.RelayPorts[dc.PortNumber];
|
return relayDevice.RelayPorts[dc.PortNumber];
|
||||||
|
|||||||
Reference in New Issue
Block a user