mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-17 05:35:03 +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,9 +23,13 @@ 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);
|
||||||
|
|
||||||
|
RegisterCrestronGenericBase(_device);
|
||||||
|
|
||||||
RedLedEnabledFeedback =
|
RedLedEnabledFeedback =
|
||||||
new BoolFeedback(
|
new BoolFeedback(
|
||||||
@@ -51,6 +55,8 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
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,7 +173,32 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
|
|
||||||
device.SetColor(redBrightness, greenBrightness, blueBrightness);
|
device.SetColor(redBrightness, greenBrightness, blueBrightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region PreActivation
|
||||||
|
|
||||||
|
private static StatusSign GetStatusSignDevice(DeviceConfig dc)
|
||||||
|
{
|
||||||
|
var control = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
|
var cresnetId = control.CresnetIdInt;
|
||||||
|
var branchId = control.ControlPortNumber;
|
||||||
|
var parentKey = string.IsNullOrEmpty(control.ControlPortDevKey) ? "processor" : control.ControlPortDevKey;
|
||||||
|
|
||||||
|
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 class StatusSignControllerFactory : EssentialsDeviceFactory<StatusSignController>
|
||||||
{
|
{
|
||||||
@@ -183,7 +214,10 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
var control = CommFactory.GetControlPropertiesConfig(dc);
|
var control = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
var cresnetId = control.CresnetIdInt;
|
var cresnetId = control.CresnetIdInt;
|
||||||
|
|
||||||
return new StatusSignController(dc.Key, dc.Name, new StatusSign(cresnetId, Global.ControlSystem));
|
return new StatusSignController(dc.Key, GetStatusSignDevice, dc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user