From ca77506108cfc98922d0189e3dcb549b7ba82d1f Mon Sep 17 00:00:00 2001 From: Erik Meyer Date: Wed, 28 Jan 2026 15:42:44 -0500 Subject: [PATCH] wip: update XML comments --- .../RoomOnToDefaultSourceWhenOccupied.cs | 43 ++++-- .../Room/Combining/RoomCombinationScenario.cs | 17 ++- .../EsentialsRoomEmergencyContactClosure.cs | 15 +++ .../Room/EssentialsRoomBase.cs | 124 +++++++++++++++++- .../Room/IEssentialsRoom.cs | 61 +++++++++ .../Room/IRoomEventSchedule.cs | 11 ++ .../Room/Interfaces.cs | 120 +++++++++++++++++ src/PepperDash.Essentials.Core/Room/Room.cs | 52 ++++++-- .../Room/iOccupancyStatusProvider.cs | 3 + .../Routing/Extensions.cs | 2 + .../Routing/IInputSync.cs | 6 + .../Routing/IMatrixRouting.cs | 13 ++ .../Routing/IRmcRouting.cs | 3 + .../Routing/IRouting.cs | 6 + .../Routing/IRoutingFeedback.cs | 3 + .../IRoutingHasVideoInputSyncFeedbacks.cs | 3 + .../Routing/IRoutingInputSlot.cs | 3 + .../Routing/IRoutingInputs.cs | 3 + .../Routing/IRoutingNumeric.cs | 6 + .../Routing/IRoutingOutputSlot.cs | 9 ++ .../Routing/IRoutingOutputs.cs | 3 + .../Routing/IRoutingSinkWithSwitching.cs | 7 + .../Routing/IRoutingSlot.cs | 6 + .../Routing/RouteDescriptorCollection.cs | 9 ++ .../Routing/RoutingInputPort.cs | 9 ++ .../Routing/eRoutingPortConnectionType.cs | 96 +++++++++++++- .../Routing/eRoutingSignalType.cs | 25 +++- 27 files changed, 625 insertions(+), 33 deletions(-) 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