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; }
}
}