diff --git a/.gitignore b/.gitignore index c5e1142f..bd60ff8d 100644 --- a/.gitignore +++ b/.gitignore @@ -393,4 +393,5 @@ essentials-framework/Essentials Interfaces/PepperDash_Essentials_Interfaces/Pepp /._PepperDash.Essentials.sln .vscode/settings.json _site/ -api/ \ No newline at end of file +api/ +*.DS_Store diff --git a/src/PepperDash.Essentials.Core/Devices/LevelControlListItem.cs b/src/PepperDash.Essentials.Core/Devices/LevelControlListItem.cs index 4c2e83e4..821a0c2b 100644 --- a/src/PepperDash.Essentials.Core/Devices/LevelControlListItem.cs +++ b/src/PepperDash.Essentials.Core/Devices/LevelControlListItem.cs @@ -9,10 +9,15 @@ using PepperDash.Essentials.Core.Devices; namespace PepperDash.Essentials.Core { + /// + /// Represents a level control item in a list, which can be used to control volume or mute functionality. + /// public class LevelControlListItem : AudioControlListItemBase { - + /// + /// A reference to the IBasicVolumeWithFeedback device for control. + /// [JsonIgnore] public IBasicVolumeWithFeedback LevelControl { @@ -55,7 +60,7 @@ namespace PepperDash.Essentials.Core { get { - if(string.IsNullOrEmpty(ItemKey)) return ParentDeviceKey; + if (string.IsNullOrEmpty(ItemKey)) return ParentDeviceKey; else { return DeviceManager.AllDevices. @@ -70,13 +75,39 @@ namespace PepperDash.Essentials.Core [JsonProperty("type")] [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] public eLevelControlType Type { get; set; } + + + /// + /// Indicates if the item is a mic or not. + /// + [JsonProperty("isMic", NullValueHandling = NullValueHandling.Ignore)] + public bool? IsMic { get; set; } + + /// + /// Indicates if the item should show the raw level in the UI. + /// + [JsonProperty("showRawLevel", NullValueHandling = NullValueHandling.Ignore)] + public bool? ShowRawLevel { get; set; } } + /// + /// Indicates the type of level control item. + /// [Flags] public enum eLevelControlType { + /// + /// Indicates that the item is a level control only + /// Level = 1, + /// + /// Indicates that the item is a mute control only + /// Mute = 2, + /// + /// Indicates that the item is both a level and mute control + /// LevelAndMute = Level | Mute, } + } diff --git a/src/PepperDash.Essentials.Core/Devices/SourceListItem.cs b/src/PepperDash.Essentials.Core/Devices/SourceListItem.cs index 6de2f35d..ae223005 100644 --- a/src/PepperDash.Essentials.Core/Devices/SourceListItem.cs +++ b/src/PepperDash.Essentials.Core/Devices/SourceListItem.cs @@ -10,7 +10,18 @@ namespace PepperDash.Essentials.Core /// public enum eSourceListItemType { - Route, Off, Other, SomethingAwesomerThanThese + /// + /// Represents a typical route. + /// + Route, + /// + /// Represents an off route. + /// + Off, + /// + /// Represents some other type of route + /// + Other, } /// @@ -18,6 +29,9 @@ namespace PepperDash.Essentials.Core /// public class SourceListItem { + /// + /// The key of the source item, which is used to identify it in the DeviceManager + /// [JsonProperty("sourceKey")] public string SourceKey { get; set; } @@ -117,6 +131,9 @@ namespace PepperDash.Essentials.Core [JsonProperty("disableRoutedSharing")] public bool DisableRoutedSharing { get; set; } + /// + /// + /// [JsonProperty("destinations")] public List Destinations { get; set; } /// @@ -149,31 +166,56 @@ namespace PepperDash.Essentials.Core [JsonProperty("disableSimpleRouting")] public bool DisableSimpleRouting { get; set; } + /// + /// Default constructor for SourceListItem, initializes the Icon to "Blank" + /// public SourceListItem() { Icon = "Blank"; } + /// + /// Returns a string representation of the SourceListItem, including the SourceKey and Name + /// + /// public override string ToString() { return $"{SourceKey}:{Name}"; } } + /// + /// Represents a route in a source list item, which defines the source and destination keys and the type of signal being routed + /// public class SourceRouteListItem { + /// + /// The key of the source device to route from + /// [JsonProperty("sourceKey")] public string SourceKey { get; set; } + /// + /// The key of the source port to route from + /// [JsonProperty("sourcePortKey")] public string SourcePortKey { get; set; } + /// + /// The key of the destination device to route to + /// [JsonProperty("destinationKey")] public string DestinationKey { get; set; } + /// + /// The key of the destination port to route to + /// [JsonProperty("destinationPortKey")] public string DestinationPortKey { get; set; } + /// + /// The type of signal being routed, such as audio or video + /// [JsonProperty("type")] public eRoutingSignalType Type { get; set; } } @@ -183,15 +225,85 @@ namespace PepperDash.Essentials.Core /// public enum eSourceListItemDestinationTypes { + /// + /// Default display, used for the main video output in a room + /// defaultDisplay, + /// + /// Left display + /// leftDisplay, + /// + /// Right display + /// rightDisplay, + /// + /// Center display + /// centerDisplay, + /// + /// Program audio, used for the main audio output in a room + /// programAudio, + /// + /// Codec content, used for sharing content to the far end in a video call + /// codecContent, + /// + /// Front left display, used for rooms with multiple displays + /// frontLeftDisplay, + /// + /// Front right display, used for rooms with multiple displays + /// frontRightDisplay, + /// + /// Rear left display, used for rooms with multiple displays + /// rearLeftDisplay, + /// + /// Rear right display, used for rooms with multiple displays + /// rearRightDisplay, + /// + /// Auxiliary display 1, used for additional displays in a room + /// + auxDisplay1, + /// + /// Auxiliary display 2, used for additional displays in a room + /// + auxDisplay2, + /// + /// Auxiliary display 3, used for additional displays in a room + /// + auxDisplay3, + /// + /// Auxiliary display 4, used for additional displays in a room + /// + auxDisplay4, + /// + /// Auxiliary display 5, used for additional displays in a room + /// + auxDisplay5, + /// + /// Auxiliary display 6, used for additional displays in a room + /// + auxDisplay6, + /// + /// Auxiliary display 7, used for additional displays in a room + /// + auxDisplay7, + /// + /// Auxiliary display 8, used for additional displays in a room + /// + auxDisplay8, + /// + /// Auxiliary display 9, used for additional displays in a room + /// + auxDisplay9, + /// + /// Auxiliary display 10, used for additional displays in a room + /// + auxDisplay10, } } \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingSink.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingSink.cs index b05c7744..59bcd65b 100644 --- a/src/PepperDash.Essentials.Core/Routing/IRoutingSink.cs +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingSink.cs @@ -7,8 +7,14 @@ { } + /// + /// For fixed-source endpoint devices with an input port + /// public interface IRoutingSinkWithInputPort :IRoutingSink { + /// + /// Gets the current input port for this routing sink. + /// RoutingInputPort CurrentInputPort { get; } } /*///