diff --git a/src/PepperDash.Essentials.Core/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs b/src/PepperDash.Essentials.Core/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs
index d6f3c503..601c3559 100644
--- a/src/PepperDash.Essentials.Core/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs
+++ b/src/PepperDash.Essentials.Core/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs
@@ -25,8 +25,14 @@ namespace PepperDash.Essentials.Core
{
RoomOnToDefaultSourceWhenOccupiedConfig PropertiesConfig;
+ ///
+ /// Gets or sets the FeatureEnabled
+ ///
public bool FeatureEnabled { get; private set; }
+ ///
+ /// Gets or sets the FeatureEnabledTime
+ ///
public DateTime FeatureEnabledTime { get; private set; }
ScheduledEvent FeatureEnableEvent;
@@ -51,6 +57,10 @@ namespace PepperDash.Essentials.Core
private Fusion.IEssentialsRoomFusionController FusionRoom;
+ ///
+ /// Constructor for RoomOnToDefaultSourceWhenOccupied
+ ///
+ /// config of the device
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);
}
-
+ ///
+ /// CustomSetConfig method
+ ///
+ /// config of the device
protected override void CustomSetConfig(DeviceConfig config)
{
var newPropertiesConfig = JsonConvert.DeserializeObject(config.Properties.ToString());
@@ -367,7 +380,8 @@ namespace PepperDash.Essentials.Core
///
/// Checks existing event to see if it matches the execution time
///
- ///
+ /// event we are checking
+ /// time we are checking against
///
bool CheckExistingEventTimeForMatch(ScheduledEvent existingEvent, DateTime newTime)
{
@@ -520,70 +534,70 @@ namespace PepperDash.Essentials.Core
///
public class RoomOnToDefaultSourceWhenOccupiedConfig
{
- [JsonProperty("roomKey")]
///
/// Gets or sets the RoomKey
///
+ [JsonProperty("roomKey")]
public string RoomKey { get; set; }
- [JsonProperty("enableRoomOnWhenOccupied")]
///
/// Gets or sets the EnableRoomOnWhenOccupied
///
+ [JsonProperty("enableRoomOnWhenOccupied")]
public bool EnableRoomOnWhenOccupied { get; set; }
- [JsonProperty("occupancyStartTime")]
///
/// Gets or sets the OccupancyStartTime
///
+ [JsonProperty("occupancyStartTime")]
public string OccupancyStartTime { get; set; }
- [JsonProperty("occupancyEndTime")]
///
/// Gets or sets the OccupancyEndTime
///
+ [JsonProperty("occupancyEndTime")]
public string OccupancyEndTime { get; set; }
- [JsonProperty("enableSunday")]
///
/// Gets or sets the EnableSunday
///
+ [JsonProperty("enableSunday")]
public bool EnableSunday { get; set; }
- [JsonProperty("enableMonday")]
///
/// Gets or sets the EnableMonday
///
+ [JsonProperty("enableMonday")]
public bool EnableMonday { get; set; }
- [JsonProperty("enableTuesday")]
///
/// Gets or sets the EnableTuesday
///
+ [JsonProperty("enableWednesday")]
public bool EnableTuesday { get; set; }
- [JsonProperty("enableWednesday")]
///
/// Gets or sets the EnableWednesday
///
+ [JsonProperty("enableWednesday")]
public bool EnableWednesday { get; set; }
- [JsonProperty("enableThursday")]
///
/// Gets or sets the EnableThursday
///
+ [JsonProperty("enableThursday")]
public bool EnableThursday { get; set; }
- [JsonProperty("enableFriday")]
///
/// Gets or sets the EnableFriday
///
+ [JsonProperty("enableFriday")]
public bool EnableFriday { get; set; }
- [JsonProperty("enableSaturday")]
///
/// Gets or sets the EnableSaturday
///
+ [JsonProperty("enableSaturday")]
public bool EnableSaturday { get; set; }
}
@@ -592,6 +606,9 @@ namespace PepperDash.Essentials.Core
///
public class RoomOnToDefaultSourceWhenOccupiedFactory : EssentialsDeviceFactory
{
+ ///
+ /// Constructor for RoomOnToDefaultSourceWhenOccupiedFactory
+ ///
public RoomOnToDefaultSourceWhenOccupiedFactory()
{
TypeNames = new List() { "roomonwhenoccupancydetectedfeature" };
diff --git a/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs b/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs
index aa0bdcaa..040251ee 100644
--- a/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs
+++ b/src/PepperDash.Essentials.Core/Room/Combining/RoomCombinationScenario.cs
@@ -53,6 +53,9 @@ namespace PepperDash.Essentials.Core
private bool _isActive;
+ ///
+ /// Gets or sets IsActive
+ ///
[JsonProperty("isActive")]
public bool IsActive
{
@@ -69,16 +72,20 @@ namespace PepperDash.Essentials.Core
}
}
- [JsonIgnore]
///
/// Gets or sets the IsActiveFeedback
///
+ [JsonIgnore]
public BoolFeedback IsActiveFeedback { get; private set; }
private List activationActions;
private List deactivationActions;
+ ///
+ /// Constructor for RoomCombinationScenario
+ ///
+ /// config of the room combine scenario
public RoomCombinationScenario(RoomCombinationScenarioConfig config)
{
Key = config.Key;
@@ -98,6 +105,10 @@ namespace PepperDash.Essentials.Core
IsActiveFeedback = new BoolFeedback(() => _isActive);
}
+ ///
+ /// Activates the scenario
+ ///
+ ///
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;
}
+ ///
+ /// Deactivates the scenario
+ ///
+ ///
public async Task Deactivate()
{
this.LogInformation("Deactivating Scenario {name} with {deactivationActionCount} action(s) defined", Name, deactivationActions.Count);
diff --git a/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs b/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs
index 3a354813..6582bac3 100644
--- a/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs
+++ b/src/PepperDash.Essentials.Core/Room/EsentialsRoomEmergencyContactClosure.cs
@@ -9,6 +9,9 @@ namespace PepperDash.Essentials.Core
///
public class EssentialsRoomEmergencyContactClosure : EssentialsRoomEmergencyBase, IEssentialsRoomEmergency
{
+ ///
+ /// Event fired when emergency state changes
+ ///
public event EventHandler EmergencyStateChange;
IEssentialsRoom Room;
@@ -20,6 +23,12 @@ namespace PepperDash.Essentials.Core
///
public bool InEmergency { get; private set; }
+ ///
+ /// Constructor for EssentialsRoomEmergencyContactClosure
+ ///
+ /// device key
+ /// emergency device config
+ /// the room associated with this emergency contact closure
public EssentialsRoomEmergencyContactClosure(string key, EssentialsRoomEmergencyConfig config, IEssentialsRoom room) :
base(key)
{
@@ -95,8 +104,14 @@ namespace PepperDash.Essentials.Core
///
public interface IEssentialsRoomEmergency
{
+ ///
+ /// Event fired when emergency state changes
+ ///
event EventHandler EmergencyStateChange;
+ ///
+ /// Gets or sets the InEmergency
+ ///
bool InEmergency { get; }
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Room/EssentialsRoomBase.cs b/src/PepperDash.Essentials.Core/Room/EssentialsRoomBase.cs
index 38e4456e..1b29042a 100644
--- a/src/PepperDash.Essentials.Core/Room/EssentialsRoomBase.cs
+++ b/src/PepperDash.Essentials.Core/Room/EssentialsRoomBase.cs
@@ -29,7 +29,14 @@ namespace PepperDash.Essentials.Core
///
public event EventHandler RoomOccupancyIsSet;
+ ///
+ /// Gets or sets the IsWarmingUpFeedback
+ ///
public BoolFeedback IsWarmingUpFeedback { get; private set; }
+
+ ///
+ /// Gets or sets the IsCoolingDownFeedback
+ ///
public BoolFeedback IsCoolingDownFeedback { get; private set; }
///
@@ -37,10 +44,19 @@ namespace PepperDash.Essentials.Core
///
public IOccupancyStatusProvider RoomOccupancy { get; protected set; }
+ ///
+ /// Gets or sets the OccupancyStatusProviderIsRemote
+ ///
public bool OccupancyStatusProviderIsRemote { get; private set; }
+ ///
+ /// Gets or sets the EnvironmentalControlDevices
+ ///
public List EnvironmentalControlDevices { get; protected set; }
+ ///
+ /// Indicates if the room has any environmental control devices
+ ///
public bool HasEnvironmentalControlDevices
{
get
@@ -49,7 +65,14 @@ namespace PepperDash.Essentials.Core
}
}
+ ///
+ /// Gets or sets the IsWarmingFeedbackFunc
+ ///
protected abstract Func IsWarmingFeedbackFunc { get; }
+
+ ///
+ /// Gets or sets the IsCoolingFeedbackFunc
+ ///
protected abstract Func IsCoolingFeedbackFunc { get; }
///
@@ -62,6 +85,9 @@ namespace PepperDash.Essentials.Core
///
public IMobileControlRoomMessenger MobileControlRoomBridge { get; private set; }
+ ///
+ /// The config name of the default source list
+ ///
protected const string _defaultListKey = "default";
///
@@ -69,6 +95,10 @@ namespace PepperDash.Essentials.Core
///
///
private string _sourceListKey;
+
+ ///
+ /// Gets or sets the SourceListKey
+ ///
public string SourceListKey {
get
{
@@ -91,6 +121,10 @@ namespace PepperDash.Essentials.Core
}
private string _destinationListKey;
+
+ ///
+ /// Gets or sets the DestinationListKey
+ ///
public string DestinationListKey
{
get
@@ -114,6 +148,10 @@ namespace PepperDash.Essentials.Core
}
private string _audioControlPointListKey;
+
+ ///
+ /// Gets or sets the AudioControlPointListKey
+ ///
public string AudioControlPointListKey
{
get
@@ -137,6 +175,10 @@ namespace PepperDash.Essentials.Core
}
private string _cameraListKey;
+
+ ///
+ /// Gets or sets the CameraListKey
+ ///
public string CameraListKey
{
get
@@ -165,16 +207,33 @@ namespace PepperDash.Essentials.Core
public SecondsCountdownTimer ShutdownPromptTimer { get; private set; }
///
- ///
+ /// Gets or sets the ShutdownPromptSeconds
///
public int ShutdownPromptSeconds { get; set; }
+
+ ///
+ /// Gets or sets the ShutdownVacancySeconds
+ ///
public int ShutdownVacancySeconds { get; set; }
+
+ ///
+ /// Gets or sets the ShutdownType
+ ///
public eShutdownType ShutdownType { get; private set; }
+ ///
+ /// Gets or sets the Emergency
+ ///
public EssentialsRoomEmergencyBase Emergency { get; set; }
+ ///
+ /// Gets or sets the MicrophonePrivacy
+ ///
public Core.Privacy.MicrophonePrivacyController MicrophonePrivacy { get; set; }
+ ///
+ /// Gets or sets the LogoUrlLightBkgnd
+ ///
public string LogoUrlLightBkgnd { get; set; }
///
@@ -182,6 +241,9 @@ namespace PepperDash.Essentials.Core
///
public string LogoUrlDarkBkgnd { get; set; }
+ ///
+ /// Gets or sets the RoomVacancyShutdownTimer
+ ///
protected SecondsCountdownTimer RoomVacancyShutdownTimer { get; private set; }
///
@@ -204,6 +266,9 @@ namespace PepperDash.Essentials.Core
///
protected abstract Func OnFeedbackFunc { get; }
+ ///
+ /// Gets or sets the SavedVolumeLevels
+ ///
protected Dictionary SavedVolumeLevels = new Dictionary();
///
@@ -211,7 +276,10 @@ namespace PepperDash.Essentials.Core
///
public bool ZeroVolumeWhenSwtichingVolumeDevices { get; private set; }
-
+ ///
+ /// Constructor for EssentialsRoomBase
+ ///
+ /// config of the device
public EssentialsRoomBase(DeviceConfig config)
: base(config)
{
@@ -283,6 +351,10 @@ namespace PepperDash.Essentials.Core
}
}
+ ///
+ /// Sets the DestinationListKey property to the passed in value or the default if no value passed in
+ ///
+ /// key of the destination list object
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
///
///
+ ///
public void SetRoomOccupancy(IOccupancyStatusProvider statusProvider, int timeoutMinutes)
{
if (statusProvider == null)
@@ -479,16 +552,45 @@ namespace PepperDash.Essentials.Core
///
public enum eShutdownType
{
+ ///
+ /// No shutdown in progress
+ ///
None = 0,
+
+ ///
+ /// Manual shutdown initiated
+ ///
External,
+
+ ///
+ /// Vacancy based shutdown
+ ///
Manual,
+
+ ///
+ /// Shutdown due to room vacancy
+ ///
Vacancy
}
+ ///
+ /// Enumeration of eVacancyMode values
+ ///
public enum eVacancyMode
{
+ ///
+ /// No vacancy detected
+ ///
None = 0,
+
+ ///
+ /// InInitialVacancy - countdown to warning
+ ///
InInitialVacancy,
+
+ ///
+ /// InShutdownWarning - countdown to shutdown
+ ///
InShutdownWarning
}
@@ -497,15 +599,33 @@ namespace PepperDash.Essentials.Core
///
public enum eWarmingCoolingMode
{
+ ///
+ /// None
+ ///
None,
+
+ ///
+ /// Warming
+ ///
Warming,
+
+ ///
+ /// Cooling
+ ///
Cooling
}
+ ///
+ /// Base class for room emergency implementations
+ ///
public abstract class EssentialsRoomEmergencyBase : IKeyed
{
public string Key { get; private set; }
+ ///
+ /// Constructor for EssentialsRoomEmergencyBase
+ ///
+ /// key of the room
public EssentialsRoomEmergencyBase(string key)
{
Key = key;
diff --git a/src/PepperDash.Essentials.Core/Room/IEssentialsRoom.cs b/src/PepperDash.Essentials.Core/Room/IEssentialsRoom.cs
index d452c0b9..3ebe28c4 100644
--- a/src/PepperDash.Essentials.Core/Room/IEssentialsRoom.cs
+++ b/src/PepperDash.Essentials.Core/Room/IEssentialsRoom.cs
@@ -17,34 +17,95 @@ namespace PepperDash.Essentials.Core
///
public interface IEssentialsRoom : IKeyName, IReconfigurableDevice, IRunDefaultPresentRoute, IEnvironmentalControls
{
+ ///
+ /// Gets the PowerFeedback
+ ///
BoolFeedback OnFeedback { get; }
+ ///
+ /// Gets the IsOccupiedFeedback
+ ///
BoolFeedback IsWarmingUpFeedback { get; }
+
+ ///
+ /// Gets the IsCoolingDownFeedback
+ ///
BoolFeedback IsCoolingDownFeedback { get; }
+ ///
+ /// Gets a value indicating whether mobile control is enabled for this room
+ ///
bool IsMobileControlEnabled { get; }
+
+ ///
+ /// Gets the MobileControlRoomBridge
+ ///
IMobileControlRoomMessenger MobileControlRoomBridge { get; }
+ ///
+ /// Gets the SourceListKey
+ ///
string SourceListKey { get; }
+ ///
+ /// Gets the DestinationListKey
+ ///
string DestinationListKey { get; }
+ ///
+ /// Gets the AudioControlPointListKey
+ ///
string AudioControlPointListKey { get; }
+ ///
+ /// Gets the CameraListKey
+ ///
string CameraListKey { get; }
+ ///
+ /// Gets the ShutdownPromptTimer
+ ///
SecondsCountdownTimer ShutdownPromptTimer { get; }
+
+ ///
+ /// Gets the ShutdownVacancyTimer
+ ///
int ShutdownPromptSeconds { get; }
+
+ ///
+ /// Gets the ShutdownVacancySeconds
+ ///
int ShutdownVacancySeconds { get; }
+
+ ///
+ /// Gets the ShutdownType
+ ///
eShutdownType ShutdownType { get; }
+ ///
+ /// Gets the LogoUrlLightBkgnd
+ ///
string LogoUrlLightBkgnd { get; }
+
+ ///
+ /// Gets the LogoUrlDarkBkgnd
+ ///
string LogoUrlDarkBkgnd { get; }
+ ///
+ /// Starts the shutdown process
+ ///
+ /// type of shutdown event
void StartShutdown(eShutdownType type);
+ ///
+ /// Shuts down the room
+ ///
void Shutdown();
+ ///
+ /// Powers on the room to either the default source or the last source used
+ ///
void PowerOnToDefaultOrLastSource();
}
diff --git a/src/PepperDash.Essentials.Core/Room/IRoomEventSchedule.cs b/src/PepperDash.Essentials.Core/Room/IRoomEventSchedule.cs
index 0ddb61fc..a42ea505 100644
--- a/src/PepperDash.Essentials.Core/Room/IRoomEventSchedule.cs
+++ b/src/PepperDash.Essentials.Core/Room/IRoomEventSchedule.cs
@@ -9,10 +9,21 @@ namespace PepperDash.Essentials.Core
///
public interface IRoomEventSchedule
{
+ ///
+ /// Adds or updates a scheduled event
+ ///
+ ///
void AddOrUpdateScheduledEvent(ScheduledEventConfig eventConfig);
+ ///
+ /// Removes a scheduled event by its key
+ ///
+ ///
List GetScheduledEvents();
+ ///
+ /// Removes a scheduled event by its key
+ ///
event EventHandler ScheduledEventsChanged;
}
diff --git a/src/PepperDash.Essentials.Core/Room/Interfaces.cs b/src/PepperDash.Essentials.Core/Room/Interfaces.cs
index bffb80a3..e4d87c8d 100644
--- a/src/PepperDash.Essentials.Core/Room/Interfaces.cs
+++ b/src/PepperDash.Essentials.Core/Room/Interfaces.cs
@@ -11,6 +11,9 @@ namespace PepperDash.Essentials.Core
///
public interface IHasInCallFeedback
{
+ ///
+ /// Gets the InCallFeedback
+ ///
BoolFeedback InCallFeedback { get; }
}
@@ -19,6 +22,9 @@ namespace PepperDash.Essentials.Core
///
public interface IHasDefaultDisplay
{
+ ///
+ /// Gets the DefaultDisplay
+ ///
IRoutingSink DefaultDisplay { get; }
}
@@ -36,8 +42,19 @@ namespace PepperDash.Essentials.Core
///
public interface IRunRouteAction
{
+ ///
+ /// Runs a route action
+ ///
+ ///
+ ///
void RunRouteAction(string routeKey, string sourceListKey);
+ ///
+ /// Runs a route action with a success callback
+ ///
+ ///
+ ///
+ ///
void RunRouteAction(string routeKey, string sourceListKey, Action successCallback);
}
@@ -46,6 +63,12 @@ namespace PepperDash.Essentials.Core
///
public interface IRunDirectRouteAction
{
+ ///
+ /// Runs a direct route
+ ///
+ ///
+ ///
+ ///
void RunDirectRoute(string sourceKey, string destinationKey, eRoutingSignalType type = eRoutingSignalType.AudioVideo);
}
@@ -54,8 +77,14 @@ namespace PepperDash.Essentials.Core
///
public interface IHasMatrixRouting
{
+ ///
+ /// Gets the MatrixRoutingDeviceKey
+ ///
string MatrixRoutingDeviceKey { get; }
+ ///
+ /// Gets the EndpointKeys
+ ///
List EndpointKeys { get; }
}
@@ -64,6 +93,9 @@ namespace PepperDash.Essentials.Core
///
public interface IHasRoutingEndpoints
{
+ ///
+ /// Gets the EndpointKeys
+ ///
List EndpointKeys { get; }
}
@@ -72,10 +104,21 @@ namespace PepperDash.Essentials.Core
///
public interface IShutdownPromptTimer
{
+ ///
+ /// Gets the ShutdownPromptTimer
+ ///
SecondsCountdownTimer ShutdownPromptTimer { get; }
+ ///
+ /// Gets the ShutdownPromptSeconds
+ ///
+ /// number of seconds to set
void SetShutdownPromptSeconds(int seconds);
+ ///
+ /// Starts the shutdown process
+ ///
+ /// type of shutdown event
void StartShutdown(eShutdownType type);
}
@@ -84,14 +127,32 @@ namespace PepperDash.Essentials.Core
///
public interface ITechPassword
{
+ ///
+ /// Event fired when tech password validation result is available
+ ///
event EventHandler TechPasswordValidateResult;
+ ///
+ /// Event fired when tech password is changed
+ ///
event EventHandler TechPasswordChanged;
+ ///
+ /// Gets the TechPasswordLength
+ ///
int TechPasswordLength { get; }
+ ///
+ /// Validates the tech password
+ ///
+ /// The tech password to validate
void ValidateTechPassword(string password);
+ ///
+ /// Sets the tech password
+ ///
+ /// The current tech password
+ /// The new tech password to set
void SetTechPassword(string oldPassword, string newPassword);
}
@@ -105,6 +166,10 @@ namespace PepperDash.Essentials.Core
///
public bool IsValid { get; private set; }
+ ///
+ /// Constructor for TechPasswordEventArgs
+ ///
+ ///
public TechPasswordEventArgs(bool isValid)
{
IsValid = isValid;
@@ -116,6 +181,10 @@ namespace PepperDash.Essentials.Core
///
public interface IRunDefaultPresentRoute
{
+ ///
+ /// Runs the default present route
+ ///
+ ///
bool RunDefaultPresentRoute();
}
@@ -124,6 +193,10 @@ namespace PepperDash.Essentials.Core
///
public interface IRunDefaultCallRoute : IRunDefaultPresentRoute
{
+ ///
+ /// Runs the default call route
+ ///
+ ///
bool RunDefaultCallRoute();
}
@@ -132,24 +205,59 @@ namespace PepperDash.Essentials.Core
///
public interface IEnvironmentalControls
{
+ ///
+ /// Gets the EnvironmentalControlDevices
+ ///
List EnvironmentalControlDevices { get; }
+ ///
+ /// Gets a value indicating whether the room has environmental control devices
+ ///
bool HasEnvironmentalControlDevices { get; }
}
+ ///
+ /// Defines the contract for IRoomOccupancy
+ ///
public interface IRoomOccupancy : IKeyed
{
+ ///
+ /// Gets the RoomOccupancy
+ ///
IOccupancyStatusProvider RoomOccupancy { get; }
+
+ ///
+ /// Gets a value indicating whether the OccupancyStatusProviderIsRemote
+ ///
bool OccupancyStatusProviderIsRemote { get; }
+ ///
+ /// Sets the room occupancy
+ ///
+ ///
+ ///
void SetRoomOccupancy(IOccupancyStatusProvider statusProvider, int timeoutMinutes);
+ ///
+ /// Called when the room has been vacated for the timeout period
+ ///
+ ///
void RoomVacatedForTimeoutPeriod(object o);
+ ///
+ /// Starts the room vacancy timer
+ ///
+ /// vacancy mode
void StartRoomVacancyTimer(eVacancyMode mode);
+ ///
+ /// Gets the VacancyMode
+ ///
eVacancyMode VacancyMode { get; }
+ ///
+ /// Event fired when room occupancy is set
+ ///
event EventHandler RoomOccupancyIsSet;
}
@@ -158,6 +266,9 @@ namespace PepperDash.Essentials.Core
///
public interface IEmergency
{
+ ///
+ /// Gets the Emergency
+ ///
EssentialsRoomEmergencyBase Emergency { get; }
}
@@ -166,6 +277,9 @@ namespace PepperDash.Essentials.Core
///
public interface IMicrophonePrivacy
{
+ ///
+ /// Gets the MicrophonePrivacy
+ ///
Core.Privacy.MicrophonePrivacyController MicrophonePrivacy { get; }
}
@@ -174,6 +288,9 @@ namespace PepperDash.Essentials.Core
///
public interface IHasAccessoryDevices : IKeyName
{
+ ///
+ /// Gets the AccessoryDeviceKeys
+ ///
List AccessoryDeviceKeys { get; }
}
@@ -182,6 +299,9 @@ namespace PepperDash.Essentials.Core
///
public interface IHasCiscoNavigatorTouchpanel
{
+ ///
+ /// Gets the CiscoNavigatorTouchpanelKey
+ ///
string CiscoNavigatorTouchpanelKey { get; }
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Room/Room.cs b/src/PepperDash.Essentials.Core/Room/Room.cs
index 5ff03d26..d9c51c9d 100644
--- a/src/PepperDash.Essentials.Core/Room/Room.cs
+++ b/src/PepperDash.Essentials.Core/Room/Room.cs
@@ -12,33 +12,54 @@ namespace PepperDash.Essentials.Core
{
//***************************************************************************************************
+ ///
+ /// Abstract base class for Room
+ ///
public abstract class Room : Device, IHasFeedback
{
+ ///
+ /// Gets or sets the RoomIsOnFeedback
+ ///
public abstract BoolFeedback RoomIsOnFeedback { get; protected set; }
+
+ ///
+ /// Gets or sets the IsCoolingDownFeedback
+ ///
public abstract BoolFeedback IsCoolingDownFeedback { get; protected set; }
+
+ ///
+ /// Gets or sets the IsWarmingUpFeedback
+ ///
public abstract BoolFeedback IsWarmingUpFeedback { get; protected set; }
// In concrete classes, these should be computed from the relevant devices
- ///
- /// Gets or sets the CooldownTime
- ///
- ///
+ ///
+ /// Gets or sets the CooldownTime
+ ///
+ ///
public virtual uint CooldownTime { get { return 10000; } }
- ///
- /// Gets or sets the WarmupTime
- ///
- ///
+
+ ///
+ /// Gets or sets the WarmupTime
+ ///
+ ///
public virtual uint WarmupTime { get { return 5000; } }
- ///
- /// Gets or sets the Description
- ///
+ ///
+ /// Gets or sets the Description
+ ///
public string Description { get; set; }
- ///
- /// Gets or sets the HelpMessage
- ///
+
+ ///
+ /// Gets or sets the HelpMessage
+ ///
public string HelpMessage { get; set; }
+ ///
+ /// Room Constructor
+ ///
+ /// room key
+ /// room name
public Room(string key, string name)
: base(key, name)
{
@@ -59,6 +80,9 @@ namespace PepperDash.Essentials.Core
#region IDeviceWithOutputs Members
+ ///
+ /// Gets the Feedbacks
+ ///
public virtual FeedbackCollection Feedbacks
{
get
diff --git a/src/PepperDash.Essentials.Core/Room/iOccupancyStatusProvider.cs b/src/PepperDash.Essentials.Core/Room/iOccupancyStatusProvider.cs
index 3ac3c606..8ea858ee 100644
--- a/src/PepperDash.Essentials.Core/Room/iOccupancyStatusProvider.cs
+++ b/src/PepperDash.Essentials.Core/Room/iOccupancyStatusProvider.cs
@@ -13,6 +13,9 @@ namespace PepperDash.Essentials.Core
///
public interface IOccupancyStatusProvider
{
+ ///
+ /// Gets the RoomIsOccupiedFeedback
+ ///
BoolFeedback RoomIsOccupiedFeedback { get; }
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Routing/Extensions.cs b/src/PepperDash.Essentials.Core/Routing/Extensions.cs
index 5d09176f..3797f5e2 100644
--- a/src/PepperDash.Essentials.Core/Routing/Extensions.cs
+++ b/src/PepperDash.Essentials.Core/Routing/Extensions.cs
@@ -326,6 +326,8 @@ namespace PepperDash.Essentials.Core
/// This recursive function should not be called with AudioVideo
/// Just an informational counter
/// The RouteDescriptor being populated as the route is discovered
+ /// The RoutingOutputPort to use for the route
+ /// The specific source output port to use (optional)
/// true if source is hit
private static bool GetRouteToSource(this IRoutingInputs destination, IRoutingOutputs source,
RoutingOutputPort outputPortToUse, List alreadyCheckedDevices,
diff --git a/src/PepperDash.Essentials.Core/Routing/IInputSync.cs b/src/PepperDash.Essentials.Core/Routing/IInputSync.cs
index a4bc25ba..50f2b5fb 100644
--- a/src/PepperDash.Essentials.Core/Routing/IInputSync.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IInputSync.cs
@@ -12,8 +12,14 @@ namespace PepperDash.Essentials.Core.Routing
///
public interface IVideoSync : IKeyed
{
+ ///
+ /// Gets whether or not video sync is detected
+ ///
bool VideoSyncDetected { get; }
+ ///
+ /// Event raised when video sync changes
+ ///
event EventHandler VideoSyncChanged;
}
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs
index a262e3df..d12e704e 100644
--- a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs
@@ -7,9 +7,22 @@ namespace PepperDash.Essentials.Core.Routing
///
public interface IMatrixRouting
{
+ ///
+ /// Gets the input slots
+ ///
Dictionary InputSlots { get; }
+
+ ///
+ /// Gets the output slots
+ ///
Dictionary OutputSlots { get; }
+ ///
+ /// Routes the specified input slot to the specified output slot for the specified signal type
+ ///
+ /// key of the input slot
+ /// key of the output slot
+ /// signal type
void Route(string inputSlotKey, string outputSlotKey, eRoutingSignalType type);
}
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRmcRouting.cs b/src/PepperDash.Essentials.Core/Routing/IRmcRouting.cs
index ec5fe2c4..f2837350 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRmcRouting.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRmcRouting.cs
@@ -5,6 +5,9 @@
///
public interface IRmcRouting : IRoutingNumeric
{
+ ///
+ /// Feedback for the current Audio/Video source as a number
+ ///
IntFeedback AudioVideoSourceNumericFeedback { get; }
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Routing/IRouting.cs b/src/PepperDash.Essentials.Core/Routing/IRouting.cs
index e3231858..64bcd7a5 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRouting.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRouting.cs
@@ -11,6 +11,12 @@ namespace PepperDash.Essentials.Core
///
public interface IRouting : IRoutingInputsOutputs
{
+ ///
+ /// Executes a switch on the device
+ ///
+ /// input selector
+ /// output selector
+ /// type of signal
void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType signalType);
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingFeedback.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingFeedback.cs
index a76f571b..253ab8ee 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingFeedback.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingFeedback.cs
@@ -10,6 +10,9 @@ namespace PepperDash.Essentials.Core
///
public interface IRoutingFeedback : IKeyName
{
+ ///
+ /// Event raised when a numeric switch changes
+ ///
event EventHandler NumericSwitchChange;
//void OnSwitchChange(RoutingNumericEventArgs e);
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingHasVideoInputSyncFeedbacks.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingHasVideoInputSyncFeedbacks.cs
index 9d344ce9..a2b4c54e 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingHasVideoInputSyncFeedbacks.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingHasVideoInputSyncFeedbacks.cs
@@ -17,6 +17,9 @@ namespace PepperDash.Essentials.Core
///
public interface IRoutingHasVideoInputSyncFeedbacks
{
+ ///
+ /// Video Input Sync Feedbacks
+ ///
FeedbackCollection VideoInputSyncFeedbacks { get; }
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs
index 94eddd26..f620f8bf 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs
@@ -5,6 +5,9 @@
///
public interface IRoutingInputSlot: IRoutingSlot, IOnline, IVideoSync
{
+ ///
+ /// Gets the Tx device key
+ ///
string TxDeviceKey { get; }
}
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingInputs.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingInputs.cs
index 102cf5f9..9543bb54 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingInputs.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingInputs.cs
@@ -8,6 +8,9 @@ namespace PepperDash.Essentials.Core
///
public interface IRoutingInputs : IKeyed
{
+ ///
+ /// Collection of Input Ports
+ ///
RoutingPortCollection InputPorts { get; }
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingNumeric.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingNumeric.cs
index ff7e6cd7..cd91daa0 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingNumeric.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingNumeric.cs
@@ -5,6 +5,12 @@
///
public interface IRoutingNumeric : IRouting
{
+ ///
+ /// Executes a numeric switch on the device
+ ///
+ /// input selector
+ /// output selector
+ /// type of signal
void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type);
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs
index 0d590684..266e0724 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs
@@ -8,10 +8,19 @@ namespace PepperDash.Essentials.Core.Routing
///
public interface IRoutingOutputSlot : IRoutingSlot
{
+ ///
+ /// Event raised when output slot changes
+ ///
event EventHandler OutputSlotChanged;
+ ///
+ /// Gets the Rx device key
+ ///
string RxDeviceKey { get; }
+ ///
+ /// Gets the current routes
+ ///
Dictionary CurrentRoutes { get; }
}
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputs.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputs.cs
index dbfc2916..c26e7b70 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputs.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputs.cs
@@ -9,6 +9,9 @@ namespace PepperDash.Essentials.Core
///
public interface IRoutingOutputs : IKeyed
{
+ ///
+ /// Collection of Output Ports
+ ///
RoutingPortCollection OutputPorts { get; }
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingSinkWithSwitching.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingSinkWithSwitching.cs
index 773e036e..5c202914 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingSinkWithSwitching.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingSinkWithSwitching.cs
@@ -12,6 +12,10 @@ namespace PepperDash.Essentials.Core
///
public interface IRoutingSinkWithSwitching : IRoutingSink
{
+ ///
+ /// Executes a switch on the device
+ ///
+ /// input selector
void ExecuteSwitch(object inputSelector);
}
@@ -20,6 +24,9 @@ namespace PepperDash.Essentials.Core
///
public interface IRoutingSinkWithSwitchingWithInputPort:IRoutingSinkWithSwitching, IRoutingSinkWithInputPort
{
+ ///
+ /// Event raised when the input changes
+ ///
event InputChangedEventHandler InputChanged;
}
diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs
index b6922862..2e8c544f 100644
--- a/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs
+++ b/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs
@@ -12,8 +12,14 @@ namespace PepperDash.Essentials.Core.Routing
///
public interface IRoutingSlot:IKeyName
{
+ ///
+ /// Gets the slot number
+ ///
int SlotNumber { get; }
+ ///
+ /// Gets the supported signal types
+ ///
eRoutingSignalType SupportedSignalTypes { get; }
}
}
diff --git a/src/PepperDash.Essentials.Core/Routing/RouteDescriptorCollection.cs b/src/PepperDash.Essentials.Core/Routing/RouteDescriptorCollection.cs
index f389f719..483ea22a 100644
--- a/src/PepperDash.Essentials.Core/Routing/RouteDescriptorCollection.cs
+++ b/src/PepperDash.Essentials.Core/Routing/RouteDescriptorCollection.cs
@@ -11,6 +11,9 @@ namespace PepperDash.Essentials.Core
///
public class RouteDescriptorCollection
{
+ ///
+ /// DefaultCollection static property
+ ///
public static RouteDescriptorCollection DefaultCollection
{
get
@@ -57,6 +60,12 @@ namespace PepperDash.Essentials.Core
return RouteDescriptors.FirstOrDefault(rd => rd.Destination == destination);
}
+ ///
+ /// Gets the RouteDescriptor for a destination and input port key. Returns null if no matching RouteDescriptor exists.
+ ///
+ ///
+ ///
+ ///
public RouteDescriptor GetRouteDescriptorForDestinationAndInputPort(IRoutingInputs destination, string inputPortKey)
{
Debug.LogMessage(LogEventLevel.Information, "Getting route descriptor for '{destination}':'{inputPortKey}'", destination?.Key ?? null, string.IsNullOrEmpty(inputPortKey) ? "auto" : inputPortKey);
diff --git a/src/PepperDash.Essentials.Core/Routing/RoutingInputPort.cs b/src/PepperDash.Essentials.Core/Routing/RoutingInputPort.cs
index 08876121..4e50f689 100644
--- a/src/PepperDash.Essentials.Core/Routing/RoutingInputPort.cs
+++ b/src/PepperDash.Essentials.Core/Routing/RoutingInputPort.cs
@@ -21,6 +21,9 @@ namespace PepperDash.Essentials.Core
/// An object used to refer to this port in the IRouting device's ExecuteSwitch method.
/// May be string, number, whatever
/// The IRoutingInputs object this lives on
+ /// key of the port
+ /// type of the routing signal
+ /// connection type of the port
public RoutingInputPort(string key, eRoutingSignalType type, eRoutingPortConnectionType connType,
object selector, IRoutingInputs parent)
: this (key, type, connType, selector, parent, false)
@@ -32,6 +35,12 @@ namespace PepperDash.Essentials.Core
/// the ports that link a DM card to a DM matrix bus
///
/// true for internal ports
+ /// key of the port
+ /// type of the routing signal
+ /// connection type of the port
+ /// An object used to refer to this port in the IRouting device's ExecuteSwitch method.
+ /// May be string, number, whatever
+ /// The IRoutingInputs object this lives on
public RoutingInputPort(string key, eRoutingSignalType type, eRoutingPortConnectionType connType,
object selector, IRoutingInputs parent, bool isInternal)
: base(key, type, connType, selector, isInternal)
diff --git a/src/PepperDash.Essentials.Core/Routing/eRoutingPortConnectionType.cs b/src/PepperDash.Essentials.Core/Routing/eRoutingPortConnectionType.cs
index 41e8c81b..9245dd48 100644
--- a/src/PepperDash.Essentials.Core/Routing/eRoutingPortConnectionType.cs
+++ b/src/PepperDash.Essentials.Core/Routing/eRoutingPortConnectionType.cs
@@ -5,7 +5,99 @@
///
public enum eRoutingPortConnectionType
{
- None, BackplaneOnly, DisplayPort, Dvi, Hdmi, Rgb, Vga, LineAudio, DigitalAudio, Sdi,
- Composite, Component, DmCat, DmMmFiber, DmSmFiber, Speaker, Streaming, UsbC, HdBaseT
+ ///
+ /// No connection type
+ ///
+ None,
+
+ ///
+ /// Backplane only connection
+ ///
+ BackplaneOnly,
+
+ ///
+ /// Connection via cable
+ ///
+ DisplayPort,
+
+ ///
+ /// DVI connection
+ ///
+ Dvi,
+
+ ///
+ /// HDMI connection
+ ///
+ Hdmi,
+
+ ///
+ /// RGB connection
+ ///
+ Rgb,
+
+ ///
+ /// VGA connection
+ ///
+ Vga,
+
+ ///
+ /// Line audio connection
+ ///
+ LineAudio,
+
+ ///
+ /// Digital audio connection
+ ///
+ DigitalAudio,
+
+ ///
+ /// SDI connection
+ ///
+ Sdi,
+
+ ///
+ /// Composite connection
+ ///
+ Composite,
+
+ ///
+ /// Component connection
+ ///
+ Component,
+
+ ///
+ /// DM CAT connection
+ ///
+ DmCat,
+
+ ///
+ /// DM MM Fiber connection
+ ///
+ DmMmFiber,
+
+ ///
+ /// DM SM Fiber connection
+ ///
+ DmSmFiber,
+
+ ///
+ /// Speaker connection
+ ///
+ Speaker,
+
+ ///
+ /// Microphone connection
+ ///
+ Streaming,
+
+ ///
+ /// USB-C connection
+ ///
+ UsbC,
+
+ ///
+ /// HDBaseT connection
+ ///
+ HdBaseT
}
}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Routing/eRoutingSignalType.cs b/src/PepperDash.Essentials.Core/Routing/eRoutingSignalType.cs
index bab815fc..9fce9c5b 100644
--- a/src/PepperDash.Essentials.Core/Routing/eRoutingSignalType.cs
+++ b/src/PepperDash.Essentials.Core/Routing/eRoutingSignalType.cs
@@ -3,17 +3,40 @@
namespace PepperDash.Essentials.Core
{
- [Flags]
///
/// Enumeration of eRoutingSignalType values
///
+ [Flags]
public enum eRoutingSignalType
{
+ ///
+ /// Audio signal type
+ ///
Audio = 1,
+
+ ///
+ /// Video signal type
+ ///
Video = 2,
+
+ ///
+ /// AudioVideo signal type
+ ///
AudioVideo = Audio | Video,
+
+ ///
+ /// Control signal type
+ ///
UsbOutput = 8,
+
+ ///
+ /// Control signal type
+ ///
UsbInput = 16,
+
+ ///
+ /// Secondary audio signal type
+ ///
SecondaryAudio = 32
}
}
\ No newline at end of file