docs: update XML comments for Essentials Core

This commit is contained in:
Andrew Welker 2026-02-09 08:58:52 -06:00
parent 0764685c51
commit f88bb13367
260 changed files with 7018 additions and 1318 deletions

View file

@ -25,8 +25,14 @@ namespace PepperDash.Essentials.Core
{
RoomOnToDefaultSourceWhenOccupiedConfig PropertiesConfig;
/// <summary>
/// Gets or sets the FeatureEnabled
/// </summary>
public bool FeatureEnabled { get; private set; }
/// <summary>
/// Gets or sets the FeatureEnabledTime
/// </summary>
public DateTime FeatureEnabledTime { get; private set; }
ScheduledEvent FeatureEnableEvent;
@ -51,6 +57,10 @@ namespace PepperDash.Essentials.Core
private Fusion.IEssentialsRoomFusionController FusionRoom;
/// <summary>
/// Constructor for RoomOnToDefaultSourceWhenOccupied
/// </summary>
/// <param name="config">config of the device</param>
public RoomOnToDefaultSourceWhenOccupied(DeviceConfig config) :
base (config)
{
@ -152,7 +162,10 @@ namespace PepperDash.Essentials.Core
Debug.LogMessage(LogEventLevel.Debug, this, "Unable to get room from Device Manager with key: {0}", PropertiesConfig.RoomKey);
}
/// <summary>
/// CustomSetConfig method
/// </summary>
/// <param name="config">config of the device</param>
protected override void CustomSetConfig(DeviceConfig config)
{
var newPropertiesConfig = JsonConvert.DeserializeObject<RoomOnToDefaultSourceWhenOccupiedConfig>(config.Properties.ToString());
@ -367,7 +380,8 @@ namespace PepperDash.Essentials.Core
/// <summary>
/// Checks existing event to see if it matches the execution time
/// </summary>
/// <param name="existingEvent"></param>
/// <param name="existingEvent">event we are checking</param>
/// <param name="newTime">time we are checking against</param>
/// <returns></returns>
bool CheckExistingEventTimeForMatch(ScheduledEvent existingEvent, DateTime newTime)
{
@ -520,70 +534,70 @@ namespace PepperDash.Essentials.Core
/// </summary>
public class RoomOnToDefaultSourceWhenOccupiedConfig
{
[JsonProperty("roomKey")]
/// <summary>
/// Gets or sets the RoomKey
/// </summary>
[JsonProperty("roomKey")]
public string RoomKey { get; set; }
[JsonProperty("enableRoomOnWhenOccupied")]
/// <summary>
/// Gets or sets the EnableRoomOnWhenOccupied
/// </summary>
[JsonProperty("enableRoomOnWhenOccupied")]
public bool EnableRoomOnWhenOccupied { get; set; }
[JsonProperty("occupancyStartTime")]
/// <summary>
/// Gets or sets the OccupancyStartTime
/// </summary>
[JsonProperty("occupancyStartTime")]
public string OccupancyStartTime { get; set; }
[JsonProperty("occupancyEndTime")]
/// <summary>
/// Gets or sets the OccupancyEndTime
/// </summary>
[JsonProperty("occupancyEndTime")]
public string OccupancyEndTime { get; set; }
[JsonProperty("enableSunday")]
/// <summary>
/// Gets or sets the EnableSunday
/// </summary>
[JsonProperty("enableSunday")]
public bool EnableSunday { get; set; }
[JsonProperty("enableMonday")]
/// <summary>
/// Gets or sets the EnableMonday
/// </summary>
[JsonProperty("enableMonday")]
public bool EnableMonday { get; set; }
[JsonProperty("enableTuesday")]
/// <summary>
/// Gets or sets the EnableTuesday
/// </summary>
[JsonProperty("enableWednesday")]
public bool EnableTuesday { get; set; }
[JsonProperty("enableWednesday")]
/// <summary>
/// Gets or sets the EnableWednesday
/// </summary>
[JsonProperty("enableWednesday")]
public bool EnableWednesday { get; set; }
[JsonProperty("enableThursday")]
/// <summary>
/// Gets or sets the EnableThursday
/// </summary>
[JsonProperty("enableThursday")]
public bool EnableThursday { get; set; }
[JsonProperty("enableFriday")]
/// <summary>
/// Gets or sets the EnableFriday
/// </summary>
[JsonProperty("enableFriday")]
public bool EnableFriday { get; set; }
[JsonProperty("enableSaturday")]
/// <summary>
/// Gets or sets the EnableSaturday
/// </summary>
[JsonProperty("enableSaturday")]
public bool EnableSaturday { get; set; }
}
@ -592,6 +606,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public class RoomOnToDefaultSourceWhenOccupiedFactory : EssentialsDeviceFactory<RoomOnToDefaultSourceWhenOccupied>
{
/// <summary>
/// Constructor for RoomOnToDefaultSourceWhenOccupiedFactory
/// </summary>
public RoomOnToDefaultSourceWhenOccupiedFactory()
{
TypeNames = new List<string>() { "roomonwhenoccupancydetectedfeature" };

View file

@ -53,6 +53,9 @@ namespace PepperDash.Essentials.Core
private bool _isActive;
/// <summary>
/// Gets or sets IsActive
/// </summary>
[JsonProperty("isActive")]
public bool IsActive
{
@ -69,16 +72,20 @@ namespace PepperDash.Essentials.Core
}
}
[JsonIgnore]
/// <summary>
/// Gets or sets the IsActiveFeedback
/// </summary>
[JsonIgnore]
public BoolFeedback IsActiveFeedback { get; private set; }
private List<DeviceActionWrapper> activationActions;
private List<DeviceActionWrapper> deactivationActions;
/// <summary>
/// Constructor for RoomCombinationScenario
/// </summary>
/// <param name="config">config of the room combine scenario</param>
public RoomCombinationScenario(RoomCombinationScenarioConfig config)
{
Key = config.Key;
@ -98,6 +105,10 @@ namespace PepperDash.Essentials.Core
IsActiveFeedback = new BoolFeedback(() => _isActive);
}
/// <summary>
/// Activates the scenario
/// </summary>
/// <returns></returns>
public async Task Activate()
{
this.LogInformation("Activating Scenario {name} with {activationActionCount} action(s) defined", Name, activationActions.Count);
@ -116,6 +127,10 @@ namespace PepperDash.Essentials.Core
IsActive = true;
}
/// <summary>
/// Deactivates the scenario
/// </summary>
/// <returns></returns>
public async Task Deactivate()
{
this.LogInformation("Deactivating Scenario {name} with {deactivationActionCount} action(s) defined", Name, deactivationActions.Count);

View file

@ -4,16 +4,16 @@ using Newtonsoft.Json;
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
/// Represents a EssentialsHuddleVtc1PropertiesConfig
/// </summary>
public class EssentialsHuddleVtc1PropertiesConfig : EssentialsConferenceRoomPropertiesConfig
{
[JsonProperty("defaultDisplayKey")]
/// <summary>
/// Gets or sets the DefaultDisplayKey
/// Represents a EssentialsHuddleVtc1PropertiesConfig
/// </summary>
public string DefaultDisplayKey { get; set; }
public class EssentialsHuddleVtc1PropertiesConfig : EssentialsConferenceRoomPropertiesConfig
{
/// <summary>
/// Gets or sets the DefaultDisplayKey
/// </summary>
[JsonProperty("defaultDisplayKey")]
public string DefaultDisplayKey { get; set; }
}
}
}

View file

@ -11,13 +11,27 @@ namespace PepperDash.Essentials.Room.Config
/// </summary>
public class EssentialsNDisplayRoomPropertiesConfig : EssentialsConferenceRoomPropertiesConfig
{
/// <summary>
/// Gets or sets the DefaultAudioBehavior
/// </summary>
[JsonProperty("defaultAudioBehavior")]
public string DefaultAudioBehavior { get; set; }
/// <summary>
/// Gets or sets the DefaultVideoBehavior
/// </summary>
[JsonProperty("defaultVideoBehavior")]
public string DefaultVideoBehavior { get; set; }
/// <summary>
/// Gets or sets the Displays
/// </summary>
[JsonProperty("displays")]
public Dictionary<eSourceListItemDestinationTypes, DisplayItem> Displays { get; set; }
/// <summary>
/// Constructor
/// </summary>
public EssentialsNDisplayRoomPropertiesConfig()
{
Displays = new Dictionary<eSourceListItemDestinationTypes, DisplayItem>();
@ -34,6 +48,7 @@ namespace PepperDash.Essentials.Room.Config
/// Gets or sets the Key
/// </summary>
public string Key { get; set; }
/// <summary>
/// Gets or sets the Name
/// </summary>

View file

@ -11,15 +11,35 @@ namespace PepperDash.Essentials.Room.Config
/// Gets or sets the DefaultAudioBehavior
/// </summary>
public string DefaultAudioBehavior { get; set; }
/// <summary>
/// Gets or sets the DefaultAudioKey
/// </summary>
public string DefaultAudioKey { get; set; }
/// <summary>
/// Gets or sets the DefaultVideoBehavior
/// </summary>
public string DefaultVideoBehavior { get; set; }
/// <summary>
/// Gets or sets the DisplayKeys
/// </summary>
public List<string> DisplayKeys { get; set; }
/// <summary>
/// Gets or sets the SourceListKey
/// </summary>
public string SourceListKey { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the room has a DSP
/// </summary>
public bool HasDsp { get; set; }
/// <summary>
/// Constructor
/// </summary>
public EssentialsPresentationRoomPropertiesConfig()
{
DisplayKeys = new List<string>();

View file

@ -285,7 +285,6 @@ namespace PepperDash.Essentials.Room.Config
/// <summary>
/// Gets or sets the SourceListKey
/// </summary>
/// </summary>
[JsonProperty("sourceListKey")]
public string SourceListKey { get; set; }
/// <summary>

View file

@ -25,11 +25,15 @@
/// contact,versiport
/// </summary>
public string Type { get; set; }
/// <summary>
/// Input number if contact
/// </summary>
public int Number { get; set; }
/// <summary>
/// TriggerOnClose indicates if the trigger is on close
/// </summary>
public bool TriggerOnClose { get; set; }
}

View file

@ -13,10 +13,10 @@ namespace PepperDash.Essentials.Room.Config
/// </summary>
public class EssentialsRoomScheduledEventsConfig
{
[JsonProperty("scheduledEvents")]
/// <summary>
/// Gets or sets the ScheduledEvents
/// </summary>
[JsonProperty("scheduledEvents")]
public List<ScheduledEventConfig> ScheduledEvents;
}
@ -25,49 +25,52 @@ namespace PepperDash.Essentials.Room.Config
/// </summary>
public class ScheduledEventConfig
{
[JsonProperty("key")]
/// <summary>
/// Gets or sets the Key
/// </summary>
[JsonProperty("key")]
public string Key;
[JsonProperty("name")]
/// <summary>
/// Gets or sets the Name
/// </summary>
[JsonProperty("name")]
public string Name;
/// <summary>
/// Gets or sets the Days
/// </summary>
[JsonProperty("days")]
public ScheduledEventCommon.eWeekDays Days;
[JsonProperty("time")]
/// <summary>
/// Gets or sets the Time
/// </summary>
[JsonProperty("time")]
public string Time;
[JsonProperty("actions")]
/// <summary>
/// Gets or sets the Actions
/// </summary>
[JsonProperty("actions")]
public List<DeviceActionWrapper> Actions;
[JsonProperty("persistent")]
/// <summary>
/// Gets or sets the Persistent
/// </summary>
[JsonProperty("persistent")]
public bool Persistent;
[JsonProperty("acknowledgeable")]
/// <summary>
/// Gets or sets the Acknowledgeable
/// </summary>
[JsonProperty("acknowledgeable")]
public bool Acknowledgeable;
[JsonProperty("enable")]
/// <summary>
/// Gets or sets the Enable
/// </summary>
[JsonProperty("enable")]
public bool Enable;
}
}

View file

@ -14,9 +14,6 @@ namespace PepperDash.Essentials.Room.Config
/// The key of the dummy device used to enable routing
/// </summary>
[JsonProperty("dummySourceKey")]
/// <summary>
/// Gets or sets the DummySourceKey
/// </summary>
public string DummySourceKey { get; set; }
/// <summary>
@ -26,7 +23,7 @@ namespace PepperDash.Essentials.Room.Config
public List<string> Displays { get; set; }
/// <summary>
/// The keys of the tuners assinged to this room
/// The keys of the tuners assigned to this room
/// </summary>
[JsonProperty("tuners")]
public List<string> Tuners { get; set; }
@ -49,19 +46,16 @@ namespace PepperDash.Essentials.Room.Config
[JsonProperty("presetsFileName")]
public string PresetsFileName { get; set; }
[JsonProperty("scheduledEvents")]
/// <summary>
/// Gets or sets the ScheduledEvents
/// </summary>
[JsonProperty("scheduledEvents")]
public List<ScheduledEventConfig> ScheduledEvents { get; set; }
/// <summary>
/// Indicates that the room is the primary when true
/// </summary>
[JsonProperty("isPrimary")]
/// <summary>
/// Gets or sets the IsPrimary
/// </summary>
public bool IsPrimary { get; set; }
/// <summary>
@ -70,21 +64,21 @@ namespace PepperDash.Essentials.Room.Config
[JsonProperty("mirroredTuners")]
public Dictionary<uint, string> MirroredTuners { get; set; }
[JsonProperty("helpMessage")]
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
[JsonProperty("helpMessage")]
public string HelpMessage { get; set; }
/// <summary>
/// Indicates the room
/// </summary>
[JsonProperty("isTvPresetsProvider")]
/// <summary>
/// Gets or sets the IsTvPresetsProvider
/// </summary>
[JsonProperty("isTvPresetsProvider")]
public bool IsTvPresetsProvider;
/// <summary>
/// Constructor
/// </summary>
public EssentialsTechRoomConfig()
{
Displays = new List<string>();

View file

@ -12,8 +12,20 @@ namespace PepperDash.Essentials.Room.Config
/// Gets or sets the Master
/// </summary>
public EssentialsVolumeLevelConfig Master { get; set; }
/// <summary>
/// Gets or sets the Program
/// </summary>
public EssentialsVolumeLevelConfig Program { get; set; }
/// <summary>
/// Gets or sets the AudioCallRx
/// </summary>
public EssentialsVolumeLevelConfig AudioCallRx { get; set; }
/// <summary>
/// Gets or sets the AudioCallTx
/// </summary>
public EssentialsVolumeLevelConfig AudioCallTx { get; set; }
}

View file

@ -8,42 +8,46 @@ namespace PepperDash.Essentials.Room.Config
/// </summary>
public class SimplRoomPropertiesConfig : EssentialsHuddleVtc1PropertiesConfig
{
/// <summary>
/// Gets or sets the RoomPhoneNumber
/// </summary>
[JsonProperty("roomPhoneNumber")]
/// <summary>
/// Gets or sets the RoomPhoneNumber
/// </summary>
public string RoomPhoneNumber { get; set; }
/// <summary>
/// Gets or sets the RoomURI
/// </summary>
[JsonProperty("roomURI")]
/// <summary>
/// Gets or sets the RoomURI
/// </summary>
public string RoomURI { get; set; }
/// <summary>
/// Gets or sets the SpeedDials
/// </summary>
[JsonProperty("speedDials")]
/// <summary>
/// Gets or sets the SpeedDials
/// </summary>
public List<SimplSpeedDial> SpeedDials { get; set; }
/// <summary>
/// Gets or sets the VolumeSliderNames
/// </summary>
[JsonProperty("volumeSliderNames")]
/// <summary>
/// Gets or sets the VolumeSliderNames
/// </summary>
public List<string> VolumeSliderNames { get; set; }
}
/// <summary>
/// Represents a SimplSpeedDial
/// </summary>
/// <summary>
/// Represents a SimplSpeedDial
/// </summary>
public class SimplSpeedDial
{
/// <summary>
/// Gets or sets the Name
/// </summary>
[JsonProperty("name")]
/// <summary>
/// Gets or sets the Name
/// </summary>
public string Name { get; set; }
/// <summary>
/// Gets or sets the Number
/// </summary>
[JsonProperty("number")]
/// <summary>
/// Gets or sets the Number
/// </summary>
public string Number { get; set; }
}
}

View file

@ -9,6 +9,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public class EssentialsRoomEmergencyContactClosure : EssentialsRoomEmergencyBase, IEssentialsRoomEmergency
{
/// <summary>
/// Event fired when emergency state changes
/// </summary>
public event EventHandler<EventArgs> EmergencyStateChange;
IEssentialsRoom Room;
@ -20,6 +23,12 @@ namespace PepperDash.Essentials.Core
/// </summary>
public bool InEmergency { get; private set; }
/// <summary>
/// Constructor for EssentialsRoomEmergencyContactClosure
/// </summary>
/// <param name="key">device key</param>
/// <param name="config">emergency device config</param>
/// <param name="room">the room associated with this emergency contact closure</param>
public EssentialsRoomEmergencyContactClosure(string key, EssentialsRoomEmergencyConfig config, IEssentialsRoom room) :
base(key)
{
@ -95,8 +104,14 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IEssentialsRoomEmergency
{
/// <summary>
/// Event fired when emergency state changes
/// </summary>
event EventHandler<EventArgs> EmergencyStateChange;
/// <summary>
/// Gets or sets the InEmergency
/// </summary>
bool InEmergency { get; }
}
}

View file

@ -29,7 +29,14 @@ namespace PepperDash.Essentials.Core
/// </summary>
public event EventHandler<EventArgs> RoomOccupancyIsSet;
/// <summary>
/// Gets or sets the IsWarmingUpFeedback
/// </summary>
public BoolFeedback IsWarmingUpFeedback { get; private set; }
/// <summary>
/// Gets or sets the IsCoolingDownFeedback
/// </summary>
public BoolFeedback IsCoolingDownFeedback { get; private set; }
/// <summary>
@ -37,10 +44,19 @@ namespace PepperDash.Essentials.Core
/// </summary>
public IOccupancyStatusProvider RoomOccupancy { get; protected set; }
/// <summary>
/// Gets or sets the OccupancyStatusProviderIsRemote
/// </summary>
public bool OccupancyStatusProviderIsRemote { get; private set; }
/// <summary>
/// Gets or sets the EnvironmentalControlDevices
/// </summary>
public List<EssentialsDevice> EnvironmentalControlDevices { get; protected set; }
/// <summary>
/// Indicates if the room has any environmental control devices
/// </summary>
public bool HasEnvironmentalControlDevices
{
get
@ -49,7 +65,14 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Gets or sets the IsWarmingFeedbackFunc
/// </summary>
protected abstract Func<bool> IsWarmingFeedbackFunc { get; }
/// <summary>
/// Gets or sets the IsCoolingFeedbackFunc
/// </summary>
protected abstract Func<bool> IsCoolingFeedbackFunc { get; }
/// <summary>
@ -62,6 +85,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public IMobileControlRoomMessenger MobileControlRoomBridge { get; private set; }
/// <summary>
/// The config name of the default source list
/// </summary>
protected const string _defaultListKey = "default";
/// <summary>
@ -69,6 +95,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
///
private string _sourceListKey;
/// <summary>
/// Gets or sets the SourceListKey
/// </summary>
public string SourceListKey {
get
{
@ -91,6 +121,10 @@ namespace PepperDash.Essentials.Core
}
private string _destinationListKey;
/// <summary>
/// Gets or sets the DestinationListKey
/// </summary>
public string DestinationListKey
{
get
@ -114,6 +148,10 @@ namespace PepperDash.Essentials.Core
}
private string _audioControlPointListKey;
/// <summary>
/// Gets or sets the AudioControlPointListKey
/// </summary>
public string AudioControlPointListKey
{
get
@ -137,6 +175,10 @@ namespace PepperDash.Essentials.Core
}
private string _cameraListKey;
/// <summary>
/// Gets or sets the CameraListKey
/// </summary>
public string CameraListKey
{
get
@ -165,16 +207,33 @@ namespace PepperDash.Essentials.Core
public SecondsCountdownTimer ShutdownPromptTimer { get; private set; }
/// <summary>
///
/// Gets or sets the ShutdownPromptSeconds
/// </summary>
public int ShutdownPromptSeconds { get; set; }
/// <summary>
/// Gets or sets the ShutdownVacancySeconds
/// </summary>
public int ShutdownVacancySeconds { get; set; }
/// <summary>
/// Gets or sets the ShutdownType
/// </summary>
public eShutdownType ShutdownType { get; private set; }
/// <summary>
/// Gets or sets the Emergency
/// </summary>
public EssentialsRoomEmergencyBase Emergency { get; set; }
/// <summary>
/// Gets or sets the MicrophonePrivacy
/// </summary>
public Core.Privacy.MicrophonePrivacyController MicrophonePrivacy { get; set; }
/// <summary>
/// Gets or sets the LogoUrlLightBkgnd
/// </summary>
public string LogoUrlLightBkgnd { get; set; }
/// <summary>
@ -182,6 +241,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public string LogoUrlDarkBkgnd { get; set; }
/// <summary>
/// Gets or sets the RoomVacancyShutdownTimer
/// </summary>
protected SecondsCountdownTimer RoomVacancyShutdownTimer { get; private set; }
/// <summary>
@ -204,6 +266,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
protected abstract Func<bool> OnFeedbackFunc { get; }
/// <summary>
/// Gets or sets the SavedVolumeLevels
/// </summary>
protected Dictionary<IBasicVolumeWithFeedback, uint> SavedVolumeLevels = new Dictionary<IBasicVolumeWithFeedback, uint>();
/// <summary>
@ -211,7 +276,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
public bool ZeroVolumeWhenSwtichingVolumeDevices { get; private set; }
/// <summary>
/// Constructor for EssentialsRoomBase
/// </summary>
/// <param name="config">config of the device</param>
public EssentialsRoomBase(DeviceConfig config)
: base(config)
{
@ -283,6 +351,10 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Sets the DestinationListKey property to the passed in value or the default if no value passed in
/// </summary>
/// <param name="destinationListKey">key of the destination list object</param>
protected void SetDestinationListKey(string destinationListKey)
{
if (!string.IsNullOrEmpty(destinationListKey))
@ -396,6 +468,7 @@ namespace PepperDash.Essentials.Core
/// Sets the object to be used as the IOccupancyStatusProvider for the room. Can be an Occupancy Aggregator or a specific device
/// </summary>
/// <param name="statusProvider"></param>
/// <param name="timeoutMinutes"></param>
public void SetRoomOccupancy(IOccupancyStatusProvider statusProvider, int timeoutMinutes)
{
if (statusProvider == null)
@ -479,16 +552,45 @@ namespace PepperDash.Essentials.Core
/// </summary>
public enum eShutdownType
{
/// <summary>
/// No shutdown in progress
/// </summary>
None = 0,
/// <summary>
/// Manual shutdown initiated
/// </summary>
External,
/// <summary>
/// Vacancy based shutdown
/// </summary>
Manual,
/// <summary>
/// Shutdown due to room vacancy
/// </summary>
Vacancy
}
/// <summary>
/// Enumeration of eVacancyMode values
/// </summary>
public enum eVacancyMode
{
/// <summary>
/// No vacancy detected
/// </summary>
None = 0,
/// <summary>
/// InInitialVacancy - countdown to warning
/// </summary>
InInitialVacancy,
/// <summary>
/// InShutdownWarning - countdown to shutdown
/// </summary>
InShutdownWarning
}
@ -497,15 +599,36 @@ namespace PepperDash.Essentials.Core
/// </summary>
public enum eWarmingCoolingMode
{
/// <summary>
/// None
/// </summary>
None,
/// <summary>
/// Warming
/// </summary>
Warming,
/// <summary>
/// Cooling
/// </summary>
Cooling
}
/// <summary>
/// Base class for room emergency implementations
/// </summary>
public abstract class EssentialsRoomEmergencyBase : IKeyed
{
/// <summary>
/// Key of the room
/// </summary>
public string Key { get; private set; }
/// <summary>
/// Constructor for EssentialsRoomEmergencyBase
/// </summary>
/// <param name="key">key of the room</param>
public EssentialsRoomEmergencyBase(string key)
{
Key = key;

View file

@ -17,34 +17,95 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IEssentialsRoom : IKeyName, IReconfigurableDevice, IRunDefaultPresentRoute, IEnvironmentalControls
{
/// <summary>
/// Gets the PowerFeedback
/// </summary>
BoolFeedback OnFeedback { get; }
/// <summary>
/// Gets the IsOccupiedFeedback
/// </summary>
BoolFeedback IsWarmingUpFeedback { get; }
/// <summary>
/// Gets the IsCoolingDownFeedback
/// </summary>
BoolFeedback IsCoolingDownFeedback { get; }
/// <summary>
/// Gets a value indicating whether mobile control is enabled for this room
/// </summary>
bool IsMobileControlEnabled { get; }
/// <summary>
/// Gets the MobileControlRoomBridge
/// </summary>
IMobileControlRoomMessenger MobileControlRoomBridge { get; }
/// <summary>
/// Gets the SourceListKey
/// </summary>
string SourceListKey { get; }
/// <summary>
/// Gets the DestinationListKey
/// </summary>
string DestinationListKey { get; }
/// <summary>
/// Gets the AudioControlPointListKey
/// </summary>
string AudioControlPointListKey { get; }
/// <summary>
/// Gets the CameraListKey
/// </summary>
string CameraListKey { get; }
/// <summary>
/// Gets the ShutdownPromptTimer
/// </summary>
SecondsCountdownTimer ShutdownPromptTimer { get; }
/// <summary>
/// Gets the ShutdownVacancyTimer
/// </summary>
int ShutdownPromptSeconds { get; }
/// <summary>
/// Gets the ShutdownVacancySeconds
/// </summary>
int ShutdownVacancySeconds { get; }
/// <summary>
/// Gets the ShutdownType
/// </summary>
eShutdownType ShutdownType { get; }
/// <summary>
/// Gets the LogoUrlLightBkgnd
/// </summary>
string LogoUrlLightBkgnd { get; }
/// <summary>
/// Gets the LogoUrlDarkBkgnd
/// </summary>
string LogoUrlDarkBkgnd { get; }
/// <summary>
/// Starts the shutdown process
/// </summary>
/// <param name="type">type of shutdown event</param>
void StartShutdown(eShutdownType type);
/// <summary>
/// Shuts down the room
/// </summary>
void Shutdown();
/// <summary>
/// Powers on the room to either the default source or the last source used
/// </summary>
void PowerOnToDefaultOrLastSource();
}

View file

@ -9,10 +9,21 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoomEventSchedule
{
/// <summary>
/// Adds or updates a scheduled event
/// </summary>
/// <param name="eventConfig"></param>
void AddOrUpdateScheduledEvent(ScheduledEventConfig eventConfig);
/// <summary>
/// Removes a scheduled event by its key
/// </summary>
/// <returns></returns>
List<ScheduledEventConfig> GetScheduledEvents();
/// <summary>
/// Removes a scheduled event by its key
/// </summary>
event EventHandler<ScheduledEventEventArgs> ScheduledEventsChanged;
}

View file

@ -11,6 +11,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasInCallFeedback
{
/// <summary>
/// Gets the InCallFeedback
/// </summary>
BoolFeedback InCallFeedback { get; }
}
@ -19,6 +22,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasDefaultDisplay
{
/// <summary>
/// Gets the DefaultDisplay
/// </summary>
IRoutingSink DefaultDisplay { get; }
}
@ -28,6 +34,9 @@ namespace PepperDash.Essentials.Core
[Obsolete("Will be removed in a future version")]
public interface IHasMultipleDisplays
{
/// <summary>
/// Gets the Displays dictionary
/// </summary>
Dictionary<eSourceListItemDestinationTypes, IRoutingSink> Displays { get; }
}
@ -36,8 +45,19 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRunRouteAction
{
/// <summary>
/// Runs a route action
/// </summary>
/// <param name="routeKey"></param>
/// <param name="sourceListKey"></param>
void RunRouteAction(string routeKey, string sourceListKey);
/// <summary>
/// Runs a route action with a success callback
/// </summary>
/// <param name="routeKey"></param>
/// <param name="sourceListKey"></param>
/// <param name="successCallback"></param>
void RunRouteAction(string routeKey, string sourceListKey, Action successCallback);
}
@ -46,6 +66,12 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRunDirectRouteAction
{
/// <summary>
/// Runs a direct route
/// </summary>
/// <param name="sourceKey"></param>
/// <param name="destinationKey"></param>
/// <param name="type"></param>
void RunDirectRoute(string sourceKey, string destinationKey, eRoutingSignalType type = eRoutingSignalType.AudioVideo);
}
@ -54,8 +80,14 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasMatrixRouting
{
/// <summary>
/// Gets the MatrixRoutingDeviceKey
/// </summary>
string MatrixRoutingDeviceKey { get; }
/// <summary>
/// Gets the EndpointKeys
/// </summary>
List<string> EndpointKeys { get; }
}
@ -64,6 +96,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasRoutingEndpoints
{
/// <summary>
/// Gets the EndpointKeys
/// </summary>
List<string> EndpointKeys { get; }
}
@ -72,10 +107,21 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IShutdownPromptTimer
{
/// <summary>
/// Gets the ShutdownPromptTimer
/// </summary>
SecondsCountdownTimer ShutdownPromptTimer { get; }
/// <summary>
/// Gets the ShutdownPromptSeconds
/// </summary>
/// <param name="seconds">number of seconds to set</param>
void SetShutdownPromptSeconds(int seconds);
/// <summary>
/// Starts the shutdown process
/// </summary>
/// <param name="type">type of shutdown event</param>
void StartShutdown(eShutdownType type);
}
@ -84,14 +130,32 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface ITechPassword
{
/// <summary>
/// Event fired when tech password validation result is available
/// </summary>
event EventHandler<TechPasswordEventArgs> TechPasswordValidateResult;
/// <summary>
/// Event fired when tech password is changed
/// </summary>
event EventHandler<EventArgs> TechPasswordChanged;
/// <summary>
/// Gets the TechPasswordLength
/// </summary>
int TechPasswordLength { get; }
/// <summary>
/// Validates the tech password
/// </summary>
/// <param name="password">The tech password to validate</param>
void ValidateTechPassword(string password);
/// <summary>
/// Sets the tech password
/// </summary>
/// <param name="oldPassword">The current tech password</param>
/// <param name="newPassword">The new tech password to set</param>
void SetTechPassword(string oldPassword, string newPassword);
}
@ -105,6 +169,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
public bool IsValid { get; private set; }
/// <summary>
/// Constructor for TechPasswordEventArgs
/// </summary>
/// <param name="isValid"></param>
public TechPasswordEventArgs(bool isValid)
{
IsValid = isValid;
@ -116,6 +184,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRunDefaultPresentRoute
{
/// <summary>
/// Runs the default present route
/// </summary>
/// <returns></returns>
bool RunDefaultPresentRoute();
}
@ -124,6 +196,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRunDefaultCallRoute : IRunDefaultPresentRoute
{
/// <summary>
/// Runs the default call route
/// </summary>
/// <returns></returns>
bool RunDefaultCallRoute();
}
@ -132,24 +208,59 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IEnvironmentalControls
{
/// <summary>
/// Gets the EnvironmentalControlDevices
/// </summary>
List<EssentialsDevice> EnvironmentalControlDevices { get; }
/// <summary>
/// Gets a value indicating whether the room has environmental control devices
/// </summary>
bool HasEnvironmentalControlDevices { get; }
}
/// <summary>
/// Defines the contract for IRoomOccupancy
/// </summary>
public interface IRoomOccupancy : IKeyed
{
/// <summary>
/// Gets the RoomOccupancy
/// </summary>
IOccupancyStatusProvider RoomOccupancy { get; }
/// <summary>
/// Gets a value indicating whether the OccupancyStatusProviderIsRemote
/// </summary>
bool OccupancyStatusProviderIsRemote { get; }
/// <summary>
/// Sets the room occupancy
/// </summary>
/// <param name="statusProvider"></param>
/// <param name="timeoutMinutes"></param>
void SetRoomOccupancy(IOccupancyStatusProvider statusProvider, int timeoutMinutes);
/// <summary>
/// Called when the room has been vacated for the timeout period
/// </summary>
/// <param name="o"></param>
void RoomVacatedForTimeoutPeriod(object o);
/// <summary>
/// Starts the room vacancy timer
/// </summary>
/// <param name="mode">vacancy mode</param>
void StartRoomVacancyTimer(eVacancyMode mode);
/// <summary>
/// Gets the VacancyMode
/// </summary>
eVacancyMode VacancyMode { get; }
/// <summary>
/// Event fired when room occupancy is set
/// </summary>
event EventHandler<EventArgs> RoomOccupancyIsSet;
}
@ -158,6 +269,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IEmergency
{
/// <summary>
/// Gets the Emergency
/// </summary>
EssentialsRoomEmergencyBase Emergency { get; }
}
@ -166,6 +280,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IMicrophonePrivacy
{
/// <summary>
/// Gets the MicrophonePrivacy
/// </summary>
Core.Privacy.MicrophonePrivacyController MicrophonePrivacy { get; }
}
@ -174,6 +291,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasAccessoryDevices : IKeyName
{
/// <summary>
/// Gets the AccessoryDeviceKeys
/// </summary>
List<string> AccessoryDeviceKeys { get; }
}
@ -182,6 +302,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasCiscoNavigatorTouchpanel
{
/// <summary>
/// Gets the CiscoNavigatorTouchpanelKey
/// </summary>
string CiscoNavigatorTouchpanelKey { get; }
}
}

View file

@ -12,33 +12,54 @@ namespace PepperDash.Essentials.Core
{
//***************************************************************************************************
/// <summary>
/// Abstract base class for Room
/// </summary>
public abstract class Room : Device, IHasFeedback
{
/// <summary>
/// Gets or sets the RoomIsOnFeedback
/// </summary>
public abstract BoolFeedback RoomIsOnFeedback { get; protected set; }
/// <summary>
/// Gets or sets the IsCoolingDownFeedback
/// </summary>
public abstract BoolFeedback IsCoolingDownFeedback { get; protected set; }
/// <summary>
/// Gets or sets the IsWarmingUpFeedback
/// </summary>
public abstract BoolFeedback IsWarmingUpFeedback { get; protected set; }
// In concrete classes, these should be computed from the relevant devices
/// <summary>
/// Gets or sets the CooldownTime
/// </summary>
/// <inheritdoc />
/// <summary>
/// Gets or sets the CooldownTime
/// </summary>
/// <inheritdoc />
public virtual uint CooldownTime { get { return 10000; } }
/// <summary>
/// Gets or sets the WarmupTime
/// </summary>
/// <inheritdoc />
/// <summary>
/// Gets or sets the WarmupTime
/// </summary>
/// <inheritdoc />
public virtual uint WarmupTime { get { return 5000; } }
/// <summary>
/// Gets or sets the Description
/// </summary>
/// <summary>
/// Gets or sets the Description
/// </summary>
public string Description { get; set; }
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
public string HelpMessage { get; set; }
/// <summary>
/// Room Constructor
/// </summary>
/// <param name="key">room key</param>
/// <param name="name">room name</param>
public Room(string key, string name)
: base(key, name)
{
@ -59,6 +80,9 @@ namespace PepperDash.Essentials.Core
#region IDeviceWithOutputs Members
/// <summary>
/// Gets the Feedbacks
/// </summary>
public virtual FeedbackCollection<Feedback> Feedbacks
{
get

View file

@ -13,6 +13,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IOccupancyStatusProvider
{
/// <summary>
/// Gets the RoomIsOccupiedFeedback
/// </summary>
BoolFeedback RoomIsOccupiedFeedback { get; }
}
}