From 7f2bb078c8052c589bd986975b964eadfe2eb3fd Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Wed, 31 Dec 2025 12:20:40 -0600 Subject: [PATCH] fix: revert prop name to inUpPosition for screenlift messenger - refactor volume interfaces into separate files - IBasicVolumeControl implements IKeyName --- .config/dotnet-tools.json | 13 ++ .../DeviceTypeInterfaces/IAudioZone.cs | 10 ++ .../DeviceTypeInterfaces/IAudioZones.cs | 12 ++ .../IBasicVolumeControls.cs | 27 +++ .../IBasicVolumeWithFeedback.cs | 14 ++ .../IBasicVolumeWithFeedbackAdvanced.cs | 12 ++ .../IFullAudioSettings.cs | 41 +++++ .../IHasCurrentVolumeControls.cs | 17 ++ .../DeviceTypeInterfaces/IHasMuteControl.cs | 10 ++ .../IHasMuteControlWithFeedback.cs | 12 ++ .../DeviceTypeInterfaces/IHasVolumeControl.cs | 11 ++ .../IHasVolumeControlWithFeedback.cs | 11 ++ .../DeviceTypeInterfaces/IHasVolumeDevice.cs | 10 ++ .../DeviceTypeInterfaces/eVolumeLevelUnits.cs | 10 ++ .../Devices/IVolumeAndAudioInterfaces.cs | 161 ------------------ .../Messengers/DeviceVolumeMessenger.cs | 2 +- .../IProjectorScreenLiftControlMessenger.cs | 2 +- 17 files changed, 212 insertions(+), 163 deletions(-) create mode 100644 .config/dotnet-tools.json create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZone.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZones.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeControls.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedback.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedbackAdvanced.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IFullAudioSettings.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasCurrentVolumeControls.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControl.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControlWithFeedback.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControl.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControlWithFeedback.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeDevice.cs create mode 100644 src/PepperDash.Essentials.Core/DeviceTypeInterfaces/eVolumeLevelUnits.cs delete mode 100644 src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 00000000..79512ebe --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "csharpier": { + "version": "1.2.4", + "commands": [ + "csharpier" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZone.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZone.cs new file mode 100644 index 00000000..593c2ea8 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZone.cs @@ -0,0 +1,10 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines minimum functionality for an audio zone + /// + public interface IAudioZone : IBasicVolumeWithFeedback + { + void SelectInput(ushort input); + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZones.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZones.cs new file mode 100644 index 00000000..19c43fd8 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IAudioZones.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; + +namespace PepperDash.Essentials.Core +{ + /// + /// Identifies a device that contains audio zones + /// + public interface IAudioZones : IRouting + { + Dictionary Zone { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeControls.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeControls.cs new file mode 100644 index 00000000..3767fa34 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeControls.cs @@ -0,0 +1,27 @@ +using PepperDash.Core; + +namespace PepperDash.Essentials.Core +{ + /// + /// Defines minimal volume and mute control methods + /// + public interface IBasicVolumeControls : IKeyName + { + /// + /// Increases the volume + /// + /// Indicates whether the volume change is a press and hold action + void VolumeUp(bool pressRelease); + + /// + /// Decreases the volume + /// + /// Indicates whether the volume change is a press and hold action + void VolumeDown(bool pressRelease); + + /// + /// Toggles the mute state + /// + void MuteToggle(); + } +} diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedback.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedback.cs new file mode 100644 index 00000000..addee08a --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedback.cs @@ -0,0 +1,14 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines the contract for IBasicVolumeWithFeedback + /// + public interface IBasicVolumeWithFeedback : IBasicVolumeControls + { + BoolFeedback MuteFeedback { get; } + void MuteOn(); + void MuteOff(); + void SetVolume(ushort level); + IntFeedback VolumeLevelFeedback { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedbackAdvanced.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedbackAdvanced.cs new file mode 100644 index 00000000..5f51ce02 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IBasicVolumeWithFeedbackAdvanced.cs @@ -0,0 +1,12 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines the contract for IBasicVolumeWithFeedbackAdvanced + /// + public interface IBasicVolumeWithFeedbackAdvanced : IBasicVolumeWithFeedback + { + int RawVolumeLevel { get; } + + eVolumeLevelUnits Units { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IFullAudioSettings.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IFullAudioSettings.cs new file mode 100644 index 00000000..5344dd6f --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IFullAudioSettings.cs @@ -0,0 +1,41 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines the contract for IFullAudioSettings + /// + public interface IFullAudioSettings : IBasicVolumeWithFeedback + { + void SetBalance(ushort level); + void BalanceLeft(bool pressRelease); + void BalanceRight(bool pressRelease); + + void SetBass(ushort level); + void BassUp(bool pressRelease); + void BassDown(bool pressRelease); + + void SetTreble(ushort level); + void TrebleUp(bool pressRelease); + void TrebleDown(bool pressRelease); + + bool hasMaxVolume { get; } + void SetMaxVolume(ushort level); + void MaxVolumeUp(bool pressRelease); + void MaxVolumeDown(bool pressRelease); + + bool hasDefaultVolume { get; } + void SetDefaultVolume(ushort level); + void DefaultVolumeUp(bool pressRelease); + void DefaultVolumeDown(bool pressRelease); + + void LoudnessToggle(); + void MonoToggle(); + + BoolFeedback LoudnessFeedback { get; } + BoolFeedback MonoFeedback { get; } + IntFeedback BalanceFeedback { get; } + IntFeedback BassFeedback { get; } + IntFeedback TrebleFeedback { get; } + IntFeedback MaxVolumeFeedback { get; } + IntFeedback DefaultVolumeFeedback { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasCurrentVolumeControls.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasCurrentVolumeControls.cs new file mode 100644 index 00000000..e6b1d7a3 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasCurrentVolumeControls.cs @@ -0,0 +1,17 @@ +using System; + +namespace PepperDash.Essentials.Core +{ + /// + /// Defines the contract for IHasCurrentVolumeControls + /// + public interface IHasCurrentVolumeControls + { + IBasicVolumeControls CurrentVolumeControls { get; } + event EventHandler CurrentVolumeDeviceChange; + + void SetDefaultLevels(); + + bool ZeroVolumeWhenSwtichingVolumeDevices { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControl.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControl.cs new file mode 100644 index 00000000..4a89d8cf --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControl.cs @@ -0,0 +1,10 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines basic mute control methods + /// + public interface IHasMuteControl + { + void MuteToggle(); + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControlWithFeedback.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControlWithFeedback.cs new file mode 100644 index 00000000..5278541a --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMuteControlWithFeedback.cs @@ -0,0 +1,12 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines mute control methods and properties with feedback + /// + public interface IHasMuteControlWithFeedback : IHasMuteControl + { + BoolFeedback MuteFeedback { get; } + void MuteOn(); + void MuteOff(); + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControl.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControl.cs new file mode 100644 index 00000000..eae458a3 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControl.cs @@ -0,0 +1,11 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines the contract for IHasVolumeControl + /// + public interface IHasVolumeControl + { + void VolumeUp(bool pressRelease); + void VolumeDown(bool pressRelease); + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControlWithFeedback.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControlWithFeedback.cs new file mode 100644 index 00000000..a021edb1 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeControlWithFeedback.cs @@ -0,0 +1,11 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines volume control methods and properties with feedback + /// + public interface IHasVolumeControlWithFeedback : IHasVolumeControl + { + void SetVolume(ushort level); + IntFeedback VolumeLevelFeedback { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeDevice.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeDevice.cs new file mode 100644 index 00000000..706271aa --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasVolumeDevice.cs @@ -0,0 +1,10 @@ +namespace PepperDash.Essentials.Core +{ + /// + /// Defines the contract for IHasVolumeDevice + /// + public interface IHasVolumeDevice + { + IBasicVolumeControls VolumeDevice { get; } + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/eVolumeLevelUnits.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/eVolumeLevelUnits.cs new file mode 100644 index 00000000..0ebb9270 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/eVolumeLevelUnits.cs @@ -0,0 +1,10 @@ +namespace PepperDash.Essentials.Core +{ + public enum eVolumeLevelUnits + { + Decibels, + Percent, + Relative, + Absolute + } +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs b/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs deleted file mode 100644 index 32a28113..00000000 --- a/src/PepperDash.Essentials.Core/Devices/IVolumeAndAudioInterfaces.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; - -namespace PepperDash.Essentials.Core -{ - /// - /// Defines minimal volume and mute control methods - /// - public interface IBasicVolumeControls - { - void VolumeUp(bool pressRelease); - void VolumeDown(bool pressRelease); - void MuteToggle(); - } - - /// - /// Defines the contract for IHasVolumeControl - /// - public interface IHasVolumeControl - { - void VolumeUp(bool pressRelease); - void VolumeDown(bool pressRelease); - } - - /// - /// Defines volume control methods and properties with feedback - /// - public interface IHasVolumeControlWithFeedback : IHasVolumeControl - { - void SetVolume(ushort level); - IntFeedback VolumeLevelFeedback { get; } - } - - /// - /// Defines basic mute control methods - /// - public interface IHasMuteControl - { - void MuteToggle(); - } - - /// - /// Defines mute control methods and properties with feedback - /// - public interface IHasMuteControlWithFeedback : IHasMuteControl - { - BoolFeedback MuteFeedback { get; } - void MuteOn(); - void MuteOff(); - } - - /// - /// Defines the contract for IBasicVolumeWithFeedback - /// - public interface IBasicVolumeWithFeedback : IBasicVolumeControls - { - BoolFeedback MuteFeedback { get; } - void MuteOn(); - void MuteOff(); - void SetVolume(ushort level); - IntFeedback VolumeLevelFeedback { get; } - } - - /// - /// Defines the contract for IBasicVolumeWithFeedbackAdvanced - /// - public interface IBasicVolumeWithFeedbackAdvanced : IBasicVolumeWithFeedback - { - int RawVolumeLevel { get; } - - eVolumeLevelUnits Units { get; } - } - - public enum eVolumeLevelUnits - { - Decibels, - Percent, - Relative, - Absolute - } - - /// - /// Defines the contract for IHasCurrentVolumeControls - /// - public interface IHasCurrentVolumeControls - { - IBasicVolumeControls CurrentVolumeControls { get; } - event EventHandler CurrentVolumeDeviceChange; - - void SetDefaultLevels(); - - bool ZeroVolumeWhenSwtichingVolumeDevices { get; } - } - - - /// - /// Defines the contract for IFullAudioSettings - /// - public interface IFullAudioSettings : IBasicVolumeWithFeedback - { - void SetBalance(ushort level); - void BalanceLeft(bool pressRelease); - void BalanceRight(bool pressRelease); - - void SetBass(ushort level); - void BassUp(bool pressRelease); - void BassDown(bool pressRelease); - - void SetTreble(ushort level); - void TrebleUp(bool pressRelease); - void TrebleDown(bool pressRelease); - - bool hasMaxVolume { get; } - void SetMaxVolume(ushort level); - void MaxVolumeUp(bool pressRelease); - void MaxVolumeDown(bool pressRelease); - - bool hasDefaultVolume { get; } - void SetDefaultVolume(ushort level); - void DefaultVolumeUp(bool pressRelease); - void DefaultVolumeDown(bool pressRelease); - - void LoudnessToggle(); - void MonoToggle(); - - BoolFeedback LoudnessFeedback { get; } - BoolFeedback MonoFeedback { get; } - IntFeedback BalanceFeedback { get; } - IntFeedback BassFeedback { get; } - IntFeedback TrebleFeedback { get; } - IntFeedback MaxVolumeFeedback { get; } - IntFeedback DefaultVolumeFeedback { get; } - } - - /// - /// Defines the contract for IHasVolumeDevice - /// - public interface IHasVolumeDevice - { - IBasicVolumeControls VolumeDevice { get; } - } - - /// - /// Identifies a device that contains audio zones - /// - public interface IAudioZones : IRouting - { - Dictionary Zone { get; } - } - - /// - /// Defines minimum functionality for an audio zone - /// - public interface IAudioZone : IBasicVolumeWithFeedback - { - void SelectInput(ushort input); - } -} \ No newline at end of file diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs index 80042352..81df6bac 100644 --- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs +++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs @@ -22,7 +22,7 @@ namespace PepperDash.Essentials.AppServer.Messengers /// The message path. /// The device. public DeviceVolumeMessenger(string key, string messagePath, IBasicVolumeControls device) - : base(key, messagePath, device as IKeyName) + : base(key, messagePath, device) { this.device = device; } diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IProjectorScreenLiftControlMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IProjectorScreenLiftControlMessenger.cs index 992de703..f63b4834 100644 --- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IProjectorScreenLiftControlMessenger.cs +++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IProjectorScreenLiftControlMessenger.cs @@ -85,7 +85,7 @@ namespace PepperDash.Essentials.AppServer.Messengers /// /// Gets or sets the InUpPosition /// - [JsonProperty("isInUpPosition", NullValueHandling = NullValueHandling.Ignore)] + [JsonProperty("inUpPosition", NullValueHandling = NullValueHandling.Ignore)] public bool? InUpPosition { get; set; } ///