From 9acffc620da5010f5161ab6137830a3c35932f10 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 21 Mar 2024 21:01:47 -0600 Subject: [PATCH 01/12] feat: Adds IBasicVolumeWithFeedbackAdvanced and eVolumeLevelUnits --- .../Devices/IVolumeAndAudioInterfaces.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs b/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs index c8033b92..eb95f135 100644 --- a/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs +++ b/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs @@ -64,6 +64,21 @@ namespace PepperDash.Essentials.Core IntFeedback VolumeLevelFeedback { get; } } + public interface IBasicVolumeWithFeedbackAdvanced : IBasicVolumeWithFeedback + { + int RawVolumeLevel { get; } + + eVolumeLevelUnits Units { get; } + } + + public enum eVolumeLevelUnits + { + Decibels, + Percent, + Relative, + Absolute + } + /// /// A class that implements this contains a reference to a current IBasicVolumeControls device. /// The class may have multiple IBasicVolumeControls. From 09ac96433536e1d679eec7cdfb8d9782044326e3 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Tue, 26 Mar 2024 15:19:06 -0500 Subject: [PATCH 02/12] fix: add base classes for input/output slots for matrix routing --- .../Routing/IMatrixRouting.cs | 4 ++-- .../Routing/IRoutingInputSlot.cs | 13 +++++++++++++ .../Routing/IRoutingOutputSlot.cs | 16 ++++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs index d7dc8c79..cd3f6d37 100644 --- a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs +++ b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs @@ -4,8 +4,8 @@ namespace PepperDash.Essentials.Core.Routing { public interface IMatrixRouting { - Dictionary InputSlots { get; } - Dictionary OutputSlots { get; } + Dictionary InputSlots { get; } + Dictionary OutputSlots { get; } void Route(string inputSlotKey, string outputSlotKey, eRoutingSignalType type); } diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs index 93b96614..c9d6ee5e 100644 --- a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs @@ -10,4 +10,17 @@ namespace PepperDash.Essentials.Core.Routing { string TxDeviceKey { get; } } + + public abstract class RoutingInputSlotBase : IRoutingInputSlot + { + public abstract string TxDeviceKey { get; } + public abstract int SlotNumber { get; } + public abstract eRoutingSignalType SupportedSignalTypes { get; } + public abstract string Name { get; } + public abstract BoolFeedback IsOnline { get; } + public abstract bool VideoSyncDetected { get; } + public abstract string Key { get; } + + public abstract event EventHandler VideoSyncChanged; + } } diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs index 160db482..a9a4eea2 100644 --- a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs @@ -3,12 +3,24 @@ using System.Collections.Generic; namespace PepperDash.Essentials.Core.Routing { - public interface IRoutingOutputSlot:IRoutingSlot + public interface IRoutingOutputSlot : IRoutingSlot { event EventHandler OutputSlotChanged; string RxDeviceKey { get; } - Dictionary CurrentRoutes { get; } + Dictionary CurrentRoutes { get; } + } + + public abstract class RoutingOutputSlotBase : IRoutingOutputSlot + { + public abstract string RxDeviceKey { get; } + public abstract Dictionary CurrentRoutes { get; } + public abstract int SlotNumber { get; } + public abstract eRoutingSignalType SupportedSignalTypes { get; } + public abstract string Name { get; } + public abstract string Key { get; } + + public abstract event EventHandler OutputSlotChanged; } } From a1310f2de7354d2ccaf2f6f0cb51bea8b948afe7 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 27 Mar 2024 14:27:30 -0600 Subject: [PATCH 03/12] docs: added comment to interface --- .gitignore | 1 + .../Devices/IVolumeAndAudioInterfaces.cs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 739a60ab..36d84cbc 100644 --- a/.gitignore +++ b/.gitignore @@ -390,3 +390,4 @@ MigrationBackup/ FodyWeavers.xsd essentials-framework/Essentials Interfaces/PepperDash_Essentials_Interfaces/PepperDash_Essentials_Interfaces.csproj .DS_Store +/._PepperDash.Essentials.sln diff --git a/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs b/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs index eb95f135..5d8e0724 100644 --- a/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs +++ b/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs @@ -64,6 +64,9 @@ namespace PepperDash.Essentials.Core IntFeedback VolumeLevelFeedback { get; } } + /// + /// Adds the ability to display a raw volume level and the units of that level + /// public interface IBasicVolumeWithFeedbackAdvanced : IBasicVolumeWithFeedback { int RawVolumeLevel { get; } From 5ccf2985842ccba95c1fefd8964655a2fcaa0d45 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 27 Mar 2024 15:05:41 -0600 Subject: [PATCH 04/12] chore: updates PD.Core version --- .../PepperDash.Essentials.Core.csproj | 2 +- .../PepperDash.Essentials.Devices.Common.csproj | 2 +- src/PepperDash.Essentials/PepperDash.Essentials.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj b/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj index fbc03a2e..da717cb4 100644 --- a/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj +++ b/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj @@ -23,7 +23,7 @@ - + diff --git a/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj b/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj index c7feb653..abfcd9c2 100644 --- a/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj +++ b/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj @@ -27,6 +27,6 @@ - + \ No newline at end of file diff --git a/src/PepperDash.Essentials/PepperDash.Essentials.csproj b/src/PepperDash.Essentials/PepperDash.Essentials.csproj index 70a2d2d4..e10707c2 100644 --- a/src/PepperDash.Essentials/PepperDash.Essentials.csproj +++ b/src/PepperDash.Essentials/PepperDash.Essentials.csproj @@ -47,7 +47,7 @@ - + From a7654aa77d2971f8f418cc309da736587a02d521 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 28 Mar 2024 11:18:22 -0600 Subject: [PATCH 05/12] feat: Adds property MatrixRoutingKey to EssentialsAvRoomPropertiesConfig --- .../Room/Config/EssentialsRoomConfig.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfig.cs b/src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfig.cs index d83e5362..f807ffe7 100644 --- a/src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfig.cs +++ b/src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfig.cs @@ -210,6 +210,10 @@ namespace PepperDash.Essentials.Room.Config /// [JsonProperty("userCanChangeShareMode")] public bool UserCanChangeShareMode { get; set; } + + + [JsonProperty("matrixRoutingKey", NullValueHandling = NullValueHandling.Ignore)] + public string MatrixRoutingKey { get; set; } } public class EssentialsConferenceRoomPropertiesConfig : EssentialsAvRoomPropertiesConfig @@ -218,6 +222,7 @@ namespace PepperDash.Essentials.Room.Config public string VideoCodecKey { get; set; } [JsonProperty("audioCodecKey")] public string AudioCodecKey { get; set; } + } public class EssentialsEnvironmentPropertiesConfig From 595fb3894eb8086617af9a9cc18e215c0b17ad06 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 28 Mar 2024 11:42:52 -0600 Subject: [PATCH 06/12] feat: addes IHasMatrixRouting interface --- src/PepperDash.Essentials.Core/Room/Interfaces.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/PepperDash.Essentials.Core/Room/Interfaces.cs b/src/PepperDash.Essentials.Core/Room/Interfaces.cs index 3bf2dc0f..c0de8113 100644 --- a/src/PepperDash.Essentials.Core/Room/Interfaces.cs +++ b/src/PepperDash.Essentials.Core/Room/Interfaces.cs @@ -50,6 +50,11 @@ namespace PepperDash.Essentials.Core { void RunDirectRoute(string sourceKey, string destinationKey, eRoutingSignalType type = eRoutingSignalType.AudioVideo); } + + public interface IHasMatrixRouting + { + string MatrixRoutingDeviceKey { get; } + } /// /// For rooms that default presentation only routing From d26c5344e4e61ddb0e4138b65573bb4a9080f0a7 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 28 Mar 2024 19:55:53 -0600 Subject: [PATCH 07/12] fix: makes IMatrixRouting use generic types. --- src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs | 6 +++--- .../Displays/MockDisplay.cs | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs index cd3f6d37..e53ea7ec 100644 --- a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs +++ b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs @@ -2,10 +2,10 @@ namespace PepperDash.Essentials.Core.Routing { - public interface IMatrixRouting + public interface IMatrixRouting where TInput : IRoutingInputSlot where TOutput : IRoutingOutputSlot { - Dictionary InputSlots { get; } - Dictionary OutputSlots { get; } + Dictionary InputSlots { get; } + Dictionary OutputSlots { get; } void Route(string inputSlotKey, string outputSlotKey, eRoutingSignalType type); } diff --git a/src/PepperDash.Essentials.Devices.Common/Displays/MockDisplay.cs b/src/PepperDash.Essentials.Devices.Common/Displays/MockDisplay.cs index dd036205..a1241821 100644 --- a/src/PepperDash.Essentials.Devices.Common/Displays/MockDisplay.cs +++ b/src/PepperDash.Essentials.Devices.Common/Displays/MockDisplay.cs @@ -26,7 +26,6 @@ namespace PepperDash.Essentials.Devices.Common.Displays { return () => { - Debug.LogMessage(LogEventLevel.Verbose, this, "*************************************************** Display Power is {0}", _PowerIsOn ? "on" : "off"); return _PowerIsOn; }; } } @@ -36,7 +35,6 @@ namespace PepperDash.Essentials.Devices.Common.Displays { return () => { - Debug.LogMessage(LogEventLevel.Verbose, this, "*************************************************** {0}", _IsCoolingDown ? "Display is cooling down" : "Display has finished cooling down"); return _IsCoolingDown; }; } @@ -47,7 +45,6 @@ namespace PepperDash.Essentials.Devices.Common.Displays { return () => { - Debug.LogMessage(LogEventLevel.Verbose, this, "*************************************************** {0}", _IsWarmingUp ? "Display is warming up" : "Display has finished warming up"); return _IsWarmingUp; }; } From b90e5b2a0d4260c6fd4ed8fe710e585e464124fe Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 28 Mar 2024 19:56:17 -0600 Subject: [PATCH 08/12] feat: Adds IHasRoutingEndpoints and IShutdownPromptTimer interfaces --- .../Room/Interfaces.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/PepperDash.Essentials.Core/Room/Interfaces.cs b/src/PepperDash.Essentials.Core/Room/Interfaces.cs index c0de8113..89f9da7a 100644 --- a/src/PepperDash.Essentials.Core/Room/Interfaces.cs +++ b/src/PepperDash.Essentials.Core/Room/Interfaces.cs @@ -51,11 +51,32 @@ namespace PepperDash.Essentials.Core void RunDirectRoute(string sourceKey, string destinationKey, eRoutingSignalType type = eRoutingSignalType.AudioVideo); } + /// + /// Describes a room with matrix routing + /// public interface IHasMatrixRouting { string MatrixRoutingDeviceKey { get; } } + /// + /// Describes a room with routing endpoints + /// + public interface IHasRoutingEndpoints + { + List EndpointKeys { get; } + } + + /// + /// Describes a room with a shutdown prompt timer + /// + public interface IShutdownPromptTimer + { + SecondsCountdownTimer ShutdownPromptTimer { get; } + + void SetShutdownPromptSeconds(int seconds); + } + /// /// For rooms that default presentation only routing /// From d2d041dbf757b5bf59a1c61a95e7748a23ff14db Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Wed, 3 Apr 2024 10:42:25 -0500 Subject: [PATCH 09/12] fix: make IRoutingOutputSlot & RoutingOutputSlotBase generic --- src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs | 2 +- .../Routing/IRoutingOutputSlot.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs index e53ea7ec..7bdd7453 100644 --- a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs +++ b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs @@ -2,7 +2,7 @@ namespace PepperDash.Essentials.Core.Routing { - public interface IMatrixRouting where TInput : IRoutingInputSlot where TOutput : IRoutingOutputSlot + public interface IMatrixRouting where TInput : IRoutingInputSlot where TOutput : IRoutingOutputSlot { Dictionary InputSlots { get; } Dictionary OutputSlots { get; } diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs index a9a4eea2..f8dff8be 100644 --- a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs @@ -3,19 +3,19 @@ using System.Collections.Generic; namespace PepperDash.Essentials.Core.Routing { - public interface IRoutingOutputSlot : IRoutingSlot + public interface IRoutingOutputSlot : IRoutingSlot where TInput: IRoutingInputSlot { event EventHandler OutputSlotChanged; string RxDeviceKey { get; } - Dictionary CurrentRoutes { get; } + Dictionary CurrentRoutes { get; } } - public abstract class RoutingOutputSlotBase : IRoutingOutputSlot + public abstract class RoutingOutputSlotBase : IRoutingOutputSlot where TInput: IRoutingInputSlot { public abstract string RxDeviceKey { get; } - public abstract Dictionary CurrentRoutes { get; } + public abstract Dictionary CurrentRoutes { get; } public abstract int SlotNumber { get; } public abstract eRoutingSignalType SupportedSignalTypes { get; } public abstract string Name { get; } From 5d608887a1d252bcd463cb92af04b8cef096f73e Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 3 Apr 2024 14:38:54 -0600 Subject: [PATCH 10/12] feat: Adds IEssentialsRoomPropertiesConfig --- .../Room/IEssentialsRoomPropertiesConfig.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/PepperDash.Essentials.Devices.Common/Room/IEssentialsRoomPropertiesConfig.cs diff --git a/src/PepperDash.Essentials.Devices.Common/Room/IEssentialsRoomPropertiesConfig.cs b/src/PepperDash.Essentials.Devices.Common/Room/IEssentialsRoomPropertiesConfig.cs new file mode 100644 index 00000000..e32be4c4 --- /dev/null +++ b/src/PepperDash.Essentials.Devices.Common/Room/IEssentialsRoomPropertiesConfig.cs @@ -0,0 +1,14 @@ +using PepperDash.Essentials.Room.Config; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PepperDash.Essentials.Devices.Common.Room +{ + public interface IEssentialsRoomPropertiesConfig + { + EssentialsRoomPropertiesConfig PropertiesConfig { get; } + } +} From 8a374072ae24c9a6d2e48cd9b50d185d8f9112d9 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 4 Apr 2024 16:16:54 -0600 Subject: [PATCH 11/12] feat: Adds EndpointKeys to IHasMatrixRouting --- src/PepperDash.Essentials.Core/Room/Interfaces.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/PepperDash.Essentials.Core/Room/Interfaces.cs b/src/PepperDash.Essentials.Core/Room/Interfaces.cs index 89f9da7a..e4f93802 100644 --- a/src/PepperDash.Essentials.Core/Room/Interfaces.cs +++ b/src/PepperDash.Essentials.Core/Room/Interfaces.cs @@ -57,6 +57,8 @@ namespace PepperDash.Essentials.Core public interface IHasMatrixRouting { string MatrixRoutingDeviceKey { get; } + + List EndpointKeys { get; } } /// From 1fdaa84a62fa167c145265a98b94923c11008c02 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Tue, 9 Apr 2024 08:33:58 -0500 Subject: [PATCH 12/12] fix: remove generics from matrix routing interfaces --- .../Routing/IMatrixRouting.cs | 6 +++--- .../Routing/IRoutingInputSlot.cs | 21 +------------------ .../Routing/IRoutingOutputSlot.cs | 18 +++------------- 3 files changed, 7 insertions(+), 38 deletions(-) diff --git a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs index 7bdd7453..d7dc8c79 100644 --- a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs +++ b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs @@ -2,10 +2,10 @@ namespace PepperDash.Essentials.Core.Routing { - public interface IMatrixRouting where TInput : IRoutingInputSlot where TOutput : IRoutingOutputSlot + public interface IMatrixRouting { - Dictionary InputSlots { get; } - Dictionary OutputSlots { get; } + Dictionary InputSlots { get; } + Dictionary OutputSlots { get; } void Route(string inputSlotKey, string outputSlotKey, eRoutingSignalType type); } diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs index c9d6ee5e..faee0fe9 100644 --- a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs @@ -1,26 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PepperDash.Essentials.Core.Routing +namespace PepperDash.Essentials.Core.Routing { public interface IRoutingInputSlot: IRoutingSlot, IOnline, IVideoSync { string TxDeviceKey { get; } } - - public abstract class RoutingInputSlotBase : IRoutingInputSlot - { - public abstract string TxDeviceKey { get; } - public abstract int SlotNumber { get; } - public abstract eRoutingSignalType SupportedSignalTypes { get; } - public abstract string Name { get; } - public abstract BoolFeedback IsOnline { get; } - public abstract bool VideoSyncDetected { get; } - public abstract string Key { get; } - - public abstract event EventHandler VideoSyncChanged; - } } diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs index f8dff8be..478961cc 100644 --- a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs @@ -3,24 +3,12 @@ using System.Collections.Generic; namespace PepperDash.Essentials.Core.Routing { - public interface IRoutingOutputSlot : IRoutingSlot where TInput: IRoutingInputSlot + public interface IRoutingOutputSlot : IRoutingSlot { event EventHandler OutputSlotChanged; string RxDeviceKey { get; } - Dictionary CurrentRoutes { get; } - } - - public abstract class RoutingOutputSlotBase : IRoutingOutputSlot where TInput: IRoutingInputSlot - { - public abstract string RxDeviceKey { get; } - public abstract Dictionary CurrentRoutes { get; } - public abstract int SlotNumber { get; } - public abstract eRoutingSignalType SupportedSignalTypes { get; } - public abstract string Name { get; } - public abstract string Key { get; } - - public abstract event EventHandler OutputSlotChanged; - } + Dictionary CurrentRoutes { get; } + } }