docs: complete XML documentation for all projects with inheritdoc tags

Co-authored-by: andrew-welker <1765622+andrew-welker@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-07-22 15:53:01 +00:00
parent 260677a37f
commit 7987eb8f9b
485 changed files with 8099 additions and 2490 deletions

View File

@@ -33,6 +33,9 @@ namespace PepperDash.Essentials.Core
const string FeatureEnableEventName = "EnableRoomOnToDefaultSourceWhenOccupied";
/// <summary>
/// Gets or sets the FeatureDisabledTime
/// </summary>
public DateTime FeatureDisabledTime { get; private set; }
ScheduledEvent FeatureDisableEvent;
@@ -41,6 +44,9 @@ namespace PepperDash.Essentials.Core
ScheduledEventGroup FeatureEventGroup;
/// <summary>
/// Gets or sets the Room
/// </summary>
public IRoomOccupancy Room { get; private set; }
private Fusion.EssentialsHuddleSpaceFusionSystemControllerBase FusionRoom;
@@ -75,6 +81,10 @@ namespace PepperDash.Essentials.Core
});
}
/// <summary>
/// CustomActivate method
/// </summary>
/// <inheritdoc />
public override bool CustomActivate()
{
SetUpDevice();
@@ -505,42 +515,81 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Represents a RoomOnToDefaultSourceWhenOccupiedConfig
/// </summary>
public class RoomOnToDefaultSourceWhenOccupiedConfig
{
[JsonProperty("roomKey")]
/// <summary>
/// Gets or sets the RoomKey
/// </summary>
public string RoomKey { get; set; }
[JsonProperty("enableRoomOnWhenOccupied")]
/// <summary>
/// Gets or sets the EnableRoomOnWhenOccupied
/// </summary>
public bool EnableRoomOnWhenOccupied { get; set; }
[JsonProperty("occupancyStartTime")]
/// <summary>
/// Gets or sets the OccupancyStartTime
/// </summary>
public string OccupancyStartTime { get; set; }
[JsonProperty("occupancyEndTime")]
/// <summary>
/// Gets or sets the OccupancyEndTime
/// </summary>
public string OccupancyEndTime { get; set; }
[JsonProperty("enableSunday")]
/// <summary>
/// Gets or sets the EnableSunday
/// </summary>
public bool EnableSunday { get; set; }
[JsonProperty("enableMonday")]
/// <summary>
/// Gets or sets the EnableMonday
/// </summary>
public bool EnableMonday { get; set; }
[JsonProperty("enableTuesday")]
/// <summary>
/// Gets or sets the EnableTuesday
/// </summary>
public bool EnableTuesday { get; set; }
[JsonProperty("enableWednesday")]
/// <summary>
/// Gets or sets the EnableWednesday
/// </summary>
public bool EnableWednesday { get; set; }
[JsonProperty("enableThursday")]
/// <summary>
/// Gets or sets the EnableThursday
/// </summary>
public bool EnableThursday { get; set; }
[JsonProperty("enableFriday")]
/// <summary>
/// Gets or sets the EnableFriday
/// </summary>
public bool EnableFriday { get; set; }
[JsonProperty("enableSaturday")]
/// <summary>
/// Gets or sets the EnableSaturday
/// </summary>
public bool EnableSaturday { get; set; }
}
/// <summary>
/// Represents a RoomOnToDefaultSourceWhenOccupiedFactory
/// </summary>
public class RoomOnToDefaultSourceWhenOccupiedFactory : EssentialsDeviceFactory<RoomOnToDefaultSourceWhenOccupied>
{
public RoomOnToDefaultSourceWhenOccupiedFactory()
@@ -548,6 +597,10 @@ namespace PepperDash.Essentials.Core
TypeNames = new List<string>() { "roomonwhenoccupancydetectedfeature" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new RoomOnToDefaultSourceWhenOccupied Device");

View File

@@ -10,8 +10,8 @@ using System.Threading.Tasks;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Represents a device that manages room combinations by controlling partitions and scenarios.
/// <summary>
/// Represents a device that manages room combinations by controlling partitions and scenarios.
/// </summary>
/// <remarks>The <see cref="EssentialsRoomCombiner"/> allows for dynamic configuration of room
/// combinations based on partition states and predefined scenarios. It supports both automatic and manual modes
@@ -25,8 +25,8 @@ namespace PepperDash.Essentials.Core
private List<IEssentialsRoom> _rooms;
/// <summary>
/// Gets a list of rooms represented as key-name pairs.
/// <summary>
/// Gets a list of rooms represented as key-name pairs.
/// </summary>
public List<IKeyName> Rooms
{
@@ -38,8 +38,8 @@ namespace PepperDash.Essentials.Core
private bool _isInAutoMode;
/// <summary>
/// Gets or sets a value indicating whether the system is operating in automatic mode.
/// <summary>
/// Gets or sets a value indicating whether the system is operating in automatic mode.
/// </summary>
/// <remarks>Changing this property triggers an update event via
/// <c>IsInAutoModeFeedback.FireUpdate()</c>. Ensure that any event listeners are properly configured to handle
@@ -62,8 +62,8 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Gets a value indicating whether automatic mode is disabled.
/// <summary>
/// Gets a value indicating whether automatic mode is disabled.
/// </summary>
public bool DisableAutoMode
{
@@ -79,18 +79,18 @@ namespace PepperDash.Essentials.Core
private Mutex _scenarioChange = new Mutex();
/// <summary>
/// Initializes a new instance of the <see cref="EssentialsRoomCombiner"/> class, which manages room combination
/// scenarios and partition states.
/// </summary>
/// <remarks>The <see cref="EssentialsRoomCombiner"/> class is designed to handle dynamic room
/// combination scenarios based on partition states. It supports both automatic and manual modes for managing
/// room combinations. By default, the instance starts in automatic mode unless the <paramref name="props"/>
/// specifies otherwise. After activation, the room combiner initializes partition state providers and sets up
/// the initial room configuration. Additionally, it subscribes to the <see
/// cref="DeviceManager.AllDevicesInitialized"/> event to ensure proper initialization of dependent devices
/// before determining or setting the room combination scenario.</remarks>
/// <param name="key">The unique identifier for the room combiner instance.</param>
/// <summary>
/// Initializes a new instance of the <see cref="EssentialsRoomCombiner"/> class, which manages room combination
/// scenarios and partition states.
/// </summary>
/// <remarks>The <see cref="EssentialsRoomCombiner"/> class is designed to handle dynamic room
/// combination scenarios based on partition states. It supports both automatic and manual modes for managing
/// room combinations. By default, the instance starts in automatic mode unless the <paramref name="props"/>
/// specifies otherwise. After activation, the room combiner initializes partition state providers and sets up
/// the initial room configuration. Additionally, it subscribes to the <see
/// cref="DeviceManager.AllDevicesInitialized"/> event to ensure proper initialization of dependent devices
/// before determining or setting the room combination scenario.</remarks>
/// <param name="key">The unique identifier for the room combiner instance.</param>
/// <param name="props">The configuration properties for the room combiner, including default settings and debounce times.</param>
public EssentialsRoomCombiner(string key, EssentialsRoomCombinerPropertiesConfig props)
: base(key)
@@ -286,15 +286,15 @@ namespace PepperDash.Essentials.Core
#region IEssentialsRoomCombiner Members
/// <summary>
/// Occurs when the room combination scenario changes.
/// <summary>
/// Occurs when the room combination scenario changes.
/// </summary>
/// <remarks>This event is triggered whenever the configuration or state of the room combination
/// changes. Subscribers can use this event to update their logic or UI based on the new scenario.</remarks>
public event EventHandler<EventArgs> RoomCombinationScenarioChanged;
/// <summary>
/// Gets the current room combination scenario.
/// <summary>
/// Gets the current room combination scenario.
/// </summary>
public IRoomCombinationScenario CurrentScenario
{
@@ -304,24 +304,24 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Gets the feedback indicating whether the system is currently in auto mode.
/// <summary>
/// Gets or sets the IsInAutoModeFeedback
/// </summary>
public BoolFeedback IsInAutoModeFeedback { get; private set; }
/// <summary>
/// Enables auto mode for the room combiner and its partitions, allowing automatic room combination scenarios to
/// be determined.
/// <summary>
/// Enables auto mode for the room combiner and its partitions, allowing automatic room combination scenarios to
/// be determined.
/// </summary>
/// <remarks>Auto mode allows the room combiner to automatically adjust its configuration based on
/// the state of its partitions. If auto mode is disabled in the configuration, this method logs a warning and
/// does not enable auto mode.</remarks>
public void SetAutoMode()
{
if(_propertiesConfig.DisableAutoMode)
{
this.LogWarning("Auto mode is disabled for this room combiner. Cannot set to auto mode.");
return;
if(_propertiesConfig.DisableAutoMode)
{
this.LogWarning("Auto mode is disabled for this room combiner. Cannot set to auto mode.");
return;
}
IsInAutoMode = true;
@@ -333,12 +333,15 @@ namespace PepperDash.Essentials.Core
DetermineRoomCombinationScenario();
}
/// <summary>
/// Switches the system to manual mode, disabling automatic operations.
/// <summary>
/// Switches the system to manual mode, disabling automatic operations.
/// </summary>
/// <remarks>This method sets the system to manual mode by updating the mode state and propagates
/// the change to all partitions. Once in manual mode, automatic operations are disabled for the system and its
/// partitions.</remarks>
/// <summary>
/// SetManualMode method
/// </summary>
public void SetManualMode()
{
IsInAutoMode = false;
@@ -349,11 +352,14 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Toggles the current mode between automatic and manual.
/// <summary>
/// Toggles the current mode between automatic and manual.
/// </summary>
/// <remarks>If the current mode is automatic, this method switches to manual mode. If the
/// current mode is manual, it switches to automatic mode.</remarks>
/// <summary>
/// ToggleMode method
/// </summary>
public void ToggleMode()
{
if (IsInAutoMode)
@@ -366,21 +372,21 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Gets the collection of room combination scenarios.
/// <summary>
/// Gets or sets the RoomCombinationScenarios
/// </summary>
public List<IRoomCombinationScenario> RoomCombinationScenarios { get; private set; }
/// <summary>
/// Gets the collection of partition controllers managed by this instance.
/// <summary>
/// Gets the collection of partition controllers managed by this instance.
/// </summary>
public List<IPartitionController> Partitions { get; private set; }
/// <summary>
/// Toggles the state of the partition identified by the specified partition key.
/// </summary>
/// <remarks>If no partition with the specified key exists, the method performs no
/// action.</remarks>
/// <summary>
/// Toggles the state of the partition identified by the specified partition key.
/// </summary>
/// <remarks>If no partition with the specified key exists, the method performs no
/// action.</remarks>
/// <param name="partitionKey">The key of the partition whose state is to be toggled. This value cannot be null or empty.</param>
public void TogglePartitionState(string partitionKey)
{
@@ -392,16 +398,16 @@ namespace PepperDash.Essentials.Core
}
}
/// <summary>
/// Sets the room combination scenario based on the specified scenario key.
/// </summary>
/// <remarks>This method manually adjusts the partition states according to the specified
/// scenario. If the application is in auto mode, the operation will not proceed, and a log message will be
/// generated indicating that the mode must be set to manual first. If the specified scenario key does not
/// match any existing scenario, a debug log message will be generated. For each partition state in the
/// scenario, the corresponding partition will be updated to either "Present" or "Not Present" based on the
/// scenario's configuration. If a partition key in the scenario cannot be found, a debug log message will be
/// generated.</remarks>
/// <summary>
/// Sets the room combination scenario based on the specified scenario key.
/// </summary>
/// <remarks>This method manually adjusts the partition states according to the specified
/// scenario. If the application is in auto mode, the operation will not proceed, and a log message will be
/// generated indicating that the mode must be set to manual first. If the specified scenario key does not
/// match any existing scenario, a debug log message will be generated. For each partition state in the
/// scenario, the corresponding partition will be updated to either "Present" or "Not Present" based on the
/// scenario's configuration. If a partition key in the scenario cannot be found, a debug log message will be
/// generated.</remarks>
/// <param name="scenarioKey">The key identifying the room combination scenario to apply. This must match the key of an existing scenario.</param>
public void SetRoomCombinationScenario(string scenarioKey)
{
@@ -451,16 +457,19 @@ namespace PepperDash.Essentials.Core
#endregion
}
/// <summary>
/// Provides a factory for creating instances of <see cref="EssentialsRoomCombiner"/> devices.
/// <summary>
/// Provides a factory for creating instances of <see cref="EssentialsRoomCombiner"/> devices.
/// </summary>
/// <remarks>This factory is responsible for constructing <see cref="EssentialsRoomCombiner"/> devices
/// based on the provided configuration. It supports the type name "essentialsroomcombiner" for device
/// creation.</remarks>
/// <summary>
/// Represents a EssentialsRoomCombinerFactory
/// </summary>
public class EssentialsRoomCombinerFactory : EssentialsDeviceFactory<EssentialsRoomCombiner>
{
/// <summary>
/// Initializes a new instance of the <see cref="EssentialsRoomCombinerFactory"/> class.
/// <summary>
/// Initializes a new instance of the <see cref="EssentialsRoomCombinerFactory"/> class.
/// </summary>
/// <remarks>This factory is used to create instances of room combiners with the specified type
/// names. By default, the factory includes the type name "essentialsroomcombiner".</remarks>
@@ -469,13 +478,13 @@ namespace PepperDash.Essentials.Core
TypeNames = new List<string> { "essentialsroomcombiner" };
}
/// <summary>
/// Creates and initializes a new instance of the <see cref="EssentialsRoomCombiner"/> device.
/// </summary>
/// <remarks>This method uses the provided device configuration to extract the properties and
/// create an <see cref="EssentialsRoomCombiner"/> device. Ensure that the configuration contains valid
/// properties for the device to be created successfully.</remarks>
/// <param name="dc">The device configuration containing the key and properties required to build the device.</param>
/// <summary>
/// Creates and initializes a new instance of the <see cref="EssentialsRoomCombiner"/> device.
/// </summary>
/// <remarks>This method uses the provided device configuration to extract the properties and
/// create an <see cref="EssentialsRoomCombiner"/> device. Ensure that the configuration contains valid
/// properties for the device to be created successfully.</remarks>
/// <param name="dc">The device configuration containing the key and properties required to build the device.</param>
/// <returns>A new instance of <see cref="EssentialsRoomCombiner"/> initialized with the specified configuration.</returns>
public override EssentialsDevice BuildDevice(PepperDash.Essentials.Core.Config.DeviceConfig dc)
{

View File

@@ -28,19 +28,19 @@ namespace PepperDash.Essentials.Core
[JsonIgnore]
BoolFeedback IsInAutoModeFeedback {get;}
/// <summary>
/// Gets a value indicating whether the automatic mode is disabled.
/// <summary>
/// Gets a value indicating whether the automatic mode is disabled.
/// </summary>
[JsonProperty("disableAutoMode")]
bool DisableAutoMode { get; }
/// <summary>
/// Gets a value indicating whether the system is operating in automatic mode.
/// <summary>
/// Gets a value indicating whether the system is operating in automatic mode.
/// </summary>
[JsonProperty("isInAutoMode")]
bool IsInAutoMode { get; }
/// <summary>
/// Gets the collection of rooms associated with the current object.
/// <summary>
/// Gets the collection of rooms associated with the current object.
/// </summary>
[JsonProperty("rooms")]
List<IKeyName> Rooms { get; }
@@ -85,13 +85,16 @@ namespace PepperDash.Essentials.Core
void SetRoomCombinationScenario(string scenarioKey);
}
/// <summary>
/// Represents a scenario for combining rooms, including activation, deactivation, and associated state.
/// <summary>
/// Represents a scenario for combining rooms, including activation, deactivation, and associated state.
/// </summary>
/// <remarks>This interface defines the behavior for managing room combination scenarios, including
/// activation and deactivation, tracking the active state, and managing related partition states and UI mappings.
/// Implementations of this interface are expected to handle the logic for room combinations based on the provided
/// partition states and UI mappings.</remarks>
/// <summary>
/// Defines the contract for IRoomCombinationScenario
/// </summary>
public interface IRoomCombinationScenario : IKeyName
{
/// <summary>
@@ -100,8 +103,8 @@ namespace PepperDash.Essentials.Core
[JsonIgnore]
BoolFeedback IsActiveFeedback { get; }
/// <summary>
/// Gets a value indicating whether the entity is active.
/// <summary>
/// Gets a value indicating whether the entity is active.
/// </summary>
[JsonProperty("isActive")]
bool IsActive { get; }

View File

@@ -21,6 +21,9 @@ namespace PepperDash.Essentials.Core
public string Name { get; set; }
[JsonProperty("partitionStates")]
/// <summary>
/// Gets or sets the PartitionStates
/// </summary>
public List<PartitionState> PartitionStates { get; private set; }
[JsonProperty("uiMap")]
@@ -45,6 +48,9 @@ namespace PepperDash.Essentials.Core
}
[JsonIgnore]
/// <summary>
/// Gets or sets the IsActiveFeedback
/// </summary>
public BoolFeedback IsActiveFeedback { get; private set; }
private List<DeviceActionWrapper> activationActions;

View File

@@ -1,6 +1,9 @@
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
/// Represents a EssentialsDualDisplayRoomPropertiesConfig
/// </summary>
public class EssentialsDualDisplayRoomPropertiesConfig : EssentialsNDisplayRoomPropertiesConfig
{

View File

@@ -3,7 +3,7 @@
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
///
/// Represents a EssentialsHuddleRoomPropertiesConfig
/// </summary>
public class EssentialsHuddleRoomPropertiesConfig : EssentialsRoomPropertiesConfig
{

View File

@@ -4,9 +4,15 @@ 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
/// </summary>
public string DefaultDisplayKey { get; set; }
}

View File

@@ -25,9 +25,18 @@ namespace PepperDash.Essentials.Room.Config
}
/// <summary>
/// Represents a DisplayItem
/// </summary>
public class DisplayItem : IKeyName
{
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; set; }
/// <summary>
/// Gets or sets the Name
/// </summary>
public string Name { get; set; }
}

View File

@@ -3,11 +3,17 @@
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
///
/// Represents a EssentialsPresentationRoomPropertiesConfig
/// </summary>
public class EssentialsPresentationRoomPropertiesConfig : EssentialsRoomPropertiesConfig
{
/// <summary>
/// Gets or sets the DefaultAudioBehavior
/// </summary>
public string DefaultAudioBehavior { get; set; }
/// <summary>
/// Gets or sets the DefaultAudioKey
/// </summary>
public string DefaultAudioKey { get; set; }
public string DefaultVideoBehavior { get; set; }
public List<string> DisplayKeys { get; set; }

View File

@@ -9,11 +9,13 @@ using Serilog.Events;
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
/// Represents a EssentialsRoomConfigHelper
/// </summary>
public class EssentialsRoomConfigHelper
{
/// <summary>
/// Gets and operating, standalone emergegncy object that can be plugged into a room.
/// Returns null if there is no emergency defined
/// GetEmergency method
/// </summary>
public static EssentialsRoomEmergencyBase GetEmergency(EssentialsRoomPropertiesConfig props, IEssentialsRoom room)
{
@@ -35,6 +37,9 @@ namespace PepperDash.Essentials.Room.Config
/// <param name="props"></param>
/// <param name="room"></param>
/// <returns></returns>
/// <summary>
/// GetMicrophonePrivacy method
/// </summary>
public static MicrophonePrivacyController GetMicrophonePrivacy(
EssentialsRoomPropertiesConfig props, IPrivacy room)
{
@@ -95,9 +100,9 @@ namespace PepperDash.Essentials.Room.Config
}
/// <summary>
///
/// </summary>
/// <summary>
/// Represents a EssentialsRoomPropertiesConfig
/// </summary>
public class EssentialsRoomPropertiesConfig
{
[JsonProperty("addresses")]
@@ -110,9 +115,15 @@ namespace PepperDash.Essentials.Room.Config
public EssentialsRoomEmergencyConfig Emergency { get; set; }
[JsonProperty("help")]
/// <summary>
/// Gets or sets the Help
/// </summary>
public EssentialsHelpPropertiesConfig Help { get; set; }
[JsonProperty("helpMessage")]
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
public string HelpMessage { get; set; }
/// <summary>
@@ -134,48 +145,90 @@ namespace PepperDash.Essentials.Room.Config
}
[JsonProperty("environment")]
/// <summary>
/// Gets or sets the Environment
/// </summary>
public EssentialsEnvironmentPropertiesConfig Environment { get; set; }
[JsonProperty("logo")]
/// <summary>
/// Gets or sets the LogoLight
/// </summary>
public EssentialsLogoPropertiesConfig LogoLight { get; set; }
[JsonProperty("logoDark")]
/// <summary>
/// Gets or sets the LogoDark
/// </summary>
public EssentialsLogoPropertiesConfig LogoDark { get; set; }
[JsonProperty("microphonePrivacy")]
/// <summary>
/// Gets or sets the MicrophonePrivacy
/// </summary>
public EssentialsRoomMicrophonePrivacyConfig MicrophonePrivacy { get; set; }
[JsonProperty("occupancy")]
/// <summary>
/// Gets or sets the Occupancy
/// </summary>
public EssentialsRoomOccSensorConfig Occupancy { get; set; }
[JsonProperty("oneButtonMeeting")]
/// <summary>
/// Gets or sets the OneButtonMeeting
/// </summary>
public EssentialsOneButtonMeetingPropertiesConfig OneButtonMeeting { get; set; }
[JsonProperty("shutdownVacancySeconds")]
/// <summary>
/// Gets or sets the ShutdownVacancySeconds
/// </summary>
public int ShutdownVacancySeconds { get; set; }
[JsonProperty("shutdownPromptSeconds")]
/// <summary>
/// Gets or sets the ShutdownPromptSeconds
/// </summary>
public int ShutdownPromptSeconds { get; set; }
[JsonProperty("tech")]
/// <summary>
/// Gets or sets the Tech
/// </summary>
public EssentialsRoomTechConfig Tech { get; set; }
[JsonProperty("volumes")]
/// <summary>
/// Gets or sets the Volumes
/// </summary>
public EssentialsRoomVolumesConfig Volumes { get; set; }
[JsonProperty("fusion")]
/// <summary>
/// Gets or sets the Fusion
/// </summary>
public EssentialsRoomFusionConfig Fusion { get; set; }
[JsonProperty("essentialsRoomUiBehaviorConfig", NullValueHandling=NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the UiBehavior
/// </summary>
public EssentialsRoomUiBehaviorConfig UiBehavior { get; set; }
[JsonProperty("zeroVolumeWhenSwtichingVolumeDevices")]
/// <summary>
/// Gets or sets the ZeroVolumeWhenSwtichingVolumeDevices
/// </summary>
public bool ZeroVolumeWhenSwtichingVolumeDevices { get; set; }
/// <summary>
/// Indicates if this room represents a combination of other rooms
/// </summary>
[JsonProperty("isRoomCombinationScenario")]
/// <summary>
/// Gets or sets the IsRoomCombinationScenario
/// </summary>
public bool IsRoomCombinationScenario { get; set; }
public EssentialsRoomPropertiesConfig()
@@ -185,58 +238,109 @@ namespace PepperDash.Essentials.Room.Config
}
}
/// <summary>
/// Represents a EssentialsRoomUiBehaviorConfig
/// </summary>
public class EssentialsRoomUiBehaviorConfig
{
[JsonProperty("disableActivityButtonsWhileWarmingCooling")]
/// <summary>
/// Gets or sets the DisableActivityButtonsWhileWarmingCooling
/// </summary>
public bool DisableActivityButtonsWhileWarmingCooling { get; set; }
}
/// <summary>
/// Represents a EssentialsAvRoomPropertiesConfig
/// </summary>
public class EssentialsAvRoomPropertiesConfig : EssentialsRoomPropertiesConfig
{
[JsonProperty("defaultAudioKey")]
/// <summary>
/// Gets or sets the DefaultAudioKey
/// </summary>
public string DefaultAudioKey { get; set; }
[JsonProperty("sourceListKey")]
/// <summary>
/// Gets or sets the SourceListKey
/// </summary>
public string SourceListKey { get; set; }
[JsonProperty("destinationListKey")]
/// <summary>
/// Gets or sets the DestinationListKey
/// </summary>
public string DestinationListKey { get; set; }
[JsonProperty("audioControlPointListKey")]
/// <summary>
/// Gets or sets the AudioControlPointListKey
/// </summary>
public string AudioControlPointListKey { get; set; }
[JsonProperty("cameraListKey")]
/// <summary>
/// Gets or sets the CameraListKey
/// </summary>
public string CameraListKey { get; set; }
[JsonProperty("defaultSourceItem")]
/// <summary>
/// Gets or sets the DefaultSourceItem
/// </summary>
public string DefaultSourceItem { get; set; }
/// <summary>
/// Indicates if the room supports advanced sharing
/// </summary>
[JsonProperty("supportsAdvancedSharing")]
/// <summary>
/// Gets or sets the SupportsAdvancedSharing
/// </summary>
public bool SupportsAdvancedSharing { get; set; }
/// <summary>
/// Indicates if non-tech users can change the share mode
/// </summary>
[JsonProperty("userCanChangeShareMode")]
/// <summary>
/// Gets or sets the UserCanChangeShareMode
/// </summary>
public bool UserCanChangeShareMode { get; set; }
[JsonProperty("matrixRoutingKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the MatrixRoutingKey
/// </summary>
public string MatrixRoutingKey { get; set; }
}
public class EssentialsConferenceRoomPropertiesConfig : EssentialsAvRoomPropertiesConfig
{
[JsonProperty("videoCodecKey")]
/// <summary>
/// Gets or sets the VideoCodecKey
/// </summary>
public string VideoCodecKey { get; set; }
[JsonProperty("audioCodecKey")]
/// <summary>
/// Gets or sets the AudioCodecKey
/// </summary>
public string AudioCodecKey { get; set; }
}
/// <summary>
/// Represents a EssentialsEnvironmentPropertiesConfig
/// </summary>
public class EssentialsEnvironmentPropertiesConfig
{
/// <summary>
/// Gets or sets the Enabled
/// </summary>
public bool Enabled { get; set; }
[JsonProperty("deviceKeys")]
/// <summary>
/// Gets or sets the DeviceKeys
/// </summary>
public List<string> DeviceKeys { get; set; }
public EssentialsEnvironmentPropertiesConfig()
@@ -246,6 +350,9 @@ namespace PepperDash.Essentials.Room.Config
}
/// <summary>
/// Represents a EssentialsRoomFusionConfig
/// </summary>
public class EssentialsRoomFusionConfig
{
public uint IpIdInt
@@ -265,28 +372,46 @@ namespace PepperDash.Essentials.Room.Config
}
[JsonProperty("ipId")]
/// <summary>
/// Gets or sets the IpId
/// </summary>
public string IpId { get; set; }
[JsonProperty("joinMapKey")]
/// <summary>
/// Gets or sets the JoinMapKey
/// </summary>
public string JoinMapKey { get; set; }
}
/// <summary>
/// Represents a EssentialsRoomMicrophonePrivacyConfig
/// </summary>
public class EssentialsRoomMicrophonePrivacyConfig
{
[JsonProperty("deviceKey")]
/// <summary>
/// Gets or sets the DeviceKey
/// </summary>
public string DeviceKey { get; set; }
[JsonProperty("behaviour")]
/// <summary>
/// Gets or sets the Behaviour
/// </summary>
public string Behaviour { get; set; }
}
/// <summary>
/// Properties for the help text box
/// Represents a EssentialsHelpPropertiesConfig
/// </summary>
public class EssentialsHelpPropertiesConfig
{
[JsonProperty("message")]
/// <summary>
/// Gets or sets the Message
/// </summary>
public string Message { get; set; }
[JsonProperty("showCallButton")]
@@ -296,6 +421,9 @@ namespace PepperDash.Essentials.Room.Config
/// Defaults to "Call Help Desk"
/// </summary>
[JsonProperty("callButtonText")]
/// <summary>
/// Gets or sets the CallButtonText
/// </summary>
public string CallButtonText { get; set; }
public EssentialsHelpPropertiesConfig()
@@ -305,11 +433,14 @@ namespace PepperDash.Essentials.Room.Config
}
/// <summary>
///
/// Represents a EssentialsOneButtonMeetingPropertiesConfig
/// </summary>
public class EssentialsOneButtonMeetingPropertiesConfig
{
[JsonProperty("enable")]
/// <summary>
/// Gets or sets the Enable
/// </summary>
public bool Enable { get; set; }
}
@@ -319,22 +450,28 @@ namespace PepperDash.Essentials.Room.Config
public string PhoneNumber { get; set; }
[JsonProperty("sipAddress")]
/// <summary>
/// Gets or sets the SipAddress
/// </summary>
public string SipAddress { get; set; }
}
/// <summary>
/// Properties for the room's logo on panels
/// Represents a EssentialsLogoPropertiesConfig
/// </summary>
public class EssentialsLogoPropertiesConfig
{
[JsonProperty("type")]
/// <summary>
/// Gets or sets the Type
/// </summary>
public string Type { get; set; }
[JsonProperty("url")]
public string Url { get; set; }
/// <summary>
/// Gets either the custom URL, a local-to-processor URL, or null if it's a default logo
/// GetLogoUrlLight method
/// </summary>
public string GetLogoUrlLight()
{
@@ -346,6 +483,9 @@ namespace PepperDash.Essentials.Room.Config
return null;
}
/// <summary>
/// GetLogoUrlDark method
/// </summary>
public string GetLogoUrlDark()
{
if (Type == "url")
@@ -358,11 +498,14 @@ namespace PepperDash.Essentials.Room.Config
}
/// <summary>
/// Represents occupancy sensor(s) setup for a room
/// Represents a EssentialsRoomOccSensorConfig
/// </summary>
public class EssentialsRoomOccSensorConfig
{
[JsonProperty("deviceKey")]
/// <summary>
/// Gets or sets the DeviceKey
/// </summary>
public string DeviceKey { get; set; }
[JsonProperty("timeoutMinutes")]
@@ -372,6 +515,9 @@ namespace PepperDash.Essentials.Room.Config
public class EssentialsRoomTechConfig
{
[JsonProperty("password")]
/// <summary>
/// Gets or sets the Password
/// </summary>
public string Password { get; set; }
}
}

View File

@@ -1,17 +1,23 @@
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
///
/// Represents a EssentialsRoomEmergencyConfig
/// </summary>
public class EssentialsRoomEmergencyConfig
{
/// <summary>
/// Gets or sets the Trigger
/// </summary>
public EssentialsRoomEmergencyTriggerConfig Trigger { get; set; }
/// <summary>
/// Gets or sets the Behavior
/// </summary>
public string Behavior { get; set; }
}
/// <summary>
///
/// Represents a EssentialsRoomEmergencyTriggerConfig
/// </summary>
public class EssentialsRoomEmergencyTriggerConfig
{

View File

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

View File

@@ -5,12 +5,18 @@ using PepperDash.Essentials.Room.Config;
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
/// Represents a EssentialsTechRoomConfig
/// </summary>
public class EssentialsTechRoomConfig
{
/// <summary>
/// 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>
@@ -44,12 +50,18 @@ namespace PepperDash.Essentials.Room.Config
public string PresetsFileName { get; set; }
[JsonProperty("scheduledEvents")]
/// <summary>
/// Gets or sets the ScheduledEvents
/// </summary>
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>
@@ -59,12 +71,18 @@ namespace PepperDash.Essentials.Room.Config
public Dictionary<uint, string> MirroredTuners { get; set; }
[JsonProperty("helpMessage")]
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
public string HelpMessage { get; set; }
/// <summary>
/// Indicates the room
/// </summary>
[JsonProperty("isTvPresetsProvider")]
/// <summary>
/// Gets or sets the IsTvPresetsProvider
/// </summary>
public bool IsTvPresetsProvider;
public EssentialsTechRoomConfig()

View File

@@ -4,10 +4,13 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.Config
{
/// <summary>
///
/// Represents a EssentialsRoomVolumesConfig
/// </summary>
public class EssentialsRoomVolumesConfig
{
/// <summary>
/// Gets or sets the Master
/// </summary>
public EssentialsVolumeLevelConfig Master { get; set; }
public EssentialsVolumeLevelConfig Program { get; set; }
public EssentialsVolumeLevelConfig AudioCallRx { get; set; }
@@ -15,12 +18,21 @@ namespace PepperDash.Essentials.Room.Config
}
/// <summary>
///
/// Represents a EssentialsVolumeLevelConfig
/// </summary>
public class EssentialsVolumeLevelConfig
{
/// <summary>
/// Gets or sets the DeviceKey
/// </summary>
public string DeviceKey { get; set; }
/// <summary>
/// Gets or sets the Label
/// </summary>
public string Label { get; set; }
/// <summary>
/// Gets or sets the Level
/// </summary>
public int Level { get; set; }
/// <summary>

View File

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

View File

@@ -4,6 +4,9 @@ using PepperDash.Essentials.Room.Config;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Represents a EssentialsRoomEmergencyContactClosure
/// </summary>
public class EssentialsRoomEmergencyContactClosure : EssentialsRoomEmergencyBase, IEssentialsRoomEmergency
{
public event EventHandler<EventArgs> EmergencyStateChange;
@@ -12,6 +15,9 @@ namespace PepperDash.Essentials.Core
string Behavior;
bool TriggerOnClose;
/// <summary>
/// Gets or sets the InEmergency
/// </summary>
public bool InEmergency { get; private set; }
public EssentialsRoomEmergencyContactClosure(string key, EssentialsRoomEmergencyConfig config, IEssentialsRoom room) :
@@ -75,7 +81,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
///
/// RunEmergencyBehavior method
/// </summary>
public void RunEmergencyBehavior()
{
@@ -85,7 +91,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// Describes the functionality of a room emergency contact closure
/// Defines the contract for IEssentialsRoomEmergency
/// </summary>
public interface IEssentialsRoomEmergency
{

View File

@@ -32,6 +32,9 @@ namespace PepperDash.Essentials.Core
public BoolFeedback IsWarmingUpFeedback { get; private set; }
public BoolFeedback IsCoolingDownFeedback { get; private set; }
/// <summary>
/// Gets or sets the RoomOccupancy
/// </summary>
public IOccupancyStatusProvider RoomOccupancy { get; protected set; }
public bool OccupancyStatusProviderIsRemote { get; private set; }
@@ -50,12 +53,12 @@ namespace PepperDash.Essentials.Core
protected abstract Func<bool> IsCoolingFeedbackFunc { get; }
/// <summary>
/// Indicates if this room is Mobile Control Enabled
/// Gets or sets the IsMobileControlEnabled
/// </summary>
public bool IsMobileControlEnabled { get; private set; }
/// <summary>
/// The bridge for this room if Mobile Control is enabled
/// Gets or sets the MobileControlRoomBridge
/// </summary>
public IMobileControlRoomMessenger MobileControlRoomBridge { get; private set; }
@@ -157,8 +160,8 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// Timer used for informing the UIs of a shutdown
/// </summary>
/// Gets or sets the ShutdownPromptTimer
/// </summary>
public SecondsCountdownTimer ShutdownPromptTimer { get; private set; }
/// <summary>
@@ -174,10 +177,16 @@ namespace PepperDash.Essentials.Core
public string LogoUrlLightBkgnd { get; set; }
/// <summary>
/// Gets or sets the LogoUrlDarkBkgnd
/// </summary>
public string LogoUrlDarkBkgnd { get; set; }
protected SecondsCountdownTimer RoomVacancyShutdownTimer { get; private set; }
/// <summary>
/// Gets or sets the VacancyMode
/// </summary>
public eVacancyMode VacancyMode { get; private set; }
/// <summary>
@@ -247,6 +256,10 @@ namespace PepperDash.Essentials.Core
});
}
/// <summary>
/// CustomActivate method
/// </summary>
/// <inheritdoc />
public override bool CustomActivate()
{
SetUpMobileControl();
@@ -324,6 +337,9 @@ namespace PepperDash.Essentials.Core
///
/// </summary>
/// <param name="type"></param>
/// <summary>
/// StartShutdown method
/// </summary>
public void StartShutdown(eShutdownType type)
{
// Check for shutdowns running. Manual should override other shutdowns
@@ -338,6 +354,9 @@ namespace PepperDash.Essentials.Core
Debug.LogMessage(LogEventLevel.Information, this, "ShutdownPromptTimer Started. Type: {0}. Seconds: {1}", ShutdownType, ShutdownPromptTimer.SecondsToCount);
}
/// <summary>
/// StartRoomVacancyTimer method
/// </summary>
public void StartRoomVacancyTimer(eVacancyMode mode)
{
if (mode == eVacancyMode.None)
@@ -353,7 +372,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// Resets the vacancy mode and shutsdwon the room
/// Shutdown method
/// </summary>
public void Shutdown()
{
@@ -474,7 +493,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
///
/// Enumeration of eWarmingCoolingMode values
/// </summary>
public enum eWarmingCoolingMode
{

View File

@@ -4,6 +4,9 @@ using System.Collections.Generic;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Defines the contract for IRoomEventSchedule
/// </summary>
public interface IRoomEventSchedule
{
void AddOrUpdateScheduledEvent(ScheduledEventConfig eventConfig);
@@ -13,8 +16,14 @@ namespace PepperDash.Essentials.Core
event EventHandler<ScheduledEventEventArgs> ScheduledEventsChanged;
}
/// <summary>
/// Represents a ScheduledEventEventArgs
/// </summary>
public class ScheduledEventEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the ScheduledEvents
/// </summary>
public List<ScheduledEventConfig> ScheduledEvents;
}
}

View File

@@ -44,7 +44,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// Simplified routing direct from source to destination
/// Defines the contract for IRunDirectRouteAction
/// </summary>
public interface IRunDirectRouteAction
{
@@ -62,7 +62,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// Describes a room with routing endpoints
/// Defines the contract for IHasRoutingEndpoints
/// </summary>
public interface IHasRoutingEndpoints
{
@@ -82,7 +82,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// Describes a room with a tech password
/// Defines the contract for ITechPassword
/// </summary>
public interface ITechPassword
{
@@ -97,8 +97,14 @@ namespace PepperDash.Essentials.Core
void SetTechPassword(string oldPassword, string newPassword);
}
/// <summary>
/// Represents a TechPasswordEventArgs
/// </summary>
public class TechPasswordEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the IsValid
/// </summary>
public bool IsValid { get; private set; }
public TechPasswordEventArgs(bool isValid)
@@ -108,7 +114,7 @@ namespace PepperDash.Essentials.Core
}
/// <summary>
/// For rooms that default presentation only routing
/// Defines the contract for IRunDefaultPresentRoute
/// </summary>
public interface IRunDefaultPresentRoute
{
@@ -149,21 +155,33 @@ namespace PepperDash.Essentials.Core
event EventHandler<EventArgs> RoomOccupancyIsSet;
}
/// <summary>
/// Defines the contract for IEmergency
/// </summary>
public interface IEmergency
{
EssentialsRoomEmergencyBase Emergency { get; }
}
/// <summary>
/// Defines the contract for IMicrophonePrivacy
/// </summary>
public interface IMicrophonePrivacy
{
Core.Privacy.MicrophonePrivacyController MicrophonePrivacy { get; }
}
/// <summary>
/// Defines the contract for IHasAccessoryDevices
/// </summary>
public interface IHasAccessoryDevices : IKeyName
{
List<string> AccessoryDeviceKeys { get; }
}
/// <summary>
/// Defines the contract for IHasCiscoNavigatorTouchpanel
/// </summary>
public interface IHasCiscoNavigatorTouchpanel
{
string CiscoNavigatorTouchpanelKey { get; }

View File

@@ -19,10 +19,24 @@ namespace PepperDash.Essentials.Core
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 />
public virtual uint CooldownTime { get { return 10000; } }
/// <summary>
/// Gets or sets the WarmupTime
/// </summary>
/// <inheritdoc />
public virtual uint WarmupTime { get { return 5000; } }
/// <summary>
/// Gets or sets the Description
/// </summary>
public string Description { get; set; }
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
public string HelpMessage { get; set; }
public Room(string key, string name)
@@ -32,8 +46,15 @@ namespace PepperDash.Essentials.Core
HelpMessage = "";
}
/// <summary>
/// RoomOn method
/// </summary>
/// <inheritdoc />
public virtual void RoomOn() { }
/// <summary>
/// RoomOff method
/// </summary>
public virtual void RoomOff() { }
#region IDeviceWithOutputs Members

View File

@@ -8,6 +8,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Defines the contract for IOccupancyStatusProvider
/// </summary>
public interface IOccupancyStatusProvider
{
BoolFeedback RoomIsOccupiedFeedback { get; }