using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using PepperDash.Core; namespace PepperDash.Essentials.Core { /// /// For rooms with in call feedback /// public interface IHasInCallFeedback { BoolFeedback InCallFeedback { get; } } /// /// For rooms with a single display /// public interface IHasDefaultDisplay { IRoutingSink DefaultDisplay { get; } } /// /// For rooms with multiple displays /// public interface IHasMultipleDisplays { Dictionary Displays { get; } } /// /// For rooms with routing /// public interface IRunRouteAction { void RunRouteAction(string routeKey, string sourceListKey); void RunRouteAction(string routeKey, string sourceListKey, Action successCallback); } /// /// Simplified routing direct from source to destination /// public interface IRunDirectRouteAction { void RunDirectRoute(string sourceKey, string destinationKey, eRoutingSignalType type = eRoutingSignalType.AudioVideo); } /// /// Describes a room with matrix routing /// public interface IHasMatrixRouting { string MatrixRoutingDeviceKey { get; } List EndpointKeys { get; } } /// /// Describes a room with routing endpoints /// public interface IHasRoutingEndpoints { List EndpointKeys { get; } } /// /// Describes a room with a shutdown prompt timer /// public interface IShutdownPromptTimer { SecondsCountdownTimer ShutdownPromptTimer { get; } void SetShutdownPromptSeconds(int seconds); void StartShutdown(eShutdownType type); } /// /// Describes a room with a tech password /// public interface ITechPassword { event EventHandler TechPasswordValidateResult; event EventHandler TechPasswordChanged; int TechPasswordLength { get; } void ValidateTechPassword(string password); void SetTechPassword(string oldPassword, string newPassword); } public class TechPasswordEventArgs : EventArgs { public bool IsValid { get; private set; } public TechPasswordEventArgs(bool isValid) { IsValid = isValid; } } /// /// For rooms that default presentation only routing /// public interface IRunDefaultPresentRoute { bool RunDefaultPresentRoute(); } /// /// For rooms that have default presentation and calling routes /// public interface IRunDefaultCallRoute : IRunDefaultPresentRoute { bool RunDefaultCallRoute(); } /// /// Describes environmental controls available on a room such as lighting, shades, temperature, etc. /// public interface IEnvironmentalControls { List EnvironmentalControlDevices { get; } bool HasEnvironmentalControlDevices { get; } } public interface IRoomOccupancy:IKeyed { IOccupancyStatusProvider RoomOccupancy { get; } bool OccupancyStatusProviderIsRemote { get; } void SetRoomOccupancy(IOccupancyStatusProvider statusProvider, int timeoutMinutes); void RoomVacatedForTimeoutPeriod(object o); void StartRoomVacancyTimer(eVacancyMode mode); eVacancyMode VacancyMode { get; } event EventHandler RoomOccupancyIsSet; } public interface IEmergency { EssentialsRoomEmergencyBase Emergency { get; } } public interface IMicrophonePrivacy { Core.Privacy.MicrophonePrivacyController MicrophonePrivacy { get; } } public interface IHasAccessoryDevices : IKeyName { List AccessoryDeviceKeys { get; } } public interface IHasCiscoNavigatorTouchpanel { string CiscoNavigatorTouchpanelKey { get; } } }