using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using PepperDash.Core; namespace PepperDash.Essentials.Core { /// /// Describes the functionality for an EssentailsRoomCombiner device /// public interface IEssentialsRoomCombiner : IKeyed { /// /// Indicates that the room combination scenario has changed /// event EventHandler RoomCombinationScenarioChanged; /// /// The current room combination scenario /// IRoomCombinationScenario CurrentScenario { get; } /// /// When true, indicates the current mode is auto mode /// BoolFeedback IsInAutoModeFeedback {get;} /// /// Sets auto mode /// void SetAutoMode(); /// /// Sets manual mode /// void SetManualMode(); /// /// Toggles the current mode between auto and manual /// void ToggleMode(); /// /// The available room combinatino scenarios /// List RoomCombinationScenarios { get; } /// /// The partition /// List Partitions { get; } /// /// Toggles the state of a manual partition sensor /// /// void TogglePartitionState(string partitionKey); /// /// Sets the room combination scenario (if in manual mode) /// /// void SetRoomCombinationScenario(string scenarioKey); } public interface IRoomCombinationScenario : IKeyName { /// /// When true, indicates that this room combination scenario is active /// BoolFeedback IsActiveFeedback { get; } /// /// Activates this room combination scenario /// void Activate(); /// /// Deactivates this room combination scenario /// void Deactivate(); /// /// The state of the partitions that would activate this scenario /// List PartitionStates { get; } /// /// The mapping of UIs by key to rooms by key /// Dictionary UiMap { get; set; } } }