diff --git a/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs b/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs
index 681f8810..d2a16739 100644
--- a/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs
+++ b/src/PepperDash.Essentials.Core/Room/Combining/EssentialsRoomCombiner.cs
@@ -62,6 +62,17 @@ namespace PepperDash.Essentials.Core
}
}
+ ///
+ /// Gets a value indicating whether automatic mode is disabled.
+ ///
+ public bool DisableAutoMode
+ {
+ get
+ {
+ return _propertiesConfig.DisableAutoMode;
+ }
+ }
+
private CTimer _scenarioChangeDebounceTimer;
private int _scenarioChangeDebounceTimeSeconds = 10; // default to 10s
diff --git a/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs b/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs
index fefdc2da..04dfd16f 100644
--- a/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs
+++ b/src/PepperDash.Essentials.Core/Room/Combining/IEssentialsRoomCombiner.cs
@@ -28,9 +28,20 @@ namespace PepperDash.Essentials.Core
[JsonIgnore]
BoolFeedback IsInAutoModeFeedback {get;}
+ ///
+ /// Gets a value indicating whether the automatic mode is disabled.
+ ///
+ [JsonProperty("disableAutoMode")]
+ bool DisableAutoMode { get; }
+ ///
+ /// Gets a value indicating whether the system is operating in automatic mode.
+ ///
[JsonProperty("isInAutoMode")]
bool IsInAutoMode { get; }
+ ///
+ /// Gets the collection of rooms associated with the current object.
+ ///
[JsonProperty("rooms")]
List Rooms { get; }
@@ -74,6 +85,13 @@ namespace PepperDash.Essentials.Core
void SetRoomCombinationScenario(string scenarioKey);
}
+ ///
+ /// Represents a scenario for combining rooms, including activation, deactivation, and associated state.
+ ///
+ /// This interface defines the behavior for managing room combination scenarios, including
+ /// activation and deactivation, tracking the active state, and managing related partition states and UI mappings.
+ /// Implementations of this interface are expected to handle the logic for room combinations based on the provided
+ /// partition states and UI mappings.
public interface IRoomCombinationScenario : IKeyName
{
///
@@ -82,6 +100,9 @@ namespace PepperDash.Essentials.Core
[JsonIgnore]
BoolFeedback IsActiveFeedback { get; }
+ ///
+ /// Gets a value indicating whether the entity is active.
+ ///
[JsonProperty("isActive")]
bool IsActive { get; }
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IEssentialsRoomCombinerMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IEssentialsRoomCombinerMessenger.cs
index a29d7b9e..1752b567 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IEssentialsRoomCombinerMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IEssentialsRoomCombinerMessenger.cs
@@ -8,16 +8,42 @@ using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging functionality for managing room combination scenarios and partition states in an instance. Enables external systems to interact with the room combiner via
+ /// predefined actions and status updates.
+ ///
+ /// This class facilitates communication with an by
+ /// exposing actions for toggling modes, managing partitions, and setting room combination scenarios. It also
+ /// listens for feedback changes and broadcasts status updates to connected systems. Typical usage involves
+ /// registering actions for external commands and handling feedback events to synchronize state changes.
public class IEssentialsRoomCombinerMessenger : MessengerBase
{
private readonly IEssentialsRoomCombiner _roomCombiner;
+ ///
+ /// Initializes a new instance of the class, which facilitates
+ /// messaging for an instance.
+ ///
+ /// This class is designed to enable communication and interaction with an through the specified messaging path. Ensure that the parameter is not null when creating an instance.
+ /// The unique key identifying this messenger instance.
+ /// The path used for messaging operations.
+ /// The instance associated with this messenger.
public IEssentialsRoomCombinerMessenger(string key, string messagePath, IEssentialsRoomCombiner roomCombiner)
: base(key, messagePath, roomCombiner as IKeyName)
{
_roomCombiner = roomCombiner;
}
+ ///
+ /// Registers actions and event handlers for managing room combination scenarios and partition states.
+ ///
+ /// This method sets up various actions that can be triggered via specific endpoints,
+ /// such as toggling modes, setting room combination scenarios, and managing partition states. It also
+ /// subscribes to feedback events to update the status when changes occur in room combination scenarios or
+ /// partition states.
protected override void RegisterActions()
{
AddAction("/fullStatus", (id, content) => SendFullStatus());
@@ -107,6 +133,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
var message = new IEssentialsRoomCombinerStateMessage
{
+ DisableAutoMode = _roomCombiner.DisableAutoMode,
IsInAutoMode = _roomCombiner.IsInAutoMode,
CurrentScenario = _roomCombiner.CurrentScenario,
Rooms = rooms,
@@ -132,20 +159,48 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// Represents the state message for a room combiner system, providing information about the current configuration,
+ /// operational mode, and associated rooms, partitions, and scenarios.
+ ///
+ /// This class is used to encapsulate the state of a room combiner system, including its current
+ /// mode of operation, active room combination scenario, and the list of rooms and partitions involved. It is
+ /// typically serialized and transmitted to communicate the state of the system.
public class IEssentialsRoomCombinerStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets a value indicating whether automatic mode is disabled.
+ ///
+ [JsonProperty("disableAutoMode", NullValueHandling = NullValueHandling.Ignore)]
+ public bool DisableAutoMode { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether the system is operating in automatic mode.
+ ///
[JsonProperty("isInAutoMode", NullValueHandling = NullValueHandling.Ignore)]
public bool IsInAutoMode { get; set; }
+ ///
+ /// Gets or sets the current room combination scenario.
+ ///
[JsonProperty("currentScenario", NullValueHandling = NullValueHandling.Ignore)]
public IRoomCombinationScenario CurrentScenario { get; set; }
+ ///
+ /// Gets or sets the collection of rooms associated with the entity.
+ ///
[JsonProperty("rooms", NullValueHandling = NullValueHandling.Ignore)]
public List Rooms { get; set; }
+ ///
+ /// Gets or sets the collection of room combination scenarios.
+ ///
[JsonProperty("roomCombinationScenarios", NullValueHandling = NullValueHandling.Ignore)]
public List RoomCombinationScenarios { get; set; }
+ ///
+ /// Gets or sets the collection of partition controllers.
+ ///
[JsonProperty("partitions", NullValueHandling = NullValueHandling.Ignore)]
public List Partitions { get; set; }
}