diff --git a/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs b/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs index ac5df758..882b0a13 100644 --- a/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs +++ b/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs @@ -17,7 +17,33 @@ namespace PepperDash.Essentials.Core private List _rooms; - private bool isInAutoMode; + public List Rooms + { + get + { + return _rooms.Cast().ToList(); + } + } + + private bool _isInAutoMode; + + public bool IsInAutoMode + { + get + { + return _isInAutoMode; + } + set + { + if(value == _isInAutoMode) + { + return; + } + + _isInAutoMode = value; + IsInAutoModeFeedback.FireUpdate(); + } + } private CTimer _scenarioChangeDebounceTimer; @@ -36,14 +62,14 @@ namespace PepperDash.Essentials.Core _scenarioChangeDebounceTimeSeconds = _propertiesConfig.ScenarioChangeDebounceTimeSeconds; } - IsInAutoModeFeedback = new BoolFeedback(() => isInAutoMode); + IsInAutoModeFeedback = new BoolFeedback(() => _isInAutoMode); // default to auto mode - isInAutoMode = true; + IsInAutoMode = true; if (_propertiesConfig.defaultToManualMode) { - isInAutoMode = false; + IsInAutoMode = false; } IsInAutoModeFeedback.FireUpdate(); @@ -56,7 +82,7 @@ namespace PepperDash.Essentials.Core SetRooms(); - if (isInAutoMode) + if (IsInAutoMode) { DetermineRoomCombinationScenario(); } @@ -201,20 +227,17 @@ namespace PepperDash.Essentials.Core public void SetAutoMode() { - isInAutoMode = true; - IsInAutoModeFeedback.FireUpdate(); + IsInAutoMode = true; } public void SetManualMode() { - isInAutoMode = false; - IsInAutoModeFeedback.FireUpdate(); + IsInAutoMode = false; } public void ToggleMode() { - isInAutoMode = !isInAutoMode; - IsInAutoModeFeedback.FireUpdate(); + IsInAutoMode = !IsInAutoMode; } public List RoomCombinationScenarios { get; private set; } @@ -233,7 +256,7 @@ namespace PepperDash.Essentials.Core public void SetRoomCombinationScenario(string scenarioKey) { - if (isInAutoMode) + if (IsInAutoMode) { Debug.LogMessage(LogEventLevel.Information, this, "Cannot set room combination scenario when in auto mode. Set to auto mode first."); return; diff --git a/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs b/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs index e6bdd983..a035b650 100644 --- a/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs +++ b/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs @@ -1,9 +1,6 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; - +using Newtonsoft.Json; using PepperDash.Core; namespace PepperDash.Essentials.Core @@ -21,13 +18,20 @@ namespace PepperDash.Essentials.Core /// /// The current room combination scenario /// + [JsonProperty("currentScenario")] IRoomCombinationScenario CurrentScenario { get; } /// /// When true, indicates the current mode is auto mode /// + [JsonIgnore] BoolFeedback IsInAutoModeFeedback {get;} + [JsonProperty("isInAutoMode")] + bool IsInAutoMode { get; } + + List Rooms { get; } + /// /// Sets auto mode /// @@ -46,11 +50,13 @@ namespace PepperDash.Essentials.Core /// /// The available room combinatino scenarios /// + [JsonProperty("roomCombinationScenarios")] List RoomCombinationScenarios { get; } /// /// The partition /// + [JsonProperty("partitions")] List Partitions { get; } /// @@ -73,6 +79,9 @@ namespace PepperDash.Essentials.Core /// BoolFeedback IsActiveFeedback { get; } + [JsonProperty("isActive")] + bool IsActive { get; } + /// /// Activates this room combination scenario /// @@ -86,6 +95,7 @@ namespace PepperDash.Essentials.Core /// /// The state of the partitions that would activate this scenario /// + [JsonProperty("partitionStates")] List PartitionStates { get; } /// diff --git a/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs b/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs index 3a64efb7..9bc0d8ec 100644 --- a/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs +++ b/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs @@ -16,20 +16,41 @@ namespace PepperDash.Essentials.Core /// /// Represents a room combination scenario /// - public class RoomCombinationScenario: IRoomCombinationScenario + public class RoomCombinationScenario: IRoomCombinationScenario, IKeyName { private RoomCombinationScenarioConfig _config; + [JsonProperty("key")] public string Key { get; set; } + [JsonProperty("name")] public string Name { get; set; } + [JsonProperty("partitionStates")] public List PartitionStates { get; private set; } + [JsonProperty("uiMap")] public Dictionary UiMap { get; set; } private bool _isActive; + [JsonProperty("isActive")] + public bool IsActive + { + get { return _isActive; } + set + { + if(value == _isActive) + { + return; + } + + _isActive = value; + IsActiveFeedback.FireUpdate(); + } + } + + [JsonIgnore] public BoolFeedback IsActiveFeedback { get; private set; } private List activationActions; @@ -67,8 +88,7 @@ namespace PepperDash.Essentials.Core } } - _isActive = true; - IsActiveFeedback.FireUpdate(); + IsActive = true; } public void Deactivate() @@ -83,8 +103,7 @@ namespace PepperDash.Essentials.Core } } - _isActive = false; - IsActiveFeedback.FireUpdate(); + IsActive = false; } }