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; }
///