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