mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-09 01:35:02 +00:00
Compare commits
1 Commits
feature/Ge
...
1.5.7-alph
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f35d13d4b |
87
GlsPartCnTesting_configurationFile_v00.01.json
Normal file
87
GlsPartCnTesting_configurationFile_v00.01.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"system": {},
|
||||
"system_url": "http://portal-QA.devcloud.pepperdash.com/templates/0f50640b-bc89-42d5-998f-81d137d3fc98#/template_summary",
|
||||
"template": {
|
||||
"devices": [
|
||||
{
|
||||
"key": "processor",
|
||||
"uid": 0,
|
||||
"type": "cp3n",
|
||||
"name": "CP3N",
|
||||
"group": "processor",
|
||||
"supportedConfigModes": [
|
||||
"compliance",
|
||||
"essentials"
|
||||
],
|
||||
"supportedSystemTypes": [
|
||||
"hudType",
|
||||
"presType",
|
||||
"vtcType",
|
||||
"custom"
|
||||
],
|
||||
"supportsCompliance": true,
|
||||
"properties": {}
|
||||
},
|
||||
{
|
||||
"key": "app1-occsensor1",
|
||||
"uid": 1,
|
||||
"type": "glsodtccn",
|
||||
"group": "api",
|
||||
"properties" : {
|
||||
"control": {
|
||||
"cresnetId": "91"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "app1-partitionsensor1",
|
||||
"uid": 1,
|
||||
"type": "glspartcn",
|
||||
"group": "api",
|
||||
"properties" : {
|
||||
"control": {
|
||||
"cresnetId": "90"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "app1-device-bridge",
|
||||
"uid": 3,
|
||||
"name": "Communication Bridge",
|
||||
"group": "api",
|
||||
"type": "eiscApiAdvanced",
|
||||
"properties": {
|
||||
"control": {
|
||||
"tcpSshProperties": {
|
||||
"address": "127.0.0.2",
|
||||
"port": 0
|
||||
},
|
||||
"ipid": "A1",
|
||||
"method": "ipidTcp"
|
||||
},
|
||||
"comment": "genericComm device joinStart is different than plugin device joinStart",
|
||||
"devices": [
|
||||
{
|
||||
"deviceKey": "app1-occsensor1",
|
||||
"joinStart": 201
|
||||
},
|
||||
{
|
||||
"deviceKey": "app1-partitionsensor1",
|
||||
"joinStart": 271
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"info": {
|
||||
"comment": "",
|
||||
"lastModifiedDate": "2017-03-06T23:14:40.290Z",
|
||||
"lastUid": 12,
|
||||
"processorType": "Cp3n",
|
||||
"requiredControlSofwareVersion": "",
|
||||
"systemType": "huddle"
|
||||
},
|
||||
"rooms": [],
|
||||
"tieLines": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash_Essentials_Core.Bridges.JoinMaps
|
||||
{
|
||||
public class GlsPartitionSensorJoinMap : JoinMapBaseAdvanced
|
||||
{
|
||||
[JoinName("IsOnline")]
|
||||
public JoinDataComplete IsOnline = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 1,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Is Online",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("Name")]
|
||||
public JoinDataComplete Name = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 1,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Name",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
[JoinName("Enable")]
|
||||
public JoinDataComplete Enable = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 2,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Enable",
|
||||
JoinCapabilities = eJoinCapabilities.ToFromSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("PartitionSensed")]
|
||||
public JoinDataComplete PartitionSensed = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 3,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Partition Sensed",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("PartitionNotSensed")]
|
||||
public JoinDataComplete PartitionNotSensed = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 4,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Partition Not Sensed",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("IncreaseSensitivity")]
|
||||
public JoinDataComplete IncreaseSensitivity = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 6,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Increase Sensitivity",
|
||||
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("DecreaseSensitivity")]
|
||||
public JoinDataComplete DecreaseSensitivity = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 7,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Decrease Sensitivity",
|
||||
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("Sensitivity")]
|
||||
public JoinDataComplete Sensitivity = new JoinDataComplete(
|
||||
new JoinData()
|
||||
{
|
||||
JoinNumber = 2,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata()
|
||||
{
|
||||
Description = "Sensor Sensitivity",
|
||||
JoinCapabilities = eJoinCapabilities.ToFromSIMPL,
|
||||
JoinType = eJoinType.Analog
|
||||
});
|
||||
|
||||
public GlsPartitionSensorJoinMap(uint joinStart)
|
||||
: base(joinStart, typeof(GlsPartitionSensorJoinMap))
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,9 +18,9 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
||||
public IntFeedback TemperatureFeedback { get; private set; }
|
||||
public IntFeedback HumidityFeedback { get; private set; }
|
||||
|
||||
public C2nRthsController(string key, string name, GenericBase hardware) : base(key, name, hardware)
|
||||
public C2nRthsController(string key, string name, GenericBase sensor) : base(key, name, sensor)
|
||||
{
|
||||
_device = hardware as C2nRths;
|
||||
_device = sensor as C2nRths;
|
||||
|
||||
TemperatureFeedback = new IntFeedback(() => _device.TemperatureFeedback.UShortValue);
|
||||
HumidityFeedback = new IntFeedback(() => _device.HumidityFeedback.UShortValue);
|
||||
|
||||
@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
{
|
||||
private readonly C3Card _card;
|
||||
|
||||
public C3CardControllerBase(string key, string name, C3Card hardware) : base(key, name, hardware)
|
||||
public C3CardControllerBase(string key, string name, C3Card sensor) : base(key, name, sensor)
|
||||
{
|
||||
_card = hardware;
|
||||
_card = sensor;
|
||||
}
|
||||
|
||||
#region Overrides of Object
|
||||
|
||||
@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
{
|
||||
private readonly C3com3 _card;
|
||||
|
||||
public C3Com3Controller(string key, string name, C3com3 hardware) : base(key, name, hardware)
|
||||
public C3Com3Controller(string key, string name, C3com3 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_card = hardware;
|
||||
_card = sensor;
|
||||
}
|
||||
|
||||
#region Implementation of IComPorts
|
||||
|
||||
@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
{
|
||||
private readonly C3io16 _card;
|
||||
|
||||
public C3Io16Controller(string key, string name, C3io16 hardware) : base(key, name, hardware)
|
||||
public C3Io16Controller(string key, string name, C3io16 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_card = hardware;
|
||||
_card = sensor;
|
||||
}
|
||||
|
||||
#region Implementation of IIOPorts
|
||||
|
||||
@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
{
|
||||
private readonly C3ir8 _card;
|
||||
|
||||
public C3Ir8Controller(string key, string name, C3ir8 hardware) : base(key, name, hardware)
|
||||
public C3Ir8Controller(string key, string name, C3ir8 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_card = hardware;
|
||||
_card = sensor;
|
||||
}
|
||||
|
||||
#region Implementation of IIROutputPorts
|
||||
|
||||
@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
{
|
||||
private readonly C3ry16 _card;
|
||||
|
||||
public C3Ry16Controller(string key, string name, C3ry16 hardware) : base(key, name, hardware)
|
||||
public C3Ry16Controller(string key, string name, C3ry16 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_card = hardware;
|
||||
_card = sensor;
|
||||
}
|
||||
|
||||
#region Implementation of IRelayPorts
|
||||
|
||||
@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
{
|
||||
private readonly C3ry8 _card;
|
||||
|
||||
public C3Ry8Controller(string key, string name, C3ry8 hardware) : base(key, name, hardware)
|
||||
public C3Ry8Controller(string key, string name, C3ry8 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_card = hardware;
|
||||
_card = sensor;
|
||||
}
|
||||
|
||||
#region Implementation of IRelayPorts
|
||||
|
||||
@@ -18,9 +18,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
|
||||
private readonly Dictionary<string, Func<CenCi31, uint, C3CardControllerBase>> _cardDict;
|
||||
|
||||
public CenCi31Controller(string key, string name, CenCi31Configuration config, CenCi31 hardware) : base(key, name, hardware)
|
||||
public CenCi31Controller(string key, string name, CenCi31Configuration config, CenCi31 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_cardCage = hardware;
|
||||
_cardCage = sensor;
|
||||
|
||||
_config = config;
|
||||
|
||||
|
||||
@@ -18,9 +18,9 @@ namespace PepperDash.Essentials.Core.CrestronIO.Cards
|
||||
|
||||
private readonly Dictionary<string, Func<CenCi33, uint, C3CardControllerBase>> _cardDict;
|
||||
|
||||
public CenCi33Controller(string key, string name, CenCi33Configuration config, CenCi33 hardware) : base(key, name, hardware)
|
||||
public CenCi33Controller(string key, string name, CenCi33Configuration config, CenCi33 sensor) : base(key, name, sensor)
|
||||
{
|
||||
_cardCage = hardware;
|
||||
_cardCage = sensor;
|
||||
|
||||
_config = config;
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
||||
public IntFeedback GreenLedBrightnessFeedback { 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, string name, GenericBase sensor) : base(key, name, sensor)
|
||||
{
|
||||
_device = hardware as StatusSign;
|
||||
_device = sensor as StatusSign;
|
||||
|
||||
RedLedEnabledFeedback =
|
||||
new BoolFeedback(
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace PepperDash.Essentials.Core
|
||||
/// </summary>
|
||||
public abstract class CrestronGenericBaseDevice : EssentialsDevice, IOnline, IHasFeedback, ICommunicationMonitor, IUsageTracking
|
||||
{
|
||||
public virtual GenericBase Hardware { get; protected set; }
|
||||
public virtual GenericBase Sensor { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list containing the Outputs that we want to expose.
|
||||
@@ -28,18 +28,18 @@ namespace PepperDash.Essentials.Core
|
||||
/// </summary>
|
||||
public bool PreventRegistration { get; protected set; }
|
||||
|
||||
protected CrestronGenericBaseDevice(string key, string name, GenericBase hardware)
|
||||
protected CrestronGenericBaseDevice(string key, string name, GenericBase sensor)
|
||||
: base(key, name)
|
||||
{
|
||||
Feedbacks = new FeedbackCollection<Feedback>();
|
||||
|
||||
Hardware = hardware;
|
||||
IsOnline = new BoolFeedback("IsOnlineFeedback", () => Hardware.IsOnline);
|
||||
IsRegistered = new BoolFeedback("IsRegistered", () => Hardware.Registered);
|
||||
IpConnectionsText = new StringFeedback("IpConnectionsText", () => Hardware.ConnectedIpList != null ? string.Join(",", Hardware.ConnectedIpList.Select(cip => cip.DeviceIpAddress).ToArray()) : string.Empty);
|
||||
Sensor = sensor;
|
||||
IsOnline = new BoolFeedback("IsOnlineFeedback", () => Sensor.IsOnline);
|
||||
IsRegistered = new BoolFeedback("IsRegistered", () => Sensor.Registered);
|
||||
IpConnectionsText = new StringFeedback("IpConnectionsText", () => Sensor.ConnectedIpList != null ? string.Join(",", Sensor.ConnectedIpList.Select(cip => cip.DeviceIpAddress).ToArray()) : string.Empty);
|
||||
AddToFeedbackList(IsOnline, IpConnectionsText);
|
||||
|
||||
CommunicationMonitor = new CrestronGenericBaseCommunicationMonitor(this, hardware, 120000, 300000);
|
||||
CommunicationMonitor = new CrestronGenericBaseCommunicationMonitor(this, sensor, 120000, 300000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -53,7 +53,7 @@ namespace PepperDash.Essentials.Core
|
||||
{
|
||||
//Debug.Console(1, this, " Does not require registration. Skipping");
|
||||
|
||||
var response = Hardware.RegisterWithLogging(Key);
|
||||
var response = Sensor.RegisterWithLogging(Key);
|
||||
if (response != eDeviceRegistrationUnRegistrationResponse.Success)
|
||||
{
|
||||
//Debug.Console(0, this, "ERROR: Cannot register Crestron device: {0}", response);
|
||||
@@ -68,7 +68,7 @@ namespace PepperDash.Essentials.Core
|
||||
f.FireUpdate();
|
||||
}
|
||||
|
||||
Hardware.OnlineStatusChange += Hardware_OnlineStatusChange;
|
||||
Sensor.OnlineStatusChange += Hardware_OnlineStatusChange;
|
||||
CommunicationMonitor.Start();
|
||||
|
||||
return true;
|
||||
@@ -81,9 +81,9 @@ namespace PepperDash.Essentials.Core
|
||||
public override bool Deactivate()
|
||||
{
|
||||
CommunicationMonitor.Stop();
|
||||
Hardware.OnlineStatusChange -= Hardware_OnlineStatusChange;
|
||||
Sensor.OnlineStatusChange -= Hardware_OnlineStatusChange;
|
||||
|
||||
var success = Hardware.UnRegister() == eDeviceRegistrationUnRegistrationResponse.Success;
|
||||
var success = Sensor.UnRegister() == eDeviceRegistrationUnRegistrationResponse.Success;
|
||||
|
||||
IsRegistered.FireUpdate();
|
||||
|
||||
@@ -131,7 +131,7 @@ namespace PepperDash.Essentials.Core
|
||||
|
||||
public abstract class CrestronGenericBridgeableBaseDevice : CrestronGenericBaseDevice, IBridgeAdvanced
|
||||
{
|
||||
protected CrestronGenericBridgeableBaseDevice(string key, string name, GenericBase hardware) : base(key, name, hardware)
|
||||
protected CrestronGenericBridgeableBaseDevice(string key, string name, GenericBase sensor) : base(key, name, sensor)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -136,7 +136,8 @@
|
||||
<Compile Include="Bridges\JoinMaps\DmTxControllerJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\GenericLightingJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\GenericRelayControllerJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\GlsOccupancySensorBaseJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\GlsOccupancySensorJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\GlsPartitionSensorJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\HdMdNxM4kEControllerJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\HdMdxxxCEControllerJoinMap.cs" />
|
||||
<Compile Include="Bridges\JoinMaps\Hrxxx0WirelessRemoteControllerJoinMap.cs" />
|
||||
|
||||
@@ -40,10 +40,10 @@ namespace PepperDash.Essentials.DM.AirMedia
|
||||
public StringFeedback SerialNumberFeedback { get; private set; }
|
||||
public BoolFeedback AutomaticInputRoutingEnabledFeedback { get; private set; }
|
||||
|
||||
public AirMediaController(string key, string name, AmX00 device, DeviceConfig dc, AirMediaPropertiesConfig props)
|
||||
: base(key, name, device)
|
||||
public AirMediaController(string key, string name, AmX00 sensor, DeviceConfig dc, AirMediaPropertiesConfig props)
|
||||
: base(key, name, sensor)
|
||||
{
|
||||
AirMedia = device;
|
||||
AirMedia = sensor;
|
||||
|
||||
DeviceConfig = dc;
|
||||
|
||||
|
||||
@@ -29,10 +29,10 @@ namespace PepperDash.Essentials.DM.Endpoints.DGEs
|
||||
|
||||
CrestronTouchpanelPropertiesConfig PropertiesConfig;
|
||||
|
||||
public Dge100Controller(string key, string name, Dge100 device, DeviceConfig dc, CrestronTouchpanelPropertiesConfig props)
|
||||
:base(key, name, device)
|
||||
public Dge100Controller(string key, string name, Dge100 sensor, DeviceConfig dc, CrestronTouchpanelPropertiesConfig props)
|
||||
:base(key, name, sensor)
|
||||
{
|
||||
_dge = device;
|
||||
_dge = sensor;
|
||||
|
||||
_dc = dc;
|
||||
|
||||
|
||||
@@ -40,10 +40,10 @@ namespace PepperDash.Essentials.DM.Endpoints.DGEs
|
||||
private set;
|
||||
}
|
||||
|
||||
public DmDge200CController(string key, string name, DmDge200C device, DeviceConfig dc, CrestronTouchpanelPropertiesConfig props)
|
||||
: base(key, name, device, dc, props)
|
||||
public DmDge200CController(string key, string name, DmDge200C sensor, DeviceConfig dc, CrestronTouchpanelPropertiesConfig props)
|
||||
: base(key, name, sensor, dc, props)
|
||||
{
|
||||
_dge = device;
|
||||
_dge = sensor;
|
||||
|
||||
DmIn = new RoutingInputPort(DmPortName.DmIn, eRoutingSignalType.AudioVideo,
|
||||
eRoutingPortConnectionType.DmCat, 0, this);
|
||||
|
||||
@@ -23,10 +23,10 @@ namespace PepperDash.Essentials.DM
|
||||
public StringFeedback EdidPreferredTimingFeedback { get; protected set; }
|
||||
public StringFeedback EdidSerialNumberFeedback { get; protected set; }
|
||||
|
||||
protected DmRmcControllerBase(string key, string name, EndpointReceiverBase device)
|
||||
: base(key, name, device)
|
||||
protected DmRmcControllerBase(string key, string name, EndpointReceiverBase sensor)
|
||||
: base(key, name, sensor)
|
||||
{
|
||||
_rmc = device;
|
||||
_rmc = sensor;
|
||||
// if wired to a chassis, skip registration step in base class
|
||||
PreventRegistration = _rmc.DMOutput != null;
|
||||
|
||||
|
||||
@@ -159,8 +159,8 @@ namespace PepperDash.Essentials.DM
|
||||
|
||||
public abstract class BasicDmTxControllerBase : CrestronGenericBridgeableBaseDevice
|
||||
{
|
||||
protected BasicDmTxControllerBase(string key, string name, GenericBase hardware)
|
||||
: base(key, name, hardware)
|
||||
protected BasicDmTxControllerBase(string key, string name, GenericBase sensor)
|
||||
: base(key, name, sensor)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -177,18 +177,18 @@ namespace PepperDash.Essentials.DM
|
||||
public abstract StringFeedback ActiveVideoInputFeedback { get; protected set; }
|
||||
public RoutingInputPortWithVideoStatuses AnyVideoInput { get; protected set; }
|
||||
|
||||
protected DmTxControllerBase(string key, string name, EndpointTransmitterBase hardware)
|
||||
: base(key, name, hardware)
|
||||
protected DmTxControllerBase(string key, string name, EndpointTransmitterBase sensor)
|
||||
: base(key, name, sensor)
|
||||
{
|
||||
// if wired to a chassis, skip registration step in base class
|
||||
if (hardware.DMInput != null)
|
||||
if (sensor.DMInput != null)
|
||||
{
|
||||
this.PreventRegistration = true;
|
||||
}
|
||||
AddToFeedbackList(ActiveVideoInputFeedback);
|
||||
}
|
||||
|
||||
protected DmTxControllerBase(string key, string name, DmHDBasedTEndPoint hardware) : base(key, name, hardware)
|
||||
protected DmTxControllerBase(string key, string name, DmHDBasedTEndPoint sensor) : base(key, name, sensor)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -224,7 +224,7 @@ namespace PepperDash.Essentials.DM
|
||||
|
||||
bool hdcpTypeSimple;
|
||||
|
||||
if (tx.Hardware is DmTx4kX02CBase)
|
||||
if (tx.Sensor is DmTx4kX02CBase)
|
||||
hdcpTypeSimple = false;
|
||||
else
|
||||
hdcpTypeSimple = true;
|
||||
|
||||
@@ -116,6 +116,8 @@
|
||||
<Compile Include="ImageProcessors\TVOneCorioPropertiesConfig.cs" />
|
||||
<Compile Include="Occupancy\CenOdtOccupancySensorBaseController.cs" />
|
||||
<Compile Include="Occupancy\GlsOdtOccupancySensorController.cs" />
|
||||
<Compile Include="PartitionSensor\GlsPartitionSensorController.cs" />
|
||||
<Compile Include="PartitionSensor\GlsPartitionSensorControllerFactory.cs" />
|
||||
<Compile Include="Power Controllers\Digitallogger.cs" />
|
||||
<Compile Include="Power Controllers\DigitalLoggerPropertiesConfig.cs" />
|
||||
<Compile Include="ImageProcessors\AnalogWay\AnalongWayLiveCore.cs" />
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharpPro;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using Crestron.SimplSharpPro.GeneralIO;
|
||||
using Newtonsoft.Json;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash_Essentials_Core.Bridges.JoinMaps;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.PartitionSensor
|
||||
{
|
||||
[Description("Wrapper class for GLS Cresnet Partition Sensor")]
|
||||
public class GlsPartitionSensorController : CrestronGenericBridgeableBaseDevice
|
||||
{
|
||||
public GlsPartCn PartitionSensor { get; private set; }
|
||||
|
||||
public StringFeedback NameFeedback { get; private set; }
|
||||
|
||||
public BoolFeedback EnableFeedback { get; private set; }
|
||||
|
||||
public BoolFeedback PartitionSensedFeedback { get; private set; }
|
||||
public BoolFeedback PartitionNotSensedFeedback { get; private set; }
|
||||
|
||||
public IntFeedback SensitivityFeedback { get; private set; }
|
||||
|
||||
public bool InTestMode { get; private set; }
|
||||
public bool TestEnableFeedback { get; private set; }
|
||||
public bool TestPartitionSensedFeedback { get; private set; }
|
||||
public int TestSensitivityFeedback { get; private set; }
|
||||
|
||||
public Func<string> NameFeedbackFunc
|
||||
{
|
||||
get { return () => Name; }
|
||||
}
|
||||
|
||||
public Func<bool> EnableFeedbackFunc
|
||||
{
|
||||
get { return () => InTestMode ? TestEnableFeedback : PartitionSensor.EnableFeedback.BoolValue; }
|
||||
}
|
||||
|
||||
public Func<bool> PartitionSensedFeedbackFunc
|
||||
{
|
||||
get { return () => InTestMode ? TestPartitionSensedFeedback : PartitionSensor.PartitionSensedFeedback.BoolValue; }
|
||||
}
|
||||
|
||||
public Func<bool> PartitionNotSensedFeedbackFunc
|
||||
{
|
||||
get { return () => InTestMode ? TestPartitionSensedFeedback : PartitionSensor.PartitionNotSensedFeedback.BoolValue; }
|
||||
}
|
||||
|
||||
public Func<int> SensitivityFeedbackFunc
|
||||
{
|
||||
get { return () => InTestMode ? TestSensitivityFeedback : PartitionSensor.SensitivityFeedback.UShortValue; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="sensor"></param>
|
||||
public GlsPartitionSensorController(string key, string name, GlsPartCn sensor)
|
||||
: base(key, name, sensor)
|
||||
{
|
||||
PartitionSensor = sensor;
|
||||
|
||||
NameFeedback = new StringFeedback(NameFeedbackFunc);
|
||||
EnableFeedback = new BoolFeedback(EnableFeedbackFunc);
|
||||
PartitionSensedFeedback = new BoolFeedback(PartitionSensedFeedbackFunc);
|
||||
PartitionNotSensedFeedback = new BoolFeedback(PartitionNotSensedFeedbackFunc);
|
||||
SensitivityFeedback = new IntFeedback(SensitivityFeedbackFunc);
|
||||
|
||||
PartitionSensor.BaseEvent += PartitionSensor_BaseEvent;
|
||||
}
|
||||
|
||||
|
||||
private void PartitionSensor_BaseEvent(GenericBase device, BaseEventArgs args)
|
||||
{
|
||||
Debug.Console(2, this, "EventId: {0}, Index: {1}", args.EventId, args.Index);
|
||||
|
||||
switch (args.EventId)
|
||||
{
|
||||
case(GlsPartCn.EnableFeedbackEventId):
|
||||
{
|
||||
EnableFeedback.FireUpdate();
|
||||
break;
|
||||
}
|
||||
case(GlsPartCn.PartitionSensedFeedbackEventId):
|
||||
{
|
||||
PartitionSensedFeedback.FireUpdate();
|
||||
break;
|
||||
}
|
||||
case(GlsPartCn.PartitionNotSensedFeedbackEventId):
|
||||
{
|
||||
PartitionNotSensedFeedback.FireUpdate();
|
||||
break;
|
||||
}
|
||||
case(GlsPartCn.SensitivityFeedbackEventId):
|
||||
{
|
||||
SensitivityFeedback.FireUpdate();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
Debug.Console(2, this, "args.EventId: {0}", args.EventId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTestMode(bool mode)
|
||||
{
|
||||
InTestMode = mode;
|
||||
Debug.Console(1, this, "InTestMode: {0}", InTestMode.ToString());
|
||||
}
|
||||
|
||||
public void SetTestEnableState(bool state)
|
||||
{
|
||||
if (InTestMode)
|
||||
{
|
||||
TestEnableFeedback = state;
|
||||
Debug.Console(1, this, "TestEnableFeedback: {0}", TestEnableFeedback.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Console(1, this, "InTestMode: {0}, unable to set enable state: {1}", InTestMode.ToString(), state.ToString());
|
||||
}
|
||||
|
||||
public void SetTestPartitionSensedState(bool state)
|
||||
{
|
||||
if (InTestMode)
|
||||
{
|
||||
TestPartitionSensedFeedback = state;
|
||||
Debug.Console(1, this, "TestPartitionSensedFeedback: {0}", TestPartitionSensedFeedback.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Console(1, this, "InTestMode: {0}, unable to set partition state: {1}", InTestMode.ToString(), state.ToString());
|
||||
}
|
||||
|
||||
public void SetTestSensitivityValue(int value)
|
||||
{
|
||||
if (InTestMode)
|
||||
{
|
||||
TestSensitivityFeedback = value;
|
||||
Debug.Console(1, this, "TestSensitivityFeedback: {0}", TestSensitivityFeedback);
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Console(1, this, "InTestMode: {0}, unable to set sensitivity value: {1}", InTestMode.ToString(), value);
|
||||
}
|
||||
|
||||
public void SetEnableState(bool state)
|
||||
{
|
||||
if (PartitionSensor == null)
|
||||
return;
|
||||
|
||||
PartitionSensor.Enable.BoolValue = state;
|
||||
}
|
||||
|
||||
public void IncreaseSensitivity()
|
||||
{
|
||||
if (PartitionSensor == null)
|
||||
return;
|
||||
|
||||
PartitionSensor.IncreaseSensitivity();
|
||||
}
|
||||
|
||||
public void DecreaseSensitivity()
|
||||
{
|
||||
if (PartitionSensor == null)
|
||||
return;
|
||||
|
||||
PartitionSensor.DecreaseSensitivity();
|
||||
}
|
||||
|
||||
public void SetSensitivity(ushort value)
|
||||
{
|
||||
if (PartitionSensor == null)
|
||||
return;
|
||||
|
||||
PartitionSensor.Sensitivity.UShortValue = (ushort)value;
|
||||
}
|
||||
|
||||
|
||||
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||
{
|
||||
var joinMap = new GlsPartitionSensorJoinMap(joinStart);
|
||||
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
|
||||
|
||||
if (!string.IsNullOrEmpty(joinMapSerialized))
|
||||
joinMap = JsonConvert.DeserializeObject<GlsPartitionSensorJoinMap>(joinMapSerialized);
|
||||
|
||||
if (bridge != null)
|
||||
{
|
||||
bridge.AddJoinMap(Key, joinMap);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Console(0, this, "Please update config to use 'type': 'EiscApiAdvanced' to get all join map features for this device");
|
||||
}
|
||||
|
||||
Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||
Debug.Console(0, this, "Linking to Bridge Type {0}", GetType().Name);
|
||||
|
||||
// link input from simpl
|
||||
trilist.SetSigTrueAction(joinMap.Enable.JoinNumber, () => SetEnableState(true));
|
||||
trilist.SetSigFalseAction(joinMap.Enable.JoinNumber, () => SetEnableState(false));
|
||||
trilist.SetSigTrueAction(joinMap.IncreaseSensitivity.JoinNumber, IncreaseSensitivity);
|
||||
trilist.SetSigTrueAction(joinMap.DecreaseSensitivity.JoinNumber, DecreaseSensitivity);
|
||||
trilist.SetUShortSigAction(joinMap.Sensitivity.JoinNumber, SetSensitivity);
|
||||
|
||||
// link output to simpl
|
||||
IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]);
|
||||
EnableFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Enable.JoinNumber]);
|
||||
PartitionSensedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PartitionSensed.JoinNumber]);
|
||||
PartitionNotSensedFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PartitionNotSensed.JoinNumber]);
|
||||
SensitivityFeedback.LinkInputSig(trilist.UShortInput[joinMap.Sensitivity.JoinNumber]);
|
||||
|
||||
PartitionSensor.OnlineStatusChange += (o, a) =>
|
||||
{
|
||||
if (a.DeviceOnLine)
|
||||
{
|
||||
FeedbacksFireUpdates();
|
||||
}
|
||||
};
|
||||
|
||||
trilist.OnlineStatusChange += (o, a) =>
|
||||
{
|
||||
if (a.DeviceOnLine)
|
||||
{
|
||||
FeedbacksFireUpdates();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void FeedbacksFireUpdates()
|
||||
{
|
||||
IsOnline.FireUpdate();
|
||||
NameFeedback.FireUpdate();
|
||||
EnableFeedback.FireUpdate();
|
||||
PartitionSensedFeedback.FireUpdate();
|
||||
PartitionNotSensedFeedback.FireUpdate();
|
||||
SensitivityFeedback.FireUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharpPro.GeneralIO;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Devices.Common.Occupancy;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.PartitionSensor
|
||||
{
|
||||
public class GlsPartitionSensorControllerFactory : EssentialsDeviceFactory<GlsPartitionSensorController>
|
||||
{
|
||||
public GlsPartitionSensorControllerFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "glspartcn" };
|
||||
}
|
||||
|
||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||
{
|
||||
Debug.Console(2, "Factory Attempting to create new GLS-PART-CN Device");
|
||||
|
||||
var typeName = dc.Type.ToLower();
|
||||
var key = dc.Key;
|
||||
var name = dc.Name;
|
||||
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
||||
if (comm == null)
|
||||
{
|
||||
Debug.Console(0, "ERROR: Control Properties Config are null");
|
||||
return null;
|
||||
}
|
||||
|
||||
var sensor = new GlsPartCn(comm.CresnetIdInt, Global.ControlSystem);
|
||||
return new GlsPartitionSensorController(dc.Key, dc.Name, sensor);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user