mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
Merged in bugfix/ecs-1160 (pull request #33)
Bugfix/ecs 1160 Approved-by: Neil Dorin <ndorin@pepperdash.com>
This commit is contained in:
@@ -158,6 +158,11 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
(device as DigitalLogger).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey);
|
(device as DigitalLogger).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
else if (device is PepperDash.Essentials.Devices.Common.Occupancy.GlsOccupancySensorBaseController)
|
||||||
|
{
|
||||||
|
(device as PepperDash.Essentials.Devices.Common.Occupancy.GlsOccupancySensorBaseController).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,110 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
|
|
||||||
|
using PepperDash.Essentials.Devices.Common.Occupancy;
|
||||||
|
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Bridges
|
||||||
|
{
|
||||||
|
public static class GlsOccupancySensorBaseControllerApiExtensions
|
||||||
|
{
|
||||||
|
public static void LinkToApi(this GlsOccupancySensorBaseController occController, BasicTriList trilist, uint joinStart, string joinMapKey)
|
||||||
|
{
|
||||||
|
GlsOccupancySensorBaseJoinMap joinMap = new GlsOccupancySensorBaseJoinMap();
|
||||||
|
|
||||||
|
var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey);
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(joinMapSerialized))
|
||||||
|
joinMap = JsonConvert.DeserializeObject<GlsOccupancySensorBaseJoinMap>(joinMapSerialized);
|
||||||
|
|
||||||
|
joinMap.OffsetJoinNumbers(joinStart);
|
||||||
|
|
||||||
|
Debug.Console(1, occController, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
|
|
||||||
|
#region Single and Dual Sensor Stuff
|
||||||
|
occController.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
||||||
|
|
||||||
|
// Occupied status
|
||||||
|
trilist.SetSigTrueAction(joinMap.ForceOccupied, new Action(() => occController.ForceOccupied()));
|
||||||
|
trilist.SetSigTrueAction(joinMap.ForceVacant, new Action(() => occController.ForceVacant()));
|
||||||
|
occController.RoomIsOccupiedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RoomOccupiedFeedback]);
|
||||||
|
occController.RoomIsOccupiedFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.RoomVacantFeedback]);
|
||||||
|
occController.RawOccupancyFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RawOccupancyFeedback]);
|
||||||
|
|
||||||
|
// Timouts
|
||||||
|
trilist.SetUShortSigAction(joinMap.Timeout, new Action<ushort>((u) => occController.SetRemoteTimeout(u)));
|
||||||
|
occController.CurrentTimeoutFeedback.LinkInputSig(trilist.UShortInput[joinMap.Timeout]);
|
||||||
|
occController.LocalTimoutFeedback.LinkInputSig(trilist.UShortInput[joinMap.TimeoutLocalFeedback]);
|
||||||
|
|
||||||
|
// LED Flash
|
||||||
|
trilist.SetSigTrueAction(joinMap.EnableLedFlash, new Action(() => occController.SetLedFlashEnable(true)));
|
||||||
|
trilist.SetSigTrueAction(joinMap.DisableLedFlash, new Action(() => occController.SetLedFlashEnable(false)));
|
||||||
|
occController.LedFlashEnabledFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.EnableLedFlash]);
|
||||||
|
|
||||||
|
// Short Timeout
|
||||||
|
trilist.SetSigTrueAction(joinMap.EnableShortTimeout, new Action(() => occController.SetShortTimeoutState(true)));
|
||||||
|
trilist.SetSigTrueAction(joinMap.DisableShortTimeout, new Action(() => occController.SetShortTimeoutState(false)));
|
||||||
|
occController.ShortTimeoutEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.EnableShortTimeout]);
|
||||||
|
|
||||||
|
// PIR Sensor
|
||||||
|
trilist.SetSigTrueAction(joinMap.EnablePir, new Action(() => occController.SetPirEnable(true)));
|
||||||
|
trilist.SetSigTrueAction(joinMap.DisablePir, new Action(() => occController.SetPirEnable(false)));
|
||||||
|
occController.PirSensorEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.EnablePir]);
|
||||||
|
|
||||||
|
// PIR Sensitivity in Occupied State
|
||||||
|
trilist.SetBoolSigAction(joinMap.IncrementPirInOccupiedState, new Action<bool>((b) => occController.IncrementPirSensitivityInOccupiedState(b)));
|
||||||
|
trilist.SetBoolSigAction(joinMap.DecrementPirInOccupiedState, new Action<bool>((b) => occController.DecrementPirSensitivityInOccupiedState(b)));
|
||||||
|
occController.PirSensitivityInOccupiedStateFeedback.LinkInputSig(trilist.UShortInput[joinMap.PirSensitivityInOccupiedState]);
|
||||||
|
|
||||||
|
// PIR Sensitivity in Vacant State
|
||||||
|
trilist.SetBoolSigAction(joinMap.IncrementPirInVacantState, new Action<bool>((b) => occController.IncrementPirSensitivityInVacantState(b)));
|
||||||
|
trilist.SetBoolSigAction(joinMap.DecrementPirInVacantState, new Action<bool>((b) => occController.DecrementPirSensitivityInVacantState(b)));
|
||||||
|
occController.PirSensitivityInVacantStateFeedback.LinkInputSig(trilist.UShortInput[joinMap.PirSensitivityInVacantState]);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Dual Technology Sensor Stuff
|
||||||
|
var odtOccController = occController as GlsOdtOccupancySensorController;
|
||||||
|
|
||||||
|
if (odtOccController != null)
|
||||||
|
{
|
||||||
|
// OR When Vacated
|
||||||
|
trilist.SetBoolSigAction(joinMap.OrWhenVacated, new Action<bool>((b) => odtOccController.SetOrWhenVacatedState(b)));
|
||||||
|
odtOccController.OrWhenVacatedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.OrWhenVacated]);
|
||||||
|
|
||||||
|
// AND When Vacated
|
||||||
|
trilist.SetBoolSigAction(joinMap.AndWhenVacated, new Action<bool>((b) => odtOccController.SetAndWhenVacatedState(b)));
|
||||||
|
odtOccController.AndWhenVacatedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.AndWhenVacated]);
|
||||||
|
|
||||||
|
// Ultrasonic A Sensor
|
||||||
|
trilist.SetSigTrueAction(joinMap.EnableUsA, new Action(() => odtOccController.SetUsAEnable(true)));
|
||||||
|
trilist.SetSigTrueAction(joinMap.DisableUsA, new Action(() => odtOccController.SetUsAEnable(false)));
|
||||||
|
odtOccController.UltrasonicAEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.EnableUsA]);
|
||||||
|
|
||||||
|
// Ultrasonic B Sensor
|
||||||
|
trilist.SetSigTrueAction(joinMap.EnableUsB, new Action(() => odtOccController.SetUsBEnable(true)));
|
||||||
|
trilist.SetSigTrueAction(joinMap.DisableUsB, new Action(() => odtOccController.SetUsBEnable(false)));
|
||||||
|
odtOccController.UltrasonicAEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.EnableUsB]);
|
||||||
|
|
||||||
|
// US Sensitivity in Occupied State
|
||||||
|
trilist.SetBoolSigAction(joinMap.IncrementUsInOccupiedState, new Action<bool>((b) => odtOccController.IncrementUsSensitivityInOccupiedState(b)));
|
||||||
|
trilist.SetBoolSigAction(joinMap.DecrementUsInOccupiedState, new Action<bool>((b) => odtOccController.DecrementUsSensitivityInOccupiedState(b)));
|
||||||
|
odtOccController.UltrasonicSensitivityInOccupiedStateFeedback.LinkInputSig(trilist.UShortInput[joinMap.UsSensitivityInOccupiedState]);
|
||||||
|
|
||||||
|
// US Sensitivity in Vacant State
|
||||||
|
trilist.SetBoolSigAction(joinMap.IncrementUsInVacantState, new Action<bool>((b) => odtOccController.IncrementUsSensitivityInVacantState(b)));
|
||||||
|
trilist.SetBoolSigAction(joinMap.DecrementUsInVacantState, new Action<bool>((b) => odtOccController.DecrementUsSensitivityInVacantState(b)));
|
||||||
|
odtOccController.UltrasonicSensitivityInVacantStateFeedback.LinkInputSig(trilist.UShortInput[joinMap.UsSensitivityInVacantState]);
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Bridges
|
||||||
|
{
|
||||||
|
public class GlsOccupancySensorBaseJoinMap : JoinMapBase
|
||||||
|
{
|
||||||
|
#region Digitals
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// High when device is online
|
||||||
|
/// </summary>
|
||||||
|
public uint IsOnline { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Forces the device to report occupied status
|
||||||
|
/// </summary>
|
||||||
|
public uint ForceOccupied { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Forces the device to report vacant status
|
||||||
|
/// </summary>
|
||||||
|
public uint ForceVacant { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Enables raw status reporting
|
||||||
|
/// </summary>
|
||||||
|
public uint EnableRawStates { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// High when raw occupancy is detected
|
||||||
|
/// </summary>
|
||||||
|
public uint RawOccupancyFeedback { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// High when occupancy is detected
|
||||||
|
/// </summary>
|
||||||
|
public uint RoomOccupiedFeedback { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Hich when occupancy is detected in the grace period
|
||||||
|
/// </summary>
|
||||||
|
public uint GraceOccupancyDetectedFeedback { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// High when vacancy is detected
|
||||||
|
/// </summary>
|
||||||
|
public uint RoomVacantFeedback { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables the LED Flash when set high
|
||||||
|
/// </summary>
|
||||||
|
public uint EnableLedFlash { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Disables the LED flash when set high
|
||||||
|
/// </summary>
|
||||||
|
public uint DisableLedFlash { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Enables the Short Timeout
|
||||||
|
/// </summary>
|
||||||
|
public uint EnableShortTimeout { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Disables the Short Timout
|
||||||
|
/// </summary>
|
||||||
|
public uint DisableShortTimeout { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Set high to enable one technology to trigger occupancy
|
||||||
|
/// </summary>
|
||||||
|
public uint OrWhenVacated { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Set high to require both technologies to trigger occupancy
|
||||||
|
/// </summary>
|
||||||
|
public uint AndWhenVacated { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Enables Ultrasonic Sensor A
|
||||||
|
/// </summary>
|
||||||
|
public uint EnableUsA { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Disables Ultrasonic Sensor A
|
||||||
|
/// </summary>
|
||||||
|
public uint DisableUsA { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Enables Ultrasonic Sensor B
|
||||||
|
/// </summary>
|
||||||
|
public uint EnableUsB { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Disables Ultrasonic Sensor B
|
||||||
|
/// </summary>
|
||||||
|
public uint DisableUsB { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Enables Pir
|
||||||
|
/// </summary>
|
||||||
|
public uint EnablePir { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Disables Pir
|
||||||
|
/// </summary>
|
||||||
|
public uint DisablePir { get; set; }
|
||||||
|
public uint IncrementUsInOccupiedState { get; set; }
|
||||||
|
public uint DecrementUsInOccupiedState { get; set; }
|
||||||
|
public uint IncrementUsInVacantState { get; set; }
|
||||||
|
public uint DecrementUsInVacantState { get; set; }
|
||||||
|
public uint IncrementPirInOccupiedState { get; set; }
|
||||||
|
public uint DecrementPirInOccupiedState { get; set; }
|
||||||
|
public uint IncrementPirInVacantState { get; set; }
|
||||||
|
public uint DecrementPirInVacantState { get; set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Analogs
|
||||||
|
/// <summary>
|
||||||
|
/// Sets adn reports the remote timeout value
|
||||||
|
/// </summary>
|
||||||
|
public uint Timeout { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Reports the local timeout value
|
||||||
|
/// </summary>
|
||||||
|
public uint TimeoutLocalFeedback { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the minimum internal photo sensor value and reports the current level
|
||||||
|
/// </summary>
|
||||||
|
public uint InternalPhotoSensorValue { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the minimum external photo sensor value and reports the current level
|
||||||
|
/// </summary>
|
||||||
|
public uint ExternalPhotoSensorValue { get; set; }
|
||||||
|
|
||||||
|
public uint UsSensitivityInOccupiedState { get; set; }
|
||||||
|
|
||||||
|
public uint UsSensitivityInVacantState { get; set; }
|
||||||
|
|
||||||
|
public uint PirSensitivityInOccupiedState { get; set; }
|
||||||
|
|
||||||
|
public uint PirSensitivityInVacantState { get; set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public GlsOccupancySensorBaseJoinMap()
|
||||||
|
{
|
||||||
|
IsOnline = 1;
|
||||||
|
ForceOccupied = 2;
|
||||||
|
ForceVacant = 3;
|
||||||
|
EnableRawStates = 4;
|
||||||
|
RoomOccupiedFeedback = 2;
|
||||||
|
GraceOccupancyDetectedFeedback = 3;
|
||||||
|
RoomVacantFeedback = 4;
|
||||||
|
RawOccupancyFeedback = 5;
|
||||||
|
EnableLedFlash = 11;
|
||||||
|
DisableLedFlash = 12;
|
||||||
|
EnableShortTimeout = 13;
|
||||||
|
DisableShortTimeout = 14;
|
||||||
|
OrWhenVacated = 15;
|
||||||
|
AndWhenVacated = 16;
|
||||||
|
EnableUsA = 17;
|
||||||
|
DisableUsA = 18;
|
||||||
|
EnableUsB = 19;
|
||||||
|
DisableUsB = 20;
|
||||||
|
EnablePir = 21;
|
||||||
|
DisablePir = 22;
|
||||||
|
DisablePir = 23;
|
||||||
|
IncrementUsInOccupiedState = 24;
|
||||||
|
DecrementUsInOccupiedState = 25;
|
||||||
|
IncrementUsInVacantState = 26;
|
||||||
|
DecrementUsInVacantState = 27;
|
||||||
|
IncrementPirInOccupiedState = 28;
|
||||||
|
DecrementPirInOccupiedState = 29;
|
||||||
|
IncrementPirInVacantState = 30;
|
||||||
|
DecrementPirInVacantState = 31;
|
||||||
|
|
||||||
|
Timeout = 1;
|
||||||
|
TimeoutLocalFeedback = 2;
|
||||||
|
InternalPhotoSensorValue = 3;
|
||||||
|
ExternalPhotoSensorValue = 4;
|
||||||
|
UsSensitivityInOccupiedState = 5;
|
||||||
|
UsSensitivityInVacantState = 6;
|
||||||
|
PirSensitivityInOccupiedState = 7;
|
||||||
|
PirSensitivityInVacantState = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OffsetJoinNumbers(uint joinStart)
|
||||||
|
{
|
||||||
|
var joinOffset = joinStart - 1;
|
||||||
|
|
||||||
|
IsOnline = IsOnline + joinOffset;
|
||||||
|
ForceOccupied = ForceOccupied + joinOffset;
|
||||||
|
ForceVacant = ForceVacant + joinOffset;
|
||||||
|
EnableRawStates = EnableRawStates + joinOffset;
|
||||||
|
RoomOccupiedFeedback = RoomOccupiedFeedback + joinOffset;
|
||||||
|
GraceOccupancyDetectedFeedback = GraceOccupancyDetectedFeedback + joinOffset;
|
||||||
|
RoomVacantFeedback = RoomVacantFeedback + joinOffset;
|
||||||
|
RawOccupancyFeedback = RawOccupancyFeedback + joinOffset;
|
||||||
|
EnableLedFlash = EnableLedFlash + joinOffset;
|
||||||
|
DisableLedFlash = DisableLedFlash + joinOffset;
|
||||||
|
EnableShortTimeout = EnableShortTimeout + joinOffset;
|
||||||
|
DisableShortTimeout = DisableShortTimeout + joinOffset;
|
||||||
|
OrWhenVacated = OrWhenVacated + joinOffset;
|
||||||
|
AndWhenVacated = AndWhenVacated + joinOffset;
|
||||||
|
EnableUsA = EnableUsA + joinOffset;
|
||||||
|
DisableUsA = DisableUsA + joinOffset;
|
||||||
|
EnableUsB = EnableUsB + joinOffset;
|
||||||
|
DisableUsB = DisableUsB + joinOffset;
|
||||||
|
EnablePir = EnablePir + joinOffset;
|
||||||
|
DisablePir = DisablePir + joinOffset;
|
||||||
|
DisablePir = DisablePir + joinOffset;
|
||||||
|
IncrementUsInOccupiedState = IncrementUsInOccupiedState + joinOffset;
|
||||||
|
DecrementUsInOccupiedState = DecrementUsInOccupiedState + joinOffset;
|
||||||
|
IncrementUsInVacantState = IncrementUsInVacantState + joinOffset;
|
||||||
|
DecrementUsInVacantState = DecrementUsInVacantState + joinOffset;
|
||||||
|
IncrementPirInOccupiedState = IncrementPirInOccupiedState + joinOffset;
|
||||||
|
DecrementPirInOccupiedState = DecrementPirInOccupiedState + joinOffset;
|
||||||
|
IncrementPirInVacantState = IncrementPirInVacantState + joinOffset;
|
||||||
|
DecrementPirInVacantState = DecrementPirInVacantState + joinOffset;
|
||||||
|
|
||||||
|
Timeout = Timeout + joinOffset;
|
||||||
|
TimeoutLocalFeedback = TimeoutLocalFeedback + joinOffset;
|
||||||
|
InternalPhotoSensorValue = InternalPhotoSensorValue + joinOffset;
|
||||||
|
ExternalPhotoSensorValue = ExternalPhotoSensorValue + joinOffset;
|
||||||
|
UsSensitivityInOccupiedState = UsSensitivityInOccupiedState + joinOffset;
|
||||||
|
UsSensitivityInVacantState = UsSensitivityInVacantState + joinOffset;
|
||||||
|
PirSensitivityInOccupiedState = PirSensitivityInOccupiedState + joinOffset;
|
||||||
|
PirSensitivityInVacantState = PirSensitivityInVacantState + joinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -129,6 +129,7 @@
|
|||||||
<Compile Include="Bridges\DmTxControllerBridge.cs" />
|
<Compile Include="Bridges\DmTxControllerBridge.cs" />
|
||||||
<Compile Include="Bridges\GenericLightingBridge.cs" />
|
<Compile Include="Bridges\GenericLightingBridge.cs" />
|
||||||
<Compile Include="Bridges\GenericRelayDeviceBridge.cs" />
|
<Compile Include="Bridges\GenericRelayDeviceBridge.cs" />
|
||||||
|
<Compile Include="Bridges\GlsOccupancySensorBaseControllerBridge.cs" />
|
||||||
<Compile Include="Bridges\HdMdxxxCEControllerBridge.cs" />
|
<Compile Include="Bridges\HdMdxxxCEControllerBridge.cs" />
|
||||||
<Compile Include="Bridges\IBasicCommunicationBridge.cs" />
|
<Compile Include="Bridges\IBasicCommunicationBridge.cs" />
|
||||||
<Compile Include="Bridges\DmRmcControllerBridge.cs" />
|
<Compile Include="Bridges\DmRmcControllerBridge.cs" />
|
||||||
@@ -149,6 +150,7 @@
|
|||||||
<Compile Include="Bridges\JoinMaps\HdMdxxxCEControllerJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\HdMdxxxCEControllerJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\IBasicCommunicationJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\IBasicCommunicationJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\IDigitalInputJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\IDigitalInputJoinMap.cs" />
|
||||||
|
<Compile Include="Bridges\JoinMaps\GlsOccupancySensorBaseJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\SystemMonitorJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\SystemMonitorJoinMap.cs" />
|
||||||
<Compile Include="Bridges\SystemMonitorBridge.cs" />
|
<Compile Include="Bridges\SystemMonitorBridge.cs" />
|
||||||
<Compile Include="Configuration ORIGINAL\Builders\TPConfig.cs" />
|
<Compile Include="Configuration ORIGINAL\Builders\TPConfig.cs" />
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ namespace PepperDash.Essentials.DM
|
|||||||
var cecPort = inputCard.HdmiInput as ICec;
|
var cecPort = inputCard.HdmiInput as ICec;
|
||||||
AddHdmiInCardPorts(number, cecPort);
|
AddHdmiInCardPorts(number, cecPort);
|
||||||
}
|
}
|
||||||
else if (type == "dmcHdDsp")
|
else if (type == "dmchddsp")
|
||||||
{
|
{
|
||||||
var inputCard = new DmcHdDsp(number, this.Chassis);
|
var inputCard = new DmcHdDsp(number, this.Chassis);
|
||||||
var cecPort = inputCard.HdmiInput as ICec;
|
var cecPort = inputCard.HdmiInput as ICec;
|
||||||
@@ -307,7 +307,7 @@ namespace PepperDash.Essentials.DM
|
|||||||
var cecPort = inputCard.HdmiInput as ICec;
|
var cecPort = inputCard.HdmiInput as ICec;
|
||||||
AddHdmiInCardPorts(number, cecPort);
|
AddHdmiInCardPorts(number, cecPort);
|
||||||
}
|
}
|
||||||
else if (type == "dmc4kHdDsp")
|
else if (type == "dmc4khddsp")
|
||||||
{
|
{
|
||||||
var inputCard = new Dmc4kHdDsp(number, this.Chassis);
|
var inputCard = new Dmc4kHdDsp(number, this.Chassis);
|
||||||
var cecPort = inputCard.HdmiInput as ICec;
|
var cecPort = inputCard.HdmiInput as ICec;
|
||||||
@@ -604,7 +604,7 @@ namespace PepperDash.Essentials.DM
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void AddOutputPortWithDebug(string cardName, string portName, eRoutingSignalType sigType, eRoutingPortConnectionType portType, object selector, ICec cecPort)
|
void AddOutputPortWithDebug(string cardName, string portName, eRoutingSignalType sigType, eRoutingPortConnectionType portType, object selector, ICec cecPort)
|
||||||
{
|
{
|
||||||
var portKey = string.Format("outputCard{0}--{1}", cardName, portName);
|
var portKey = string.Format("{0}--{1}", cardName, portName);
|
||||||
Debug.Console(2, this, "Adding output port '{0}'", portKey);
|
Debug.Console(2, this, "Adding output port '{0}'", portKey);
|
||||||
var outputPort = new RoutingOutputPort(portKey, sigType, portType, selector, this);
|
var outputPort = new RoutingOutputPort(portKey, sigType, portType, selector, this);
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ namespace PepperDash.Essentials.DM
|
|||||||
|
|
||||||
RemoteEndDetectedFeedback = new BoolFeedback(() => TxRxPair.RemoteEndDetectedOnFeedback.BoolValue);
|
RemoteEndDetectedFeedback = new BoolFeedback(() => TxRxPair.RemoteEndDetectedOnFeedback.BoolValue);
|
||||||
|
|
||||||
AutoRouteOnFeedback = new BoolFeedback(() => TxRxPair.ReceiverAutoModeOnFeedback.BoolValue);
|
AutoRouteOnFeedback = new BoolFeedback(() => TxRxPair.TransmitterAutoModeOnFeedback.BoolValue);
|
||||||
|
|
||||||
PriorityRoutingOnFeedback = new BoolFeedback(() => TxRxPair.PriorityRoutingOnFeedback.BoolValue);
|
PriorityRoutingOnFeedback = new BoolFeedback(() => TxRxPair.PriorityRoutingOnFeedback.BoolValue);
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
if (args.EventId == DMSystemEventIds.RemoteEndDetectedEventId)
|
if (args.EventId == DMSystemEventIds.RemoteEndDetectedEventId)
|
||||||
RemoteEndDetectedFeedback.FireUpdate();
|
RemoteEndDetectedFeedback.FireUpdate();
|
||||||
else if (args.EventId == DMSystemEventIds.ReceiverAutoModeOnEventId)
|
else if (args.EventId == DMSystemEventIds.TransmitterAutoModeOnEventId)
|
||||||
AutoRouteOnFeedback.FireUpdate();
|
AutoRouteOnFeedback.FireUpdate();
|
||||||
else if (args.EventId == DMSystemEventIds.PriorityRoutingOnEventId)
|
else if (args.EventId == DMSystemEventIds.PriorityRoutingOnEventId)
|
||||||
PriorityRoutingOnFeedback.FireUpdate();
|
PriorityRoutingOnFeedback.FireUpdate();
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
<Compile Include="Codec\iCodecAudio.cs" />
|
<Compile Include="Codec\iCodecAudio.cs" />
|
||||||
<Compile Include="ImageProcessors\TVOneCorio.cs" />
|
<Compile Include="ImageProcessors\TVOneCorio.cs" />
|
||||||
<Compile Include="ImageProcessors\TVOneCorioPropertiesConfig.cs" />
|
<Compile Include="ImageProcessors\TVOneCorioPropertiesConfig.cs" />
|
||||||
|
<Compile Include="Occupancy\GlsOdtOccupancySensorController.cs" />
|
||||||
<Compile Include="Power Controllers\Digitallogger.cs" />
|
<Compile Include="Power Controllers\Digitallogger.cs" />
|
||||||
<Compile Include="Power Controllers\DigitalLoggerPropertiesConfig.cs" />
|
<Compile Include="Power Controllers\DigitalLoggerPropertiesConfig.cs" />
|
||||||
<Compile Include="Evertz\EvertsEndpointStatusServer.cs" />
|
<Compile Include="Evertz\EvertsEndpointStatusServer.cs" />
|
||||||
@@ -151,8 +152,8 @@
|
|||||||
<Compile Include="Generic\GenericSource.cs" />
|
<Compile Include="Generic\GenericSource.cs" />
|
||||||
<Compile Include="Microphone\MicrophonePrivacyController.cs" />
|
<Compile Include="Microphone\MicrophonePrivacyController.cs" />
|
||||||
<Compile Include="Microphone\MicrophonePrivacyControllerConfig.cs" />
|
<Compile Include="Microphone\MicrophonePrivacyControllerConfig.cs" />
|
||||||
<Compile Include="Occupancy\EssentialsGlsOccupancySensorBaseController.cs" />
|
<Compile Include="Occupancy\GlsOccupancySensorBaseController.cs" />
|
||||||
<Compile Include="Occupancy\EssentialsOccupancyAggregator.cs" />
|
<Compile Include="Occupancy\IOccupancyStatusProviderAggregator.cs" />
|
||||||
<Compile Include="Occupancy\iOccupancyStatusProvider.cs" />
|
<Compile Include="Occupancy\iOccupancyStatusProvider.cs" />
|
||||||
<Compile Include="PC\InRoomPc.cs" />
|
<Compile Include="PC\InRoomPc.cs" />
|
||||||
<Compile Include="PC\Laptop.cs" />
|
<Compile Include="PC\Laptop.cs" />
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
occSensor = new GlsOirCCn(comm.CresnetIdInt, Global.ControlSystem);
|
occSensor = new GlsOirCCn(comm.CresnetIdInt, Global.ControlSystem);
|
||||||
|
|
||||||
if (occSensor != null)
|
if (occSensor != null)
|
||||||
return new EssentialsGlsOccupancySensorBaseController(key, name, occSensor);
|
return new GlsOccupancySensorBaseController(key, name, occSensor);
|
||||||
else
|
else
|
||||||
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
||||||
}
|
}
|
||||||
@@ -348,12 +348,10 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
{
|
{
|
||||||
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
|
|
||||||
GlsOccupancySensorBase occSensor = null;
|
var occSensor = new GlsOdtCCn(comm.CresnetIdInt, Global.ControlSystem);
|
||||||
|
|
||||||
occSensor = new GlsOdtCCn(comm.CresnetIdInt, Global.ControlSystem);
|
|
||||||
|
|
||||||
if (occSensor != null)
|
if (occSensor != null)
|
||||||
return new EssentialsGlsOccupancySensorBaseController(key, name, occSensor);
|
return new GlsOdtOccupancySensorController(key, name, occSensor);
|
||||||
else
|
else
|
||||||
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
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;
|
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|
||||||
{
|
|
||||||
public class EssentialsGlsOccupancySensorBaseController : CrestronGenericBaseDevice, IOccupancyStatusProvider
|
|
||||||
{
|
|
||||||
public GlsOccupancySensorBase OccSensor { get; private set; }
|
|
||||||
|
|
||||||
public BoolFeedback RoomIsOccupiedFeedback { get; private set; }
|
|
||||||
|
|
||||||
// Debug properties
|
|
||||||
public bool InTestMode { get; private set; }
|
|
||||||
|
|
||||||
public bool TestRoomIsOccupiedFeedback { get; private set; }
|
|
||||||
|
|
||||||
public Func<bool> RoomIsOccupiedFeedbackFunc
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return () => InTestMode ? TestRoomIsOccupiedFeedback : OccSensor.OccupancyDetectedFeedback.BoolValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public EssentialsGlsOccupancySensorBaseController(string key, string name, GlsOccupancySensorBase sensor)
|
|
||||||
: base(key, name, sensor)
|
|
||||||
{
|
|
||||||
OccSensor = sensor;
|
|
||||||
|
|
||||||
RoomIsOccupiedFeedback = new BoolFeedback(RoomIsOccupiedFeedbackFunc);
|
|
||||||
|
|
||||||
OccSensor.BaseEvent += new Crestron.SimplSharpPro.BaseEventHandler(OccSensor_BaseEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OccSensor_BaseEvent(Crestron.SimplSharpPro.GenericBase device, Crestron.SimplSharpPro.BaseEventArgs args)
|
|
||||||
{
|
|
||||||
Debug.Console(2, this, "GlsOccupancySensorChange EventId: {0}", args.EventId);
|
|
||||||
|
|
||||||
if (args.EventId == Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomOccupiedFeedbackEventId
|
|
||||||
|| args.EventId == Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomVacantFeedbackEventId)
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "Occupancy State: {0}", OccSensor.OccupancyDetectedFeedback.BoolValue);
|
|
||||||
RoomIsOccupiedFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetTestMode(bool mode)
|
|
||||||
{
|
|
||||||
InTestMode = mode;
|
|
||||||
|
|
||||||
Debug.Console(1, this, "In Mock Mode: '{0}'", InTestMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetTestOccupiedState(bool state)
|
|
||||||
{
|
|
||||||
if (!InTestMode)
|
|
||||||
Debug.Console(1, "Mock mode not enabled");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TestRoomIsOccupiedFeedback = state;
|
|
||||||
|
|
||||||
RoomIsOccupiedFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.Occupancy
|
||||||
|
{
|
||||||
|
public class GlsOccupancySensorBaseController : CrestronGenericBaseDevice, IOccupancyStatusProvider
|
||||||
|
{
|
||||||
|
public GlsOccupancySensorBase OccSensor { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback RoomIsOccupiedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback GraceOccupancyDetectedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback RawOccupancyFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback PirSensorEnabledFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback LedFlashEnabledFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback ShortTimeoutEnabledFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback PirSensitivityInVacantStateFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback PirSensitivityInOccupiedStateFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback CurrentTimeoutFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback LocalTimoutFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback InternalPhotoSensorValue { get; set; }
|
||||||
|
|
||||||
|
public IntFeedback ExternalPhotoSensorValue { get; set; }
|
||||||
|
|
||||||
|
// Debug properties
|
||||||
|
public bool InTestMode { get; private set; }
|
||||||
|
|
||||||
|
public bool TestRoomIsOccupiedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public Func<bool> RoomIsOccupiedFeedbackFunc
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return () => InTestMode ? TestRoomIsOccupiedFeedback : OccSensor.OccupancyDetectedFeedback.BoolValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GlsOccupancySensorBaseController(string key, string name, GlsOccupancySensorBase sensor)
|
||||||
|
: base(key, name, sensor)
|
||||||
|
{
|
||||||
|
OccSensor = sensor;
|
||||||
|
|
||||||
|
RoomIsOccupiedFeedback = new BoolFeedback(RoomIsOccupiedFeedbackFunc);
|
||||||
|
|
||||||
|
PirSensorEnabledFeedback = new BoolFeedback(() => OccSensor.PirEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
|
LedFlashEnabledFeedback = new BoolFeedback(() => OccSensor.LedFlashEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
|
ShortTimeoutEnabledFeedback = new BoolFeedback(() => OccSensor.ShortTimeoutEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
|
PirSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.PirSensitivityInVacantStateFeedback.UShortValue);
|
||||||
|
|
||||||
|
PirSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.PirSensitivityInOccupiedStateFeedback.UShortValue);
|
||||||
|
|
||||||
|
CurrentTimeoutFeedback = new IntFeedback(() => OccSensor.CurrentTimeoutFeedback.UShortValue);
|
||||||
|
|
||||||
|
LocalTimoutFeedback = new IntFeedback(() => OccSensor.LocalTimeoutFeedback.UShortValue);
|
||||||
|
|
||||||
|
GraceOccupancyDetectedFeedback = new BoolFeedback(() => OccSensor.GraceOccupancyDetectedFeedback.BoolValue);
|
||||||
|
|
||||||
|
RawOccupancyFeedback = new BoolFeedback(() => OccSensor.RawOccupancyFeedback.BoolValue);
|
||||||
|
|
||||||
|
InternalPhotoSensorValue = new IntFeedback(() => OccSensor.InternalPhotoSensorValueFeedback.UShortValue);
|
||||||
|
|
||||||
|
ExternalPhotoSensorValue = new IntFeedback(() => OccSensor.ExternalPhotoSensorValueFeedback.UShortValue);
|
||||||
|
|
||||||
|
OccSensor.BaseEvent += new Crestron.SimplSharpPro.BaseEventHandler(OccSensor_BaseEvent);
|
||||||
|
|
||||||
|
OccSensor.GlsOccupancySensorChange += new GlsOccupancySensorChangeEventHandler(OccSensor_GlsOccupancySensorChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Catches events for feedbacks on the base class. Any extending wrapper class should call this delegate after it checks for it's own event IDs.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="device"></param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
protected virtual void OccSensor_GlsOccupancySensorChange(GlsOccupancySensorBase device, GlsOccupancySensorChangeEventArgs args)
|
||||||
|
{
|
||||||
|
if (args.EventId == GlsOccupancySensorBase.PirEnabledFeedbackEventId)
|
||||||
|
PirSensorEnabledFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.LedFlashEnabledFeedbackEventId)
|
||||||
|
LedFlashEnabledFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.ShortTimeoutEnabledFeedbackEventId)
|
||||||
|
ShortTimeoutEnabledFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.PirSensitivityInOccupiedStateFeedbackEventId)
|
||||||
|
PirSensitivityInOccupiedStateFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.PirSensitivityInVacantStateFeedbackEventId)
|
||||||
|
PirSensitivityInVacantStateFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.TimeoutFeedbackEventId)
|
||||||
|
CurrentTimeoutFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.TimeoutLocalFeedbackEventId)
|
||||||
|
LocalTimoutFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.GraceOccupancyDetectedFeedbackEventId)
|
||||||
|
GraceOccupancyDetectedFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.RawOccupancyFeedbackEventId)
|
||||||
|
RawOccupancyFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.InternalPhotoSensorValueFeedbackEventId)
|
||||||
|
InternalPhotoSensorValue.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.ExternalPhotoSensorValueFeedbackEventId)
|
||||||
|
ExternalPhotoSensorValue.FireUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OccSensor_BaseEvent(Crestron.SimplSharpPro.GenericBase device, Crestron.SimplSharpPro.BaseEventArgs args)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "GlsOccupancySensorChange EventId: {0}", args.EventId);
|
||||||
|
|
||||||
|
if (args.EventId == Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomOccupiedFeedbackEventId
|
||||||
|
|| args.EventId == Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomVacantFeedbackEventId)
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Occupancy State: {0}", OccSensor.OccupancyDetectedFeedback.BoolValue);
|
||||||
|
RoomIsOccupiedFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetTestMode(bool mode)
|
||||||
|
{
|
||||||
|
InTestMode = mode;
|
||||||
|
|
||||||
|
Debug.Console(1, this, "In Mock Mode: '{0}'", InTestMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetTestOccupiedState(bool state)
|
||||||
|
{
|
||||||
|
if (!InTestMode)
|
||||||
|
Debug.Console(1, "Mock mode not enabled");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TestRoomIsOccupiedFeedback = state;
|
||||||
|
|
||||||
|
RoomIsOccupiedFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables or disables the PIR sensor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetPirEnable(bool state)
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
OccSensor.EnablePir.BoolValue = state;
|
||||||
|
OccSensor.DisablePir.BoolValue = !state;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OccSensor.EnablePir.BoolValue = state;
|
||||||
|
OccSensor.DisablePir.BoolValue = !state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables or disables the LED Flash
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetLedFlashEnable(bool state)
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
OccSensor.EnableLedFlash.BoolValue = state;
|
||||||
|
OccSensor.DisableLedFlash.BoolValue = !state;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OccSensor.EnableLedFlash.BoolValue = state;
|
||||||
|
OccSensor.DisableLedFlash.BoolValue = !state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables or disables short timeout based on state
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetShortTimeoutState(bool state)
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
OccSensor.EnableShortTimeout.BoolValue = state;
|
||||||
|
OccSensor.DisableShortTimeout.BoolValue = !state;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OccSensor.EnableShortTimeout.BoolValue = state;
|
||||||
|
OccSensor.DisableShortTimeout.BoolValue = !state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void IncrementPirSensitivityInOccupiedState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.IncrementPirSensitivityInOccupiedState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DecrementPirSensitivityInOccupiedState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.DecrementPirSensitivityInOccupiedState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void IncrementPirSensitivityInVacantState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.IncrementPirSensitivityInVacantState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DecrementPirSensitivityInVacantState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.DecrementPirSensitivityInVacantState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ForceOccupied()
|
||||||
|
{
|
||||||
|
OccSensor.ForceOccupied.BoolValue = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ForceVacant()
|
||||||
|
{
|
||||||
|
OccSensor.ForceVacant.BoolValue = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void EnableRawStates(bool state)
|
||||||
|
{
|
||||||
|
OccSensor.EnableRawStates.BoolValue = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetRemoteTimeout(ushort time)
|
||||||
|
{
|
||||||
|
OccSensor.RemoteTimeout.UShortValue = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetInternalPhotoSensorMinChange(ushort value)
|
||||||
|
{
|
||||||
|
OccSensor.InternalPhotoSensorMinimumChange.UShortValue = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetExternalPhotoSensorMinChange(ushort value)
|
||||||
|
{
|
||||||
|
OccSensor.ExternalPhotoSensorMinimumChange.UShortValue = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.Occupancy
|
||||||
|
{
|
||||||
|
public class GlsOdtOccupancySensorController : GlsOccupancySensorBaseController
|
||||||
|
{
|
||||||
|
public new GlsOdtCCn OccSensor { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback OrWhenVacatedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback AndWhenVacatedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback UltrasonicAEnabledFeedback { get; private set; }
|
||||||
|
|
||||||
|
public BoolFeedback UltrasonicBEnabledFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback UltrasonicSensitivityInVacantStateFeedback { get; private set; }
|
||||||
|
|
||||||
|
public IntFeedback UltrasonicSensitivityInOccupiedStateFeedback { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public GlsOdtOccupancySensorController(string key, string name, GlsOdtCCn sensor)
|
||||||
|
: base(key, name, sensor)
|
||||||
|
{
|
||||||
|
AndWhenVacatedFeedback = new BoolFeedback(() => OccSensor.AndWhenVacatedFeedback.BoolValue);
|
||||||
|
|
||||||
|
OrWhenVacatedFeedback = new BoolFeedback(() => OccSensor.OrWhenVacatedFeedback.BoolValue);
|
||||||
|
|
||||||
|
UltrasonicAEnabledFeedback = new BoolFeedback(() => OccSensor.UsAEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
|
UltrasonicBEnabledFeedback = new BoolFeedback(() => OccSensor.UsBEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
|
UltrasonicSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInVacantStateFeedback.UShortValue);
|
||||||
|
|
||||||
|
UltrasonicSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInOccupiedStateFeedback.UShortValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the base class event delegate to fire feedbacks for event IDs that pertain to this extended class.
|
||||||
|
/// Then calls the base delegate method to ensure any common event IDs are captured.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="device"></param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
protected override void OccSensor_GlsOccupancySensorChange(GlsOccupancySensorBase device, GlsOccupancySensorChangeEventArgs args)
|
||||||
|
{
|
||||||
|
if (args.EventId == GlsOccupancySensorBase.AndWhenVacatedFeedbackEventId)
|
||||||
|
AndWhenVacatedFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.OrWhenVacatedFeedbackEventId)
|
||||||
|
OrWhenVacatedFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.UsAEnabledFeedbackEventId)
|
||||||
|
UltrasonicAEnabledFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.UsBEnabledFeedbackEventId)
|
||||||
|
UltrasonicBEnabledFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.UsSensitivityInOccupiedStateFeedbackEventId)
|
||||||
|
UltrasonicSensitivityInOccupiedStateFeedback.FireUpdate();
|
||||||
|
else if (args.EventId == GlsOccupancySensorBase.UsSensitivityInVacantStateFeedbackEventId)
|
||||||
|
UltrasonicSensitivityInVacantStateFeedback.FireUpdate();
|
||||||
|
|
||||||
|
|
||||||
|
base.OccSensor_GlsOccupancySensorChange(device, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the OrWhenVacated state
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetOrWhenVacatedState(bool state)
|
||||||
|
{
|
||||||
|
OccSensor.OrWhenVacated.BoolValue = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the AndWhenVacated state
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetAndWhenVacatedState(bool state)
|
||||||
|
{
|
||||||
|
OccSensor.AndWhenVacated.BoolValue = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables or disables the Ultrasonic A sensor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetUsAEnable(bool state)
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
OccSensor.EnableUsA.BoolValue = state;
|
||||||
|
OccSensor.DisableUsA.BoolValue = !state;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OccSensor.EnableUsA.BoolValue = state;
|
||||||
|
OccSensor.DisableUsA.BoolValue = !state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables or disables the Ultrasonic B sensor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
public void SetUsBEnable(bool state)
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
OccSensor.EnableUsB.BoolValue = state;
|
||||||
|
OccSensor.DisableUsB.BoolValue = !state;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OccSensor.EnableUsB.BoolValue = state;
|
||||||
|
OccSensor.DisableUsB.BoolValue = !state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void IncrementUsSensitivityInOccupiedState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.IncrementUsSensitivityInOccupiedState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DecrementUsSensitivityInOccupiedState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.DecrementUsSensitivityInOccupiedState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void IncrementUsSensitivityInVacantState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.IncrementUsSensitivityInVacantState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DecrementUsSensitivityInVacantState(bool pressRelease)
|
||||||
|
{
|
||||||
|
OccSensor.DecrementUsSensitivityInVacantState.BoolValue = pressRelease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Aggregates the RoomIsOccupied feedbacks of one or more IOccupancyStatusProvider objects
|
/// Aggregates the RoomIsOccupied feedbacks of one or more IOccupancyStatusProvider objects
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EssentialsOccupancyAggregator : Device, IOccupancyStatusProvider
|
public class IOccupancyStatusProviderAggregator : Device, IOccupancyStatusProvider
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Aggregated feedback of all linked IOccupancyStatusProvider devices
|
/// Aggregated feedback of all linked IOccupancyStatusProvider devices
|
||||||
@@ -27,7 +27,7 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
|
|
||||||
private BoolFeedbackOr AggregatedOccupancyStatus;
|
private BoolFeedbackOr AggregatedOccupancyStatus;
|
||||||
|
|
||||||
public EssentialsOccupancyAggregator(string key, string name)
|
public IOccupancyStatusProviderAggregator(string key, string name)
|
||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
AggregatedOccupancyStatus = new BoolFeedbackOr();
|
AggregatedOccupancyStatus = new BoolFeedbackOr();
|
||||||
Reference in New Issue
Block a user