diff --git a/src/PepperDash.Essentials.Core/CrestronIO/GenericDigitalInputDevice.cs b/src/PepperDash.Essentials.Core/CrestronIO/GenericDigitalInputDevice.cs
index 8463ae96..6f858144 100644
--- a/src/PepperDash.Essentials.Core/CrestronIO/GenericDigitalInputDevice.cs
+++ b/src/PepperDash.Essentials.Core/CrestronIO/GenericDigitalInputDevice.cs
@@ -2,59 +2,54 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.DeviceSupport;
using Newtonsoft.Json;
using PepperDash.Core;
+using PepperDash.Core.Logging;
using PepperDash.Essentials.Core.Bridges;
using PepperDash.Essentials.Core.Config;
-using Serilog.Events;
namespace PepperDash.Essentials.Core.CrestronIO
{
- [Description("Wrapper class for Digital Input")]
+
///
/// Represents a GenericDigitalInputDevice
///
- public class GenericDigitalInputDevice : EssentialsBridgeableDevice, IDigitalInput
+ /// [Description("Wrapper class for Digital Input")]
+ public class GenericDigitalInputDevice : EssentialsBridgeableDevice, IDigitalInput, IHasFeedback
{
- ///
- /// Gets or sets the InputPort
- ///
- public DigitalInput InputPort { get; private set; }
+ private DigitalInput inputPort;
///
/// Gets or sets the InputStateFeedback
///
public BoolFeedback InputStateFeedback { get; private set; }
- Func InputStateFeedbackFunc
- {
- get
- {
- return () => InputPort.State;
- }
- }
-
+ ///
+ public FeedbackCollection Feedbacks { get; private set; } = new FeedbackCollection();
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// key for device
+ /// name for device
+ /// function to call after activation. Should return the DigitalInput
+ /// config for device
public GenericDigitalInputDevice(string key, string name, Func postActivationFunc,
IOPortConfig config)
: base(key, name)
{
- InputStateFeedback = new BoolFeedback(InputStateFeedbackFunc);
+ InputStateFeedback = new BoolFeedback("inputState", () => inputPort.State);
AddPostActivationAction(() =>
{
- InputPort = postActivationFunc(config);
+ inputPort = postActivationFunc(config);
- InputPort.Register();
-
- InputPort.StateChange += InputPort_StateChange;
+ inputPort.Register();
+ inputPort.StateChange += InputPort_StateChange;
});
}
@@ -71,41 +66,31 @@ namespace PepperDash.Essentials.Core.CrestronIO
private static DigitalInput GetDigitalInput(IOPortConfig dc)
{
- IDigitalInputPorts ioPortDevice;
if (dc.PortDeviceKey.Equals("processor"))
{
if (!Global.ControlSystem.SupportsDigitalInput)
{
- Debug.LogMessage(LogEventLevel.Information, "GetDigitalInput: Processor does not support Digital Inputs");
+ Debug.LogError("GetDigitalInput: Processor does not support Digital Inputs");
return null;
}
- ioPortDevice = Global.ControlSystem;
+
+ return Global.ControlSystem.DigitalInputPorts[dc.PortNumber];
}
- else
+
+ if (!(DeviceManager.GetDeviceForKey(dc.PortDeviceKey) is IDigitalInputPorts ioPortDevice))
{
- var ioPortDev = DeviceManager.GetDeviceForKey(dc.PortDeviceKey) as IDigitalInputPorts;
- if (ioPortDev == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetDigitalInput: Device {0} is not a valid device", dc.PortDeviceKey);
- return null;
- }
- ioPortDevice = ioPortDev;
- }
- if (ioPortDevice == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetDigitalInput: Device '0' is not a valid IDigitalInputPorts Device", dc.PortDeviceKey);
+ Debug.LogError("GetDigitalInput: Device {key} is not a valid device", dc.PortDeviceKey);
return null;
}
if (dc.PortNumber > ioPortDevice.NumberOfDigitalInputPorts)
{
- Debug.LogMessage(LogEventLevel.Information, "GetDigitalInput: Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
+ Debug.LogError("GetDigitalInput: Device {key} does not contain a digital input port {port}", dc.PortDeviceKey, dc.PortNumber);
+ return null;
}
return ioPortDevice.DigitalInputPorts[dc.PortNumber];
-
-
}
#endregion
@@ -131,20 +116,20 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
else
{
- Debug.LogMessage(LogEventLevel.Information, this, "Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
+ this.LogWarning("Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
}
try
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
+ this.LogDebug("Linking to Trilist '{0}'", trilist.ID.ToString("X"));
// Link feedback for input state
InputStateFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputState.JoinNumber]);
}
catch (Exception e)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Unable to link device '{0}'. Input is null", Key);
- Debug.LogMessage(LogEventLevel.Debug, this, "Error: {0}", e);
+ this.LogError("Unable to link device {key}. {message}", Key, e.Message);
+ this.LogDebug(e, "Stack Trace: ");
}
}
@@ -153,22 +138,22 @@ namespace PepperDash.Essentials.Core.CrestronIO
#region Factory
///
- /// Represents a GenericDigitalInputDeviceFactory
+ /// Factory for creating GenericDigitalInputDevice devices
///
public class GenericDigitalInputDeviceFactory : EssentialsDeviceFactory
{
+ ///
+ /// Constructor for GenericDigitalInputDeviceFactory
+ ///
public GenericDigitalInputDeviceFactory()
{
TypeNames = new List() { "digitalinput" };
}
- ///
- /// BuildDevice method
- ///
///
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
- Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Digital Input Device");
+ Debug.LogDebug("Factory Attempting to create new Generic Digital Input Device");
var props = JsonConvert.DeserializeObject(dc.Properties.ToString());
diff --git a/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportAnalogInputDevice.cs b/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportAnalogInputDevice.cs
index c87a688c..0c5cec65 100644
--- a/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportAnalogInputDevice.cs
+++ b/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportAnalogInputDevice.cs
@@ -2,66 +2,64 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.DeviceSupport;
-
-using PepperDash.Core;
-using PepperDash.Essentials.Core.Config;
-using PepperDash.Essentials.Core.Bridges;
-
-
using Newtonsoft.Json;
-using Serilog.Events;
+using PepperDash.Core;
+using PepperDash.Core.Logging;
+using PepperDash.Essentials.Core.Bridges;
+using PepperDash.Essentials.Core.Config;
namespace PepperDash.Essentials.Core.CrestronIO
{
///
/// Represents a generic digital input deviced tied to a versiport
///
- public class GenericVersiportAnalogInputDevice : EssentialsBridgeableDevice, IAnalogInput
+ public class GenericVersiportAnalogInputDevice : EssentialsBridgeableDevice, IAnalogInput, IHasFeedback
{
- public Versiport InputPort { get; private set; }
+ private Versiport inputPort;
+ ///
public IntFeedback InputValueFeedback { get; private set; }
+
+ ///
+ /// Get the InputMinimumChangeFeedback
+ ///
+ ///
+ /// Updates when the analog input minimum change value changes
+ ///
public IntFeedback InputMinimumChangeFeedback { get; private set; }
- Func InputValueFeedbackFunc
- {
- get
- {
- return () => InputPort.AnalogIn;
- }
- }
-
- Func InputMinimumChangeFeedbackFunc
- {
- get { return () => InputPort.AnalogMinChange; }
- }
+ ///
+ public FeedbackCollection Feedbacks { get; private set; } = new FeedbackCollection();
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// key for the device
+ /// name for the device
+ /// function to call after activation
+ /// IO port configuration
public GenericVersiportAnalogInputDevice(string key, string name, Func postActivationFunc, IOPortConfig config) :
base(key, name)
{
- InputValueFeedback = new IntFeedback(InputValueFeedbackFunc);
- InputMinimumChangeFeedback = new IntFeedback(InputMinimumChangeFeedbackFunc);
+ InputValueFeedback = new IntFeedback("inputValue", () => inputPort.AnalogIn);
+ InputMinimumChangeFeedback = new IntFeedback("inputMinimumChange", () => inputPort.AnalogMinChange);
AddPostActivationAction(() =>
{
- InputPort = postActivationFunc(config);
+ inputPort = postActivationFunc(config);
- InputPort.Register();
+ inputPort.Register();
- InputPort.SetVersiportConfiguration(eVersiportConfiguration.AnalogInput);
- InputPort.AnalogMinChange = (ushort)(config.MinimumChange > 0 ? config.MinimumChange : 655);
+ inputPort.SetVersiportConfiguration(eVersiportConfiguration.AnalogInput);
+ inputPort.AnalogMinChange = (ushort)(config.MinimumChange > 0 ? config.MinimumChange : 655);
if (config.DisablePullUpResistor)
- InputPort.DisablePullUpResistor = true;
+ inputPort.DisablePullUpResistor = true;
- InputPort.VersiportChange += InputPort_VersiportChange;
-
- Debug.LogMessage(LogEventLevel.Debug, this, "Created GenericVersiportAnalogInputDevice on port '{0}'. DisablePullUpResistor: '{1}'", config.PortNumber, InputPort.DisablePullUpResistor);
+ inputPort.VersiportChange += InputPort_VersiportChange;
+ this.LogDebug("Created GenericVersiportAnalogInputDevice on port {port}. DisablePullUpResistor: {pullUpResistorDisabled}", config.PortNumber, inputPort.DisablePullUpResistor);
});
}
@@ -69,20 +67,17 @@ namespace PepperDash.Essentials.Core.CrestronIO
///
/// Set minimum voltage change for device to update voltage changed method
///
- /// valid values range from 0 - 65535, representing the full 100% range of the processor voltage source. Check processor documentation for details
- ///
- /// SetMinimumChange method
- ///
+ /// valid values range from 0 - 65535, representing the full 100% range of the processor voltage source. Check processor documentation for details
public void SetMinimumChange(ushort value)
{
- InputPort.AnalogMinChange = value;
+ inputPort.AnalogMinChange = value;
}
void InputPort_VersiportChange(Versiport port, VersiportEventArgs args)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Versiport change: {0}", args.Event);
+ this.LogDebug("Versiport change: {event}", args.Event);
- if(args.Event == eVersiportEvent.AnalogInChange)
+ if (args.Event == eVersiportEvent.AnalogInChange)
InputValueFeedback.FireUpdate();
if (args.Event == eVersiportEvent.AnalogMinChangeChange)
InputMinimumChangeFeedback.FireUpdate();
@@ -91,9 +86,6 @@ namespace PepperDash.Essentials.Core.CrestronIO
#region Bridge Linking
- ///
- /// LinkToApi method
- ///
///
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
@@ -110,12 +102,12 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
else
{
- Debug.LogMessage(LogEventLevel.Information, this, "Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
+ this.LogWarning("Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
}
try
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
+ this.LogDebug("Linking to Trilist '{trilistId}'", trilist.ID.ToString("X"));
// Link feedback for input state
InputValueFeedback.LinkInputSig(trilist.UShortInput[joinMap.InputValue.JoinNumber]);
@@ -125,8 +117,8 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
catch (Exception e)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Unable to link device '{0}'. Input is null", Key);
- Debug.LogMessage(LogEventLevel.Debug, this, "Error: {0}", e);
+ this.LogError("Unable to link device {key}: {message}", Key, e.Message);
+ this.LogDebug(e, "Stack Trace: ");
}
trilist.OnlineStatusChange += (d, args) =>
@@ -138,11 +130,6 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
- void trilist_OnlineStatusChange(GenericBase currentDevice, OnlineOfflineEventArgs args)
- {
- throw new NotImplementedException();
- }
-
#endregion
@@ -151,70 +138,55 @@ namespace PepperDash.Essentials.Core.CrestronIO
///
public static Versiport GetVersiportDigitalInput(IOPortConfig dc)
{
-
- IIOPorts ioPortDevice;
-
if (dc.PortDeviceKey.Equals("processor"))
{
if (!Global.ControlSystem.SupportsVersiport)
{
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportAnalogInput: Processor does not support Versiports");
+ Debug.LogError("GetVersiportAnalogInput: Processor does not support Versiports");
return null;
}
- ioPortDevice = Global.ControlSystem;
+ return Global.ControlSystem.VersiPorts[dc.PortNumber];
}
- else
+
+ if (!(DeviceManager.GetDeviceForKey(dc.PortDeviceKey) is IIOPorts ioPortDevice))
{
- var ioPortDev = DeviceManager.GetDeviceForKey(dc.PortDeviceKey) as IIOPorts;
- if (ioPortDev == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportAnalogInput: Device {0} is not a valid device", dc.PortDeviceKey);
- return null;
- }
- ioPortDevice = ioPortDev;
- }
- if (ioPortDevice == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportAnalogInput: Device '0' is not a valid IIOPorts Device", dc.PortDeviceKey);
+ Debug.LogError("GetVersiportAnalogInput: Device {key} is not a valid device", dc.PortDeviceKey);
return null;
}
if (dc.PortNumber > ioPortDevice.NumberOfVersiPorts)
{
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportAnalogInput: Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
+ Debug.LogError("GetVersiportAnalogInput: Device {key} does not contain a port {port}", dc.PortDeviceKey, dc.PortNumber);
return null;
}
- if(!ioPortDevice.VersiPorts[dc.PortNumber].SupportsAnalogInput)
+ if (!ioPortDevice.VersiPorts[dc.PortNumber].SupportsAnalogInput)
{
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportAnalogInput: Device {0} does not support AnalogInput on port {1}", dc.PortDeviceKey, dc.PortNumber);
+ Debug.LogError("GetVersiportAnalogInput: Device {key} does not support AnalogInput on port {port}", dc.PortDeviceKey, dc.PortNumber);
return null;
}
-
return ioPortDevice.VersiPorts[dc.PortNumber];
-
-
}
}
///
- /// Represents a GenericVersiportAbalogInputDeviceFactory
+ /// Represents a GenericVersiportAnalogInputDeviceFactory
///
- public class GenericVersiportAbalogInputDeviceFactory : EssentialsDeviceFactory
+ public class GenericVersiportAnalogInputDeviceFactory : EssentialsDeviceFactory
{
- public GenericVersiportAbalogInputDeviceFactory()
+ ///
+ /// Constructor for GenericVersiportAnalogInputDeviceFactory
+ ///
+ public GenericVersiportAnalogInputDeviceFactory()
{
TypeNames = new List() { "versiportanaloginput" };
}
- ///
- /// BuildDevice method
- ///
///
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
- Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Versiport Device");
+ Debug.LogDebug("Factory Attempting to create new Generic Versiport Device");
var props = JsonConvert.DeserializeObject(dc.Properties.ToString());
diff --git a/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportInputDevice.cs b/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportInputDevice.cs
index f94137c3..e2c4474a 100644
--- a/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportInputDevice.cs
+++ b/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportInputDevice.cs
@@ -2,78 +2,82 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.DeviceSupport;
-
-using PepperDash.Core;
-using PepperDash.Essentials.Core.Config;
-using PepperDash.Essentials.Core.Bridges;
-
-
using Newtonsoft.Json;
-using Serilog.Events;
+using PepperDash.Core;
+using PepperDash.Core.Logging;
+using PepperDash.Essentials.Core.Bridges;
+using PepperDash.Essentials.Core.Config;
namespace PepperDash.Essentials.Core.CrestronIO
{
///
/// Represents a generic digital input deviced tied to a versiport
///
- public class GenericVersiportDigitalInputDevice : EssentialsBridgeableDevice, IDigitalInput, IPartitionStateProvider
+ public class GenericVersiportDigitalInputDevice : EssentialsBridgeableDevice, IDigitalInput, IPartitionStateProvider, IHasFeedback
{
- public Versiport InputPort { get; private set; }
+ private Versiport inputPort;
+ ///
+ /// Gets or sets the InputStateFeedback
+ ///
public BoolFeedback InputStateFeedback { get; private set; }
- Func InputStateFeedbackFunc
- {
- get
- {
- return () => InputPort.DigitalIn;
- }
- }
+ ///
+ public FeedbackCollection Feedbacks { get; private set; } = new FeedbackCollection();
///
/// Gets or sets the PartitionPresentFeedback
///
public BoolFeedback PartitionPresentFeedback { get; }
- public bool PartitionPresent => !InputStateFeedbackFunc();
+ ///
+ /// Get partition state
+ ///
+ public bool PartitionPresent => !inputPort.DigitalIn;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// key for device
+ /// name for device
+ /// function to call after activation. Should return the Versiport
+ /// config for device
public GenericVersiportDigitalInputDevice(string key, string name, Func postActivationFunc, IOPortConfig config) :
base(key, name)
{
- InputStateFeedback = new BoolFeedback(InputStateFeedbackFunc);
- PartitionPresentFeedback = new BoolFeedback(() => !InputStateFeedbackFunc());
+ InputStateFeedback = new BoolFeedback("inputState", () => inputPort.DigitalIn);
+ PartitionPresentFeedback = new BoolFeedback("partitionPresent", () => !inputPort.DigitalIn);
AddPostActivationAction(() =>
{
- InputPort = postActivationFunc(config);
+ inputPort = postActivationFunc(config);
- InputPort.Register();
+ inputPort.Register();
- InputPort.SetVersiportConfiguration(eVersiportConfiguration.DigitalInput);
+ inputPort.SetVersiportConfiguration(eVersiportConfiguration.DigitalInput);
if (config.DisablePullUpResistor)
- InputPort.DisablePullUpResistor = true;
+ inputPort.DisablePullUpResistor = true;
- InputPort.VersiportChange += InputPort_VersiportChange;
+ inputPort.VersiportChange += InputPort_VersiportChange;
InputStateFeedback.FireUpdate();
PartitionPresentFeedback.FireUpdate();
- Debug.LogMessage(LogEventLevel.Debug, this, "Created GenericVersiportDigitalInputDevice on port '{0}'. DisablePullUpResistor: '{1}'", config.PortNumber, InputPort.DisablePullUpResistor);
+ this.LogDebug("Created GenericVersiportDigitalInputDevice for port {port}. DisablePullUpResistor: {pullUpResistorDisable}", config.PortNumber, inputPort.DisablePullUpResistor);
});
+ Feedbacks.Add(InputStateFeedback);
+ Feedbacks.Add(PartitionPresentFeedback);
}
void InputPort_VersiportChange(Versiport port, VersiportEventArgs args)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Versiport change: {0}", args.Event);
+ this.LogDebug("Versiport change: {0}", args.Event);
- if(args.Event == eVersiportEvent.DigitalInChange)
+ if (args.Event == eVersiportEvent.DigitalInChange)
{
InputStateFeedback.FireUpdate();
PartitionPresentFeedback.FireUpdate();
@@ -102,20 +106,20 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
else
{
- Debug.LogMessage(LogEventLevel.Information, this, "Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
+ this.LogWarning("Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
}
try
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
+ this.LogDebug("Linking to Trilist '{0}'", trilist.ID.ToString("X"));
// Link feedback for input state
InputStateFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputState.JoinNumber]);
}
catch (Exception e)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Unable to link device '{0}'. Input is null", Key);
- Debug.LogMessage(LogEventLevel.Debug, this, "Error: {0}", e);
+ this.LogError("Unable to link device {key}. Input is null. {message}", Key, e.Message);
+ this.LogDebug(e, "Stack Trace: ");
}
}
@@ -127,63 +131,50 @@ namespace PepperDash.Essentials.Core.CrestronIO
///
public static Versiport GetVersiportDigitalInput(IOPortConfig dc)
{
-
- IIOPorts ioPortDevice;
-
if (dc.PortDeviceKey.Equals("processor"))
{
if (!Global.ControlSystem.SupportsVersiport)
{
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalInput: Processor does not support Versiports");
+ Debug.LogError("GetVersiportDigitalInput: Processor does not support Versiports");
return null;
}
- ioPortDevice = Global.ControlSystem;
+ return Global.ControlSystem.VersiPorts[dc.PortNumber];
}
- else
+
+ if (!(DeviceManager.GetDeviceForKey(dc.PortDeviceKey) is IIOPorts ioPortDevice))
{
- var ioPortDev = DeviceManager.GetDeviceForKey(dc.PortDeviceKey) as IIOPorts;
- if (ioPortDev == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalInput: Device {0} is not a valid device", dc.PortDeviceKey);
- return null;
- }
- ioPortDevice = ioPortDev;
- }
- if (ioPortDevice == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalInput: Device '0' is not a valid IIOPorts Device", dc.PortDeviceKey);
+ Debug.LogError("GetVersiportDigitalInput: Device {key} is not a valid device", dc.PortDeviceKey);
return null;
}
if (dc.PortNumber > ioPortDevice.NumberOfVersiPorts)
{
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalInput: Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
+ Debug.LogError("GetVersiportDigitalInput: Device {key} does not contain versiport {port}", dc.PortDeviceKey, dc.PortNumber);
+ return null;
}
return ioPortDevice.VersiPorts[dc.PortNumber];
-
-
}
}
///
- /// Represents a GenericVersiportDigitalInputDeviceFactory
+ /// Factory class for GenericVersiportDigitalInputDevice
///
public class GenericVersiportDigitalInputDeviceFactory : EssentialsDeviceFactory
{
+ ///
+ /// Constructor for GenericVersiportDigitalInputDeviceFactory
+ ///
public GenericVersiportDigitalInputDeviceFactory()
{
TypeNames = new List() { "versiportinput" };
}
- ///
- /// BuildDevice method
- ///
///
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
- Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Versiport Device");
+ Debug.LogDebug("Factory Attempting to create new Generic Versiport Device");
var props = JsonConvert.DeserializeObject(dc.Properties.ToString());
diff --git a/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportOutputDevice.cs b/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportOutputDevice.cs
index 7a823c9a..1ff4db6e 100644
--- a/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportOutputDevice.cs
+++ b/src/PepperDash.Essentials.Core/CrestronIO/GenericVersiportOutputDevice.cs
@@ -2,18 +2,13 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.DeviceSupport;
-
-using PepperDash.Core;
-using PepperDash.Essentials.Core.Config;
-using PepperDash.Essentials.Core.Bridges;
-
-
using Newtonsoft.Json;
+using PepperDash.Core;
+using PepperDash.Core.Logging;
+using PepperDash.Essentials.Core.Bridges;
+using PepperDash.Essentials.Core.Config;
using Serilog.Events;
namespace PepperDash.Essentials.Core.CrestronIO
@@ -21,76 +16,68 @@ namespace PepperDash.Essentials.Core.CrestronIO
///
/// Represents a generic digital input deviced tied to a versiport
///
- public class GenericVersiportDigitalOutputDevice : EssentialsBridgeableDevice, IDigitalOutput
+ public class GenericVersiportDigitalOutputDevice : EssentialsBridgeableDevice, IDigitalOutput, IHasFeedback
{
- public Versiport OutputPort { get; private set; }
+ private Versiport outputPort;
+ ///
+ /// Gets or sets the OutputStateFeedback
+ ///
public BoolFeedback OutputStateFeedback { get; private set; }
- Func OutputStateFeedbackFunc
- {
- get
- {
- return () => OutputPort.DigitalOut;
- }
- }
+ ///
+ public FeedbackCollection Feedbacks { get; private set; } = new FeedbackCollection();
+ ///
+ /// Initializes a new instance of the class.
+ ///
public GenericVersiportDigitalOutputDevice(string key, string name, Func postActivationFunc, IOPortConfig config) :
base(key, name)
{
- OutputStateFeedback = new BoolFeedback(OutputStateFeedbackFunc);
+ OutputStateFeedback = new BoolFeedback("outputState", () => outputPort.DigitalOut);
AddPostActivationAction(() =>
{
- OutputPort = postActivationFunc(config);
+ outputPort = postActivationFunc(config);
- OutputPort.Register();
+ outputPort.Register();
- if (!OutputPort.SupportsDigitalOutput)
+ if (!outputPort.SupportsDigitalOutput)
{
- Debug.LogMessage(LogEventLevel.Information, this, "Device does not support configuration as a Digital Output");
+ this.LogError("Device does not support configuration as a Digital Output");
return;
}
- OutputPort.SetVersiportConfiguration(eVersiportConfiguration.DigitalOutput);
+ outputPort.SetVersiportConfiguration(eVersiportConfiguration.DigitalOutput);
- OutputPort.VersiportChange += OutputPort_VersiportChange;
+ outputPort.VersiportChange += OutputPort_VersiportChange;
});
-
}
void OutputPort_VersiportChange(Versiport port, VersiportEventArgs args)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Versiport change: {0}", args.Event);
+ this.LogDebug("Versiport change: {event}", args.Event);
- if(args.Event == eVersiportEvent.DigitalOutChange)
+ if (args.Event == eVersiportEvent.DigitalOutChange)
OutputStateFeedback.FireUpdate();
}
///
/// Set value of the versiport digital output
///
- /// value to set the output to
- ///
- /// SetOutput method
- ///
+ /// value to set the output to
public void SetOutput(bool state)
{
- if (OutputPort.SupportsDigitalOutput)
- {
- Debug.LogMessage(LogEventLevel.Information, this, "Passed the Check");
-
- OutputPort.DigitalOut = state;
-
- }
- else
- {
- Debug.LogMessage(LogEventLevel.Information, this, "Versiport does not support Digital Output Mode");
- }
+ if (!outputPort.SupportsDigitalOutput)
+ {
+ this.LogError("Versiport does not support Digital Output Mode");
+ return;
+ }
+ outputPort.DigitalOut = state;
}
#region Bridge Linking
@@ -114,12 +101,12 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
else
{
- Debug.LogMessage(LogEventLevel.Information, this, "Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
+ this.LogWarning("Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
}
try
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
+ this.LogDebug("Linking to Trilist '{0}'", trilist.ID.ToString("X"));
// Link feedback for input state
OutputStateFeedback.LinkInputSig(trilist.BooleanInput[joinMap.OutputState.JoinNumber]);
@@ -127,8 +114,8 @@ namespace PepperDash.Essentials.Core.CrestronIO
}
catch (Exception e)
{
- Debug.LogMessage(LogEventLevel.Debug, this, "Unable to link device '{0}'. Input is null", Key);
- Debug.LogMessage(LogEventLevel.Debug, this, "Error: {0}", e);
+ this.LogError("Unable to link device: {message}", e.Message);
+ this.LogDebug(e, "Stack Trace: ");
}
}
@@ -140,41 +127,28 @@ namespace PepperDash.Essentials.Core.CrestronIO
///
public static Versiport GetVersiportDigitalOutput(IOPortConfig dc)
{
-
- IIOPorts ioPortDevice;
-
- if (dc.PortDeviceKey.Equals("processor"))
+ if (dc.PortDeviceKey.Equals("processor"))
+ {
+ if (!Global.ControlSystem.SupportsVersiport)
{
- if (!Global.ControlSystem.SupportsVersiport)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalOuptut: Processor does not support Versiports");
- return null;
- }
- ioPortDevice = Global.ControlSystem;
- }
- else
- {
- var ioPortDev = DeviceManager.GetDeviceForKey(dc.PortDeviceKey) as IIOPorts;
- if (ioPortDev == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalOuptut: Device {0} is not a valid device", dc.PortDeviceKey);
- return null;
- }
- ioPortDevice = ioPortDev;
- }
- if (ioPortDevice == null)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalOuptut: Device '0' is not a valid IOPorts Device", dc.PortDeviceKey);
+ Debug.LogError("GetVersiportDigitalOuptut: Processor does not support Versiports");
return null;
}
+ return Global.ControlSystem.VersiPorts[dc.PortNumber];
+ }
- if (dc.PortNumber > ioPortDevice.NumberOfVersiPorts)
- {
- Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalOuptut: Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
- }
- var port = ioPortDevice.VersiPorts[dc.PortNumber];
- return port;
+ if (!(DeviceManager.GetDeviceForKey(dc.PortDeviceKey) is IIOPorts ioPortDevice))
+ {
+ Debug.LogError("GetVersiportDigitalOutput: Device {key} is not a valid device", dc.PortDeviceKey);
+ return null;
+ }
+ if (dc.PortNumber > ioPortDevice.NumberOfVersiPorts)
+ {
+ Debug.LogMessage(LogEventLevel.Information, "GetVersiportDigitalOutput: Device {0} does not contain a port {1}", dc.PortDeviceKey, dc.PortNumber);
+ return null;
+ }
+ return ioPortDevice.VersiPorts[dc.PortNumber];
}
}
@@ -184,18 +158,18 @@ namespace PepperDash.Essentials.Core.CrestronIO
///
public class GenericVersiportDigitalOutputDeviceFactory : EssentialsDeviceFactory
{
+ ///
+ /// Initialize a new instance of the class.
+ ///
public GenericVersiportDigitalOutputDeviceFactory()
{
TypeNames = new List() { "versiportoutput" };
}
- ///
- /// BuildDevice method
- ///
///
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
- Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Versiport Device");
+ Debug.LogDebug("Factory Attempting to create new Generic Versiport Device");
var props = JsonConvert.DeserializeObject(dc.Properties.ToString());