diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Components/RoomComponents.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Components/RoomComponents.cs index aa57fc66..b15e20f1 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Components/RoomComponents.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Components/RoomComponents.cs @@ -102,7 +102,7 @@ namespace PepperDash.Essentials.Core.Interfaces.Components /// Describes a group of room behaviour component. Is able to contain a collection of components that aggregate /// together to behave as one /// - public interface IRoomBehaviourGroupComponent + public interface IRoomBehaviourGroupComponent : IRoomComponent { /// /// A collection of components that work together to achieve a common behaviour diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasMobileControl.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasMobileControl.cs new file mode 100644 index 00000000..b4e351ba --- /dev/null +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasMobileControl.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using PepperDash.Essentials.Core.DeviceTypeInterfaces; + +namespace PepperDash.Essentials.Core.Interfaces.Room +{ + public interface IHasMobileControl + { + /// + /// Indicates if this room is Mobile Control Enabled + /// + bool IsMobileControlEnabled { get; } + + /// + /// The bridge for this room if Mobile Control is enabled + /// + IMobileControlRoomBridge MobileControlRoomBridge { get; } + + } +} \ No newline at end of file diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasRoomOccupancyStatusProvider.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasRoomOccupancyStatusProvider.cs new file mode 100644 index 00000000..1d43dbac --- /dev/null +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasRoomOccupancyStatusProvider.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +namespace PepperDash.Essentials.Core.Interfaces.Room +{ + public interface IHasRoomOccupancyStatusProvider + { + event EventHandler RoomOccupancyIsSet; + + IOccupancyStatusProvider RoomOccupancy { get; } + + bool OccupancyStatusProviderIsRemote { get; } + + int ShutdownVacancySeconds { get; } + + eVacancyMode VacancyMode { get; } + + void StartRoomVacancyTimer(eVacancyMode mode); + + /// + /// Sets the object to be used as the IOccupancyStatusProvider for the room. Can be an Occupancy Aggregator or a specific device + /// + /// + /// + void SetRoomOccupancy(IOccupancyStatusProvider statusProvider, int timeoutMinutes); + + /// + /// Executes when RoomVacancyShutdownTimer expires. Used to trigger specific room actions as needed. Must nullify the timer object when executed + /// + /// + void RoomVacatedForTimeoutPeriod(object o); + + } +} \ No newline at end of file diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasRoomOn.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasRoomOn.cs new file mode 100644 index 00000000..5eafab9b --- /dev/null +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Interfaces/Room/IHasRoomOn.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using PepperDash.Core; +using PepperDash.Essentials.Core; + + +namespace PepperDash.Essentials.Core.Interfaces.Room +{ + /// + /// Describes the necessary functions for a room that can be powered on and shutdown + /// + public interface IHasRoomOn + { + BoolFeedback OnFeedback { get; } + + BoolFeedback IsWarmingUpFeedback { get; } + BoolFeedback IsCoolingDownFeedback { get; } + + /// + /// Timer used for informing the UIs of a shutdown + /// + SecondsCountdownTimer ShutdownPromptTimer { get; private set; } + + /// + /// + /// + int ShutdownPromptSeconds { get; set; } + int ShutdownVacancySeconds { get; set; } + eShutdownType ShutdownType { get; private set; } + + + /// + /// Starts the Shutdown process based on the type + /// + /// + void StartShutdown(eShutdownType type); + + + /// + /// Resets the vacancy mode and shuts down the room + /// + void Shutdown(); + + } +} \ No newline at end of file diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj index 00303250..2c159a79 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj @@ -228,6 +228,9 @@ + + + diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Room/EssentialsRoomBase.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Room/EssentialsRoomBase.cs index 0043e3b4..f63a1da8 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Room/EssentialsRoomBase.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Room/EssentialsRoomBase.cs @@ -203,7 +203,7 @@ namespace PepperDash.Essentials.Core } /// - /// + /// Starts the Shutdown process based on the type /// /// public void StartShutdown(eShutdownType type)