mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
Minor Fixes to CrestronGenericBaseDevice
Update StatusSignController constructor and factory to build device in PreActivation phase Addresses #292
This commit is contained in:
@@ -12,13 +12,12 @@ using PepperDash.Essentials.Core.Config;
|
|||||||
namespace PepperDash.Essentials.Core.CrestronIO
|
namespace PepperDash.Essentials.Core.CrestronIO
|
||||||
{
|
{
|
||||||
[Description("Wrapper class for the C2N-RTHS sensor")]
|
[Description("Wrapper class for the C2N-RTHS sensor")]
|
||||||
public class C2nRthsController : CrestronGenericBridgeableBaseDevice, IOnline
|
public class C2nRthsController : CrestronGenericBridgeableBaseDevice
|
||||||
{
|
{
|
||||||
private C2nRths _device;
|
private C2nRths _device;
|
||||||
|
|
||||||
public IntFeedback TemperatureFeedback { get; private set; }
|
public IntFeedback TemperatureFeedback { get; private set; }
|
||||||
public IntFeedback HumidityFeedback { get; private set; }
|
public IntFeedback HumidityFeedback { get; private set; }
|
||||||
public BoolFeedback IsOnline { get; private set; }
|
|
||||||
|
|
||||||
public C2nRthsController(string key, Func<DeviceConfig, C2nRths> preActivationFunc,
|
public C2nRthsController(string key, Func<DeviceConfig, C2nRths> preActivationFunc,
|
||||||
DeviceConfig config)
|
DeviceConfig config)
|
||||||
@@ -33,18 +32,11 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
|
|
||||||
TemperatureFeedback = new IntFeedback(() => _device.TemperatureFeedback.UShortValue);
|
TemperatureFeedback = new IntFeedback(() => _device.TemperatureFeedback.UShortValue);
|
||||||
HumidityFeedback = new IntFeedback(() => _device.HumidityFeedback.UShortValue);
|
HumidityFeedback = new IntFeedback(() => _device.HumidityFeedback.UShortValue);
|
||||||
IsOnline = new BoolFeedback(() => _device.IsOnline);
|
|
||||||
|
|
||||||
if (_device != null) _device.BaseEvent += DeviceOnBaseEvent;
|
if (_device != null) _device.BaseEvent += DeviceOnBaseEvent;
|
||||||
if (_device != null) _device.OnlineStatusChange += _device_OnlineStatusChange;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _device_OnlineStatusChange(GenericBase currentDevice, OnlineOfflineEventArgs args)
|
|
||||||
{
|
|
||||||
IsOnline.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DeviceOnBaseEvent(GenericBase device, BaseEventArgs args)
|
private void DeviceOnBaseEvent(GenericBase device, BaseEventArgs args)
|
||||||
{
|
{
|
||||||
@@ -149,9 +141,6 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
{
|
{
|
||||||
Debug.Console(1, "Factory Attempting to create new C2N-RTHS Device");
|
Debug.Console(1, "Factory Attempting to create new C2N-RTHS Device");
|
||||||
|
|
||||||
var control = CommFactory.GetControlPropertiesConfig(dc);
|
|
||||||
var cresnetId = control.CresnetIdInt;
|
|
||||||
|
|
||||||
return new C2nRthsController(dc.Key, GetC2nRthsDevice, dc);
|
return new C2nRthsController(dc.Key, GetC2nRthsDevice, dc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
[Description("Wrapper class for the Crestron StatusSign device")]
|
[Description("Wrapper class for the Crestron StatusSign device")]
|
||||||
public class StatusSignController : CrestronGenericBridgeableBaseDevice
|
public class StatusSignController : CrestronGenericBridgeableBaseDevice
|
||||||
{
|
{
|
||||||
private readonly StatusSign _device;
|
private StatusSign _device;
|
||||||
|
|
||||||
public BoolFeedback RedLedEnabledFeedback { get; private set; }
|
public BoolFeedback RedLedEnabledFeedback { get; private set; }
|
||||||
public BoolFeedback GreenLedEnabledFeedback { get; private set; }
|
public BoolFeedback GreenLedEnabledFeedback { get; private set; }
|
||||||
@@ -23,34 +23,40 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
public IntFeedback GreenLedBrightnessFeedback { get; private set; }
|
public IntFeedback GreenLedBrightnessFeedback { get; private set; }
|
||||||
public IntFeedback BlueLedBrightnessFeedback { get; private set; }
|
public IntFeedback BlueLedBrightnessFeedback { get; private set; }
|
||||||
|
|
||||||
public StatusSignController(string key, string name, GenericBase hardware) : base(key, name, hardware)
|
public StatusSignController(string key, Func<DeviceConfig, StatusSign> preActivationFunc, DeviceConfig config) : base(key, config.Name)
|
||||||
{
|
{
|
||||||
_device = hardware as StatusSign;
|
AddPreActivationAction(() =>
|
||||||
|
{
|
||||||
|
_device = preActivationFunc(config);
|
||||||
|
|
||||||
RedLedEnabledFeedback =
|
RegisterCrestronGenericBase(_device);
|
||||||
|
|
||||||
|
RedLedEnabledFeedback =
|
||||||
new BoolFeedback(
|
new BoolFeedback(
|
||||||
() =>
|
() =>
|
||||||
_device.Leds[(uint) StatusSign.Led.eLedColor.Red]
|
_device.Leds[(uint)StatusSign.Led.eLedColor.Red]
|
||||||
.ControlFeedback.BoolValue);
|
|
||||||
GreenLedEnabledFeedback =
|
|
||||||
new BoolFeedback(
|
|
||||||
() =>
|
|
||||||
_device.Leds[(uint) StatusSign.Led.eLedColor.Green]
|
|
||||||
.ControlFeedback.BoolValue);
|
|
||||||
BlueLedEnabledFeedback =
|
|
||||||
new BoolFeedback(
|
|
||||||
() =>
|
|
||||||
_device.Leds[(uint) StatusSign.Led.eLedColor.Blue]
|
|
||||||
.ControlFeedback.BoolValue);
|
.ControlFeedback.BoolValue);
|
||||||
|
GreenLedEnabledFeedback =
|
||||||
|
new BoolFeedback(
|
||||||
|
() =>
|
||||||
|
_device.Leds[(uint)StatusSign.Led.eLedColor.Green]
|
||||||
|
.ControlFeedback.BoolValue);
|
||||||
|
BlueLedEnabledFeedback =
|
||||||
|
new BoolFeedback(
|
||||||
|
() =>
|
||||||
|
_device.Leds[(uint)StatusSign.Led.eLedColor.Blue]
|
||||||
|
.ControlFeedback.BoolValue);
|
||||||
|
|
||||||
RedLedBrightnessFeedback =
|
RedLedBrightnessFeedback =
|
||||||
new IntFeedback(() => (int) _device.Leds[(uint) StatusSign.Led.eLedColor.Red].BrightnessFeedback);
|
new IntFeedback(() => (int)_device.Leds[(uint)StatusSign.Led.eLedColor.Red].BrightnessFeedback);
|
||||||
GreenLedBrightnessFeedback =
|
GreenLedBrightnessFeedback =
|
||||||
new IntFeedback(() => (int) _device.Leds[(uint) StatusSign.Led.eLedColor.Green].BrightnessFeedback);
|
new IntFeedback(() => (int)_device.Leds[(uint)StatusSign.Led.eLedColor.Green].BrightnessFeedback);
|
||||||
BlueLedBrightnessFeedback =
|
BlueLedBrightnessFeedback =
|
||||||
new IntFeedback(() => (int) _device.Leds[(uint) StatusSign.Led.eLedColor.Blue].BrightnessFeedback);
|
new IntFeedback(() => (int)_device.Leds[(uint)StatusSign.Led.eLedColor.Blue].BrightnessFeedback);
|
||||||
|
|
||||||
if (_device != null) _device.BaseEvent += _device_BaseEvent;
|
if (_device != null) _device.BaseEvent += _device_BaseEvent;
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _device_BaseEvent(GenericBase device, BaseEventArgs args)
|
void _device_BaseEvent(GenericBase device, BaseEventArgs args)
|
||||||
@@ -167,23 +173,51 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
|
|
||||||
device.SetColor(redBrightness, greenBrightness, blueBrightness);
|
device.SetColor(redBrightness, greenBrightness, blueBrightness);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public class StatusSignControllerFactory : EssentialsDeviceFactory<StatusSignController>
|
#region PreActivation
|
||||||
{
|
|
||||||
public StatusSignControllerFactory()
|
private static StatusSign GetStatusSignDevice(DeviceConfig dc)
|
||||||
{
|
{
|
||||||
TypeNames = new List<string>() { "statussign" };
|
|
||||||
}
|
|
||||||
|
|
||||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
|
||||||
{
|
|
||||||
Debug.Console(1, "Factory Attempting to create new StatusSign Device");
|
|
||||||
|
|
||||||
var control = CommFactory.GetControlPropertiesConfig(dc);
|
var control = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
var cresnetId = control.CresnetIdInt;
|
var cresnetId = control.CresnetIdInt;
|
||||||
|
var branchId = control.ControlPortNumber;
|
||||||
|
var parentKey = string.IsNullOrEmpty(control.ControlPortDevKey) ? "processor" : control.ControlPortDevKey;
|
||||||
|
|
||||||
return new StatusSignController(dc.Key, dc.Name, new StatusSign(cresnetId, Global.ControlSystem));
|
if (parentKey.Equals("processor", StringComparison.CurrentCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
Debug.Console(0, "Device {0} is a valid cresnet master - creating new StatusSign");
|
||||||
|
return new StatusSign(cresnetId, Global.ControlSystem);
|
||||||
|
}
|
||||||
|
var cresnetBridge = DeviceManager.GetDeviceForKey(parentKey) as ICresnetBridge;
|
||||||
|
|
||||||
|
if (cresnetBridge != null)
|
||||||
|
{
|
||||||
|
Debug.Console(0, "Device {0} is a valid cresnet master - creating new StatusSign");
|
||||||
|
return new StatusSign(cresnetId, cresnetBridge.Branches[branchId]);
|
||||||
|
}
|
||||||
|
Debug.Console(0, "Device {0} is not a valid cresnet master", branchId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public class StatusSignControllerFactory : EssentialsDeviceFactory<StatusSignController>
|
||||||
|
{
|
||||||
|
public StatusSignControllerFactory()
|
||||||
|
{
|
||||||
|
TypeNames = new List<string>() { "statussign" };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||||
|
{
|
||||||
|
Debug.Console(1, "Factory Attempting to create new StatusSign Device");
|
||||||
|
|
||||||
|
var control = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
|
var cresnetId = control.CresnetIdInt;
|
||||||
|
|
||||||
|
return new StatusSignController(dc.Key, GetStatusSignDevice, dc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user