diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/ContentTypes.cs b/src/PepperDash.Essentials.MobileControl.Messengers/ContentTypes.cs
index e555f11f..1c45d7bc 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/ContentTypes.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/ContentTypes.cs
@@ -3,29 +3,51 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.AppServer
{
+ ///
+ /// Represents the content of a source selection message
+ ///
public class SourceSelectMessageContent
{
-
+ ///
+ /// Gets or sets the key of the source list item to select
+ ///
[JsonProperty("sourceListItemKey")]
public string SourceListItemKey { get; set; }
+
+ ///
+ /// Gets or sets the key of the source list containing the item
+ ///
[JsonProperty("sourceListKey")]
public string SourceListKey { get; set; }
}
+ ///
+ /// Represents a direct routing operation between a source and destination
+ ///
public class DirectRoute
{
-
+ ///
+ /// Gets or sets the key of the source device
+ ///
[JsonProperty("sourceKey")]
public string SourceKey { get; set; }
+
+ ///
+ /// Gets or sets the key of the destination device
+ ///
[JsonProperty("destinationKey")]
public string DestinationKey { get; set; }
+
+ ///
+ /// Gets or sets the type of routing signal (Audio, Video, etc.)
+ ///
[JsonProperty("signalType")]
public eRoutingSignalType SignalType { get; set; }
}
///
- ///
+ /// Delegate for press and hold actions with boolean state parameter
///
- ///
+ /// The state of the press and hold action
public delegate void PressAndHoldAction(bool b);
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/DisplayBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/DisplayBaseMessenger.cs
index cc09a637..b028f2aa 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/DisplayBaseMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/DisplayBaseMessenger.cs
@@ -1,22 +1,35 @@
-using Newtonsoft.Json.Linq;
+using System.Linq;
+using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Core.Logging;
using PepperDash.Essentials.AppServer;
using PepperDash.Essentials.AppServer.Messengers;
-using System.Linq;
using DisplayBase = PepperDash.Essentials.Devices.Common.Displays.DisplayBase;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger that provides mobile control interface for display devices
+ ///
public class DisplayBaseMessenger : MessengerBase
{
+ ///
+ /// The display device this messenger is associated with
+ ///
private readonly DisplayBase display;
+ ///
+ /// Initializes a new instance of the DisplayBaseMessenger class
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing display control messages
+ /// The display device to control
public DisplayBaseMessenger(string key, string messagePath, DisplayBase device) : base(key, messagePath, device)
{
display = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IChannelMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IChannelMessenger.cs
index 4ba89800..82a3b517 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IChannelMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IChannelMessenger.cs
@@ -4,15 +4,28 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger that provides mobile control interface for devices with channel control functionality
+ ///
public class IChannelMessenger : MessengerBase
{
+ ///
+ /// The channel control device this messenger is associated with
+ ///
private readonly IChannel channelDevice;
+ ///
+ /// Initializes a new instance of the IChannelMessenger class
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing channel control messages
+ /// The device that implements channel control functionality
public IChannelMessenger(string key, string messagePath, IChannel device) : base(key, messagePath, device as IKeyName)
{
channelDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IColorMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IColorMessenger.cs
index 86df2590..f0012355 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IColorMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IColorMessenger.cs
@@ -4,14 +4,25 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger for devices that implement IColor interface
+ ///
public class IColorMessenger : MessengerBase
{
private readonly IColor colorDevice;
+
+ ///
+ /// Initializes a new instance of the IColorMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements IColor
public IColorMessenger(string key, string messagePath, IColor device) : base(key, messagePath, device as IKeyName)
{
colorDevice = device as IColor;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDPadMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDPadMessenger.cs
index 4af07703..6794cae7 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDPadMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDPadMessenger.cs
@@ -4,15 +4,28 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger that provides mobile control interface for devices with directional pad functionality
+ ///
public class IDPadMessenger : MessengerBase
{
+ ///
+ /// The directional pad device this messenger is associated with
+ ///
private readonly IDPad dpadDevice;
+
+ ///
+ /// Initializes a new instance of the IDPadMessenger class
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing directional pad messages
+ /// The device that implements directional pad functionality
public IDPadMessenger(string key, string messagePath, IDPad device) : base(key, messagePath, device as IKeyName)
{
dpadDevice = device;
}
-
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDvrMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDvrMessenger.cs
index 8e286979..d96342f1 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDvrMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDvrMessenger.cs
@@ -4,14 +4,25 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger for devices that implement IDvr interface
+ ///
public class IDvrMessenger : MessengerBase
{
private readonly IDvr dvrDevice;
+
+ ///
+ /// Initializes a new instance of the IDvrMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements IDvr
public IDvrMessenger(string key, string messagePath, IDvr device) : base(key, messagePath, device as IKeyName)
{
dvrDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IHasPowerMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IHasPowerMessenger.cs
index 39ed0e6f..8daed80f 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IHasPowerMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IHasPowerMessenger.cs
@@ -4,14 +4,28 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger that provides mobile control interface for devices with power control functionality
+ ///
public class IHasPowerMessenger : MessengerBase
{
+ ///
+ /// The power control device this messenger is associated with
+ ///
private readonly IHasPowerControl powerDevice;
+
+ ///
+ /// Initializes a new instance of the IHasPowerMessenger class
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing power control messages
+ /// The device that implements power control functionality
public IHasPowerMessenger(string key, string messagePath, IHasPowerControl device) : base(key, messagePath, device as IKeyName)
{
powerDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/INumericMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/INumericMessenger.cs
index 69b5bc9d..fc497d7e 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/INumericMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/INumericMessenger.cs
@@ -4,14 +4,28 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger that provides mobile control interface for devices with numeric keypad functionality
+ ///
public class INumericKeypadMessenger : MessengerBase
{
+ ///
+ /// The numeric keypad device this messenger is associated with
+ ///
private readonly INumericKeypad keypadDevice;
+
+ ///
+ /// Initializes a new instance of the INumericKeypadMessenger class
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing numeric keypad messages
+ /// The device that implements numeric keypad functionality
public INumericKeypadMessenger(string key, string messagePath, INumericKeypad device) : base(key, messagePath, device as IKeyName)
{
keypadDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ISetTopBoxControlsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ISetTopBoxControlsMessenger.cs
index 0e7c227b..76243786 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ISetTopBoxControlsMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ISetTopBoxControlsMessenger.cs
@@ -4,14 +4,25 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger for devices that implement ISetTopBoxControls interface
+ ///
public class ISetTopBoxControlsMessenger : MessengerBase
{
private readonly ISetTopBoxControls stbDevice;
+
+ ///
+ /// Initializes a new instance of the ISetTopBoxControlsMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements ISetTopBoxControls
public ISetTopBoxControlsMessenger(string key, string messagePath, ISetTopBoxControls device) : base(key, messagePath, device as IKeyName)
{
stbDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -32,6 +43,9 @@ namespace PepperDash.Essentials.Room.MobileControl
}
}
+ ///
+ /// State message for set top box controls
+ ///
public class SetTopBoxControlsState : DeviceStateMessageBase
{
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ITransportMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ITransportMessenger.cs
index 75f74418..9f5d42cb 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ITransportMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ITransportMessenger.cs
@@ -4,14 +4,28 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Room.MobileControl
{
+ ///
+ /// Messenger that provides mobile control interface for devices with transport control functionality
+ ///
public class ITransportMessenger : MessengerBase
{
+ ///
+ /// The transport control device this messenger is associated with
+ ///
private readonly ITransport transportDevice;
+
+ ///
+ /// Initializes a new instance of the ITransportMessenger class
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing transport control messages
+ /// The device that implements transport control functionality
public ITransportMessenger(string key, string messagePath, ITransport device) : base(key, messagePath, device as IKeyName)
{
transportDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/AudioCodecBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/AudioCodecBaseMessenger.cs
index 9a42141e..d29eede8 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/AudioCodecBaseMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/AudioCodecBaseMessenger.cs
@@ -1,8 +1,8 @@
-using Newtonsoft.Json.Linq;
+using System;
+using System.Linq;
+using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Devices.Common.AudioCodec;
using PepperDash.Essentials.Devices.Common.Codec;
-using System;
-using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers
{
@@ -29,6 +29,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
codec.CallStatusChange += Codec_CallStatusChange;
}
+ ///
+ /// Registers actions for handling audio codec operations.
+ /// Includes call control, status reporting, and audio codec management.
+ ///
protected override void RegisterActions()
{
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CameraBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CameraBaseMessenger.cs
index 36a94781..6e3bacd3 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CameraBaseMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CameraBaseMessenger.cs
@@ -1,11 +1,15 @@
-using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Devices.Common.Cameras;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for camera control operations.
+ /// Handles camera movement, zoom, preset management, and camera status reporting.
+ ///
public class CameraBaseMessenger : MessengerBase
{
///
@@ -45,6 +49,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
);
}
+ ///
+ /// Registers actions for handling camera control operations.
+ /// Includes camera movement, zoom, preset management, and full status reporting.
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceInfoMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceInfoMessenger.cs
index c588195e..153a4ed7 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceInfoMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceInfoMessenger.cs
@@ -1,14 +1,14 @@
-using Newtonsoft.Json;
+using System.Timers;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceInfo;
-using System.Timers;
namespace PepperDash.Essentials.AppServer.Messengers
{
- ///
- /// Facilitates communication of device information by providing mechanisms for status updates and device
- /// information reporting.
+ ///
+ /// Facilitates communication of device information by providing mechanisms for status updates and device
+ /// information reporting.
///
/// The class integrates with an to manage device-specific information. It uses a debounce timer to limit the
@@ -21,42 +21,42 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly Timer debounceTimer;
- ///
- /// Initializes a new instance of the class, which facilitates communication
- /// of device information.
- ///
- /// The messenger uses a debounce timer to limit the frequency of certain operations. The
- /// timer is initialized with a 1-second interval and is disabled by default.
- /// A unique identifier for the messenger instance.
- /// The path used for sending and receiving messages.
+ ///
+ /// Initializes a new instance of the class, which facilitates communication
+ /// of device information.
+ ///
+ /// The messenger uses a debounce timer to limit the frequency of certain operations. The
+ /// timer is initialized with a 1-second interval and is disabled by default.
+ /// A unique identifier for the messenger instance.
+ /// The path used for sending and receiving messages.
/// An implementation of that provides device-specific information.
public DeviceInfoMessenger(string key, string messagePath, IDeviceInfoProvider device) : base(key, messagePath, device as Device)
{
_deviceInfoProvider = device;
- debounceTimer = new Timer(1000)
- {
- Enabled = false,
- AutoReset = false
+ debounceTimer = new Timer(1000)
+ {
+ Enabled = false,
+ AutoReset = false
};
debounceTimer.Elapsed += DebounceTimer_Elapsed;
- }
-
- private void DebounceTimer_Elapsed(object sender, ElapsedEventArgs e)
- {
- PostStatusMessage(JToken.FromObject(new
- {
- deviceInfo = _deviceInfoProvider.DeviceInfo
- }));
- }
-
- ///
- /// Registers actions and event handlers for device information updates and status reporting.
- ///
- /// This method sets up actions for handling device status updates and reporting full
- /// device status. It also subscribes to the event to
- /// trigger debounced updates when the device information changes.
+ }
+
+ private void DebounceTimer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ PostStatusMessage(JToken.FromObject(new
+ {
+ deviceInfo = _deviceInfoProvider.DeviceInfo
+ }));
+ }
+
+ ///
+ /// Registers actions and event handlers for device information updates and status reporting.
+ ///
+ /// This method sets up actions for handling device status updates and reporting full
+ /// device status. It also subscribes to the event to
+ /// trigger debounced updates when the device information changes.
protected override void RegisterActions()
{
base.RegisterActions();
@@ -76,14 +76,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
- ///
- /// Represents a message containing the state information of a device, including detailed device information.
+ ///
+ /// Represents a message containing the state information of a device, including detailed device information.
///
/// This class is used to encapsulate the state of a device along with its associated
/// information. It extends to provide additional details about the
/// device.
public class DeviceInfoStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the device information.
+ ///
[JsonProperty("deviceInfo")]
public DeviceInfo DeviceInfo { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DevicePresetsModelMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DevicePresetsModelMessenger.cs
index 91b87a83..3e6229a9 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DevicePresetsModelMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DevicePresetsModelMessenger.cs
@@ -1,18 +1,28 @@
-using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Core.Logging;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using PepperDash.Essentials.Core.Presets;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for device preset management operations.
+ /// Handles preset selection, recall, and preset list management.
+ ///
public class DevicePresetsModelMessenger : MessengerBase
{
private readonly ITvPresetsProvider _presetsDevice;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The message path for preset control messages.
+ /// The device that provides preset functionality.
public DevicePresetsModelMessenger(string key, string messagePath, ITvPresetsProvider presetsDevice)
: base(key, messagePath, presetsDevice as Device)
{
@@ -40,6 +50,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
#region Overrides of MessengerBase
+ ///
+ /// Registers actions for handling device preset operations.
+ /// Includes preset selection, recall, and full status reporting.
+ ///
protected override void RegisterActions()
{
@@ -83,17 +97,32 @@ namespace PepperDash.Essentials.AppServer.Messengers
#endregion
}
+ ///
+ /// Represents a preset channel message for device preset operations.
+ ///
public class PresetChannelMessage
{
+ ///
+ /// Gets or sets the preset channel information.
+ ///
[JsonProperty("preset")]
public PresetChannel Preset;
+ ///
+ /// Gets or sets the device key associated with the preset.
+ ///
[JsonProperty("deviceKey")]
public string DeviceKey;
}
+ ///
+ /// Represents a preset state message containing favorite presets.
+ ///
public class PresetStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the list of favorite preset channels.
+ ///
[JsonProperty("favorites", NullValueHandling = NullValueHandling.Ignore)]
public List Favorites { get; set; } = new List();
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs
index 22f837c3..84c840f8 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/DeviceVolumeMessenger.cs
@@ -1,16 +1,26 @@
-using Newtonsoft.Json;
+using System;
+using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core;
-using System;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for device volume control operations.
+ /// Handles volume level adjustment, mute control, and volume status reporting.
+ ///
public class DeviceVolumeMessenger : MessengerBase
{
private readonly IBasicVolumeWithFeedback _localDevice;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The message path for volume control messages.
+ /// The device that provides volume control functionality.
public DeviceVolumeMessenger(string key, string messagePath, IBasicVolumeWithFeedback device)
: base(key, messagePath, device as IKeyName)
{
@@ -48,6 +58,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
#region Overrides of MessengerBase
+ ///
+ /// Registers actions for handling volume control operations.
+ /// Includes volume level adjustment, mute control, and full status reporting.
+ ///
protected override void RegisterActions()
{
AddAction("/fullStatus", (id, content) => SendStatus());
@@ -142,29 +156,56 @@ namespace PepperDash.Essentials.AppServer.Messengers
#endregion
}
+ ///
+ /// Represents a volume state message containing volume information.
+ ///
public class VolumeStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the volume information.
+ ///
[JsonProperty("volume", NullValueHandling = NullValueHandling.Ignore)]
public Volume Volume { get; set; }
}
+ ///
+ /// Represents volume control information including level, mute status, and units.
+ ///
public class Volume
{
+ ///
+ /// Gets or sets the volume level.
+ ///
[JsonProperty("level", NullValueHandling = NullValueHandling.Ignore)]
public int? Level { get; set; }
+ ///
+ /// Gets or sets a value indicating whether the device has mute capability.
+ ///
[JsonProperty("hasMute", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasMute { get; set; }
+ ///
+ /// Gets or sets a value indicating whether the device is currently muted.
+ ///
[JsonProperty("muted", NullValueHandling = NullValueHandling.Ignore)]
public bool? Muted { get; set; }
+ ///
+ /// Gets or sets the volume label for display purposes.
+ ///
[JsonProperty("label", NullValueHandling = NullValueHandling.Ignore)]
public string Label { get; set; }
+ ///
+ /// Gets or sets the raw volume value as a string.
+ ///
[JsonProperty("rawValue", NullValueHandling = NullValueHandling.Ignore)]
public string RawValue { get; set; }
+ ///
+ /// Gets or sets the volume level units.
+ ///
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("units", NullValueHandling = NullValueHandling.Ignore)]
public eVolumeLevelUnits? Units { get; set; }
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/GenericMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/GenericMessenger.cs
index 64624bfa..50a329a0 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/GenericMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/GenericMessenger.cs
@@ -2,12 +2,22 @@
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Generic messenger for basic device communication
+ ///
public class GenericMessenger : MessengerBase
{
+ ///
+ /// Initializes a new instance of the GenericMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Device to communicate with
+ /// Path for message routing
public GenericMessenger(string key, EssentialsDevice device, string messagePath) : base(key, messagePath, device)
{
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ICommunicationMonitorMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ICommunicationMonitorMessenger.cs
index 5ab81832..119b9ff3 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ICommunicationMonitorMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ICommunicationMonitorMessenger.cs
@@ -6,15 +6,29 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for communication monitoring operations.
+ /// Handles communication status reporting and monitoring feedback.
+ ///
public class ICommunicationMonitorMessenger : MessengerBase
{
private readonly ICommunicationMonitor _communicationMonitor;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The message path for communication monitor messages.
+ /// The device that provides communication monitoring functionality.
public ICommunicationMonitorMessenger(string key, string messagePath, ICommunicationMonitor device) : base(key, messagePath, device as IKeyName)
{
_communicationMonitor = device;
}
+ ///
+ /// Registers actions for handling communication monitoring operations.
+ /// Includes full status reporting for communication monitoring data.
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -50,11 +64,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
///
public class CommunicationMonitorState : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the communication monitor properties.
+ ///
[JsonProperty("commMonitor", NullValueHandling = NullValueHandling.Ignore)]
public CommunicationMonitorProps CommunicationMonitor { get; set; }
}
+ ///
+ /// Represents the properties of a communication monitor.
+ ///
public class CommunicationMonitorProps
{ ///
/// For devices that implement ICommunicationMonitor, reports the online status of the device
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IDspPresetsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IDspPresetsMessenger.cs
index e40cd8eb..f3e58956 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IDspPresetsMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IDspPresetsMessenger.cs
@@ -1,20 +1,34 @@
-using Newtonsoft.Json;
+using System.Collections.Generic;
+using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Essentials.Core;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for DSP preset management operations.
+ /// Handles DSP preset selection, recall, and preset list management.
+ ///
public class IDspPresetsMessenger : MessengerBase
{
private readonly IDspPresets device;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The message path for DSP preset control messages.
+ /// The device that provides DSP preset functionality.
public IDspPresetsMessenger(string key, string messagePath, IDspPresets device)
: base(key, messagePath, device as IKeyName)
{
this.device = device;
}
+ ///
+ /// Registers actions for handling DSP preset operations.
+ /// Includes preset selection, recall, and full status reporting.
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -42,8 +56,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// Represents a DSP presets state message containing available presets.
+ ///
public class IHasDspPresetsStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the dictionary of available DSP presets.
+ ///
[JsonProperty("presets")]
public Dictionary Presets { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasCurrentSourceInfoMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasCurrentSourceInfoMessenger.cs
index 24f1f461..d7102418 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasCurrentSourceInfoMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasCurrentSourceInfoMessenger.cs
@@ -5,14 +5,25 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Messenger for devices that implement IHasCurrentSourceInfoChange interface
+ ///
public class IHasCurrentSourceInfoMessenger : MessengerBase
{
private readonly IHasCurrentSourceInfoChange sourceDevice;
+
+ ///
+ /// Initializes a new instance of the IHasCurrentSourceInfoMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements IHasCurrentSourceInfoChange
public IHasCurrentSourceInfoMessenger(string key, string messagePath, IHasCurrentSourceInfoChange device) : base(key, messagePath, device as IKeyName)
{
sourceDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -46,11 +57,20 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// State message for current source information
+ ///
public class CurrentSourceStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the current source key
+ ///
[JsonProperty("currentSourceKey", NullValueHandling = NullValueHandling.Ignore)]
public string CurrentSourceKey { get; set; }
+ ///
+ /// Gets or sets the current source information
+ ///
[JsonProperty("currentSource")]
public SourceListItem CurrentSource { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasInputsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasInputsMessenger.cs
index 8eb693d5..b22dd881 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasInputsMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasInputsMessenger.cs
@@ -1,28 +1,33 @@
-using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Core.Logging;
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Messenger for devices that implement IHasInputs interface
+ ///
+ /// Type of the key used for inputs
public class IHasInputsMessenger : MessengerBase
- {
- private readonly IHasInputs itemDevice;
+ {
+ private readonly IHasInputs itemDevice;
///
/// Constructs a messenger for a device that implements IHasInputs
///
- ///
- ///
- ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements IHasInputs
public IHasInputsMessenger(string key, string messagePath, IHasInputs device) : base(key, messagePath, device)
{
- itemDevice = device;
+ itemDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -83,17 +88,34 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// State message for devices with inputs
+ ///
+ /// Type of the key used for inputs
public class IHasInputsStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the inputs
+ ///
[JsonProperty("inputs")]
public Inputs Inputs { get; set; }
}
+ ///
+ /// Represents a collection of inputs
+ ///
+ /// Type of the key used for inputs
public class Inputs
{
+ ///
+ /// Gets or sets the items dictionary
+ ///
[JsonProperty("items")]
public Dictionary Items { get; set; }
+ ///
+ /// Gets or sets the current item
+ ///
[JsonProperty("currentItem")]
public TKey CurrentItem { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasPowerControlWithFeedbackMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasPowerControlWithFeedbackMessenger.cs
index 7fb39c8c..493c03d3 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasPowerControlWithFeedbackMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasPowerControlWithFeedbackMessenger.cs
@@ -5,16 +5,29 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for power control operations with feedback.
+ /// Handles power on/off commands and power state feedback reporting.
+ ///
public class IHasPowerControlWithFeedbackMessenger : MessengerBase
{
private readonly IHasPowerControlWithFeedback _powerControl;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The message path for power control messages.
+ /// The device that provides power control functionality.
public IHasPowerControlWithFeedbackMessenger(string key, string messagePath, IHasPowerControlWithFeedback powerControl)
: base(key, messagePath, powerControl as IKeyName)
{
_powerControl = powerControl;
}
+ ///
+ /// Sends the full power control status to connected clients.
+ ///
public void SendFullStatus()
{
var messageObj = new PowerControlWithFeedbackStateMessage
@@ -25,6 +38,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
PostStatusMessage(messageObj);
}
+ ///
+ /// Registers actions for handling power control operations.
+ /// Includes power on, power off, power toggle, and full status reporting.
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -44,8 +61,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// Represents a power control state message containing power state information.
+ ///
public class PowerControlWithFeedbackStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the power state of the device.
+ ///
[JsonProperty("powerState", NullValueHandling = NullValueHandling.Ignore)]
public bool? PowerState { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasScheduleAwarenessMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasScheduleAwarenessMessenger.cs
index 80481470..1f5a9e50 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasScheduleAwarenessMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IHasScheduleAwarenessMessenger.cs
@@ -1,16 +1,28 @@
-using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Devices.Common.Codec;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Messenger for devices that implement IHasScheduleAwareness interface
+ ///
public class IHasScheduleAwarenessMessenger : MessengerBase
{
+ ///
+ /// Gets the schedule source device
+ ///
public IHasScheduleAwareness ScheduleSource { get; private set; }
+ ///
+ /// Initializes a new instance of the IHasScheduleAwarenessMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Device that implements IHasScheduleAwareness
+ /// Path for message routing
public IHasScheduleAwarenessMessenger(string key, IHasScheduleAwareness scheduleSource, string messagePath)
: base(key, messagePath, scheduleSource as IKeyName)
{
@@ -19,6 +31,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
ScheduleSource.CodecSchedule.MeetingEventChange += new EventHandler(CodecSchedule_MeetingEventChange);
}
+ ///
protected override void RegisterActions()
{
AddAction("/schedule/fullStatus", (id, content) => SendFullScheduleObject());
@@ -55,26 +68,50 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// Full schedule message containing meetings and warning minutes
+ ///
public class FullScheduleMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the list of meetings
+ ///
[JsonProperty("meetings", NullValueHandling = NullValueHandling.Ignore)]
public List Meetings { get; set; }
+ ///
+ /// Gets or sets the meeting warning minutes
+ ///
[JsonProperty("meetingWarningMinutes", NullValueHandling = NullValueHandling.Ignore)]
public int MeetingWarningMinutes { get; set; }
}
+ ///
+ /// Message containing meeting change information
+ ///
public class MeetingChangeMessage
{
+ ///
+ /// Gets or sets the meeting change details
+ ///
[JsonProperty("meetingChange", NullValueHandling = NullValueHandling.Ignore)]
public MeetingChange MeetingChange { get; set; }
}
+ ///
+ /// Represents a meeting change with type and meeting details
+ ///
public class MeetingChange
{
+ ///
+ /// Gets or sets the change type
+ ///
[JsonProperty("changeType", NullValueHandling = NullValueHandling.Ignore)]
public string ChangeType { get; set; }
+ ///
+ /// Gets or sets the meeting details
+ ///
[JsonProperty("meeting", NullValueHandling = NullValueHandling.Ignore)]
public Meeting Meeting { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ILevelControlsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ILevelControlsMessenger.cs
index 4fd3515a..68860052 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ILevelControlsMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ILevelControlsMessenger.cs
@@ -1,20 +1,31 @@
-using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.Linq;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
-using System.Collections.Generic;
-using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Messenger for devices that implement ILevelControls interface
+ ///
public class ILevelControlsMessenger : MessengerBase
{
private ILevelControls levelControlsDevice;
+
+ ///
+ /// Initializes a new instance of the ILevelControlsMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements ILevelControls
public ILevelControlsMessenger(string key, string messagePath, ILevelControls device) : base(key, messagePath, device as IKeyName)
{
levelControlsDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -74,17 +85,32 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// State message for level controls
+ ///
public class LevelControlStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the level controls
+ ///
[JsonProperty("levelControls")]
public Dictionary Levels { get; set; }
}
+ ///
+ /// Request message for level control operations
+ ///
public class LevelControlRequestMessage
{
+ ///
+ /// Gets or sets the control key
+ ///
[JsonProperty("key")]
public string Key { get; set; }
+ ///
+ /// Gets or sets the level
+ ///
[JsonProperty("level", NullValueHandling = NullValueHandling.Ignore)]
public ushort? Level { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IMatrixRoutingMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IMatrixRoutingMessenger.cs
index 2a9669f1..35a6ceb2 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IMatrixRoutingMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/IMatrixRoutingMessenger.cs
@@ -1,12 +1,12 @@
-using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Routing;
using Serilog.Events;
-using System;
-using System.Collections.Generic;
-using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers
{
@@ -16,11 +16,19 @@ namespace PepperDash.Essentials.AppServer.Messengers
public class IMatrixRoutingMessenger : MessengerBase
{
private readonly IMatrixRouting matrixDevice;
+
+ ///
+ /// Initializes a new instance of the IMatrixRoutingMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements IMatrixRouting
public IMatrixRoutingMessenger(string key, string messagePath, IMatrixRouting device) : base(key, messagePath, device as IKeyName)
{
matrixDevice = device;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -82,86 +90,159 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// State message for matrix routing information
+ ///
public class MatrixStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the outputs dictionary
+ ///
[JsonProperty("outputs")]
public Dictionary Outputs;
+ ///
+ /// Gets or sets the inputs dictionary
+ ///
[JsonProperty("inputs")]
public Dictionary Inputs;
}
+ ///
+ /// Represents a routing input slot
+ ///
public class RoutingInput
{
private IRoutingInputSlot _input;
+ ///
+ /// Gets the transmit device key
+ ///
[JsonProperty("txDeviceKey", NullValueHandling = NullValueHandling.Ignore)]
public string TxDeviceKey => _input?.TxDeviceKey;
+ ///
+ /// Gets the slot number
+ ///
[JsonProperty("slotNumber", NullValueHandling = NullValueHandling.Ignore)]
public int? SlotNumber => _input?.SlotNumber;
+ ///
+ /// Gets the supported signal types
+ ///
[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
[JsonProperty("supportedSignalTypes", NullValueHandling = NullValueHandling.Ignore)]
public eRoutingSignalType? SupportedSignalTypes => _input?.SupportedSignalTypes;
+ ///
+ /// Gets the name
+ ///
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
public string Name => _input?.Name;
+ ///
+ /// Gets the online status
+ ///
[JsonProperty("isOnline", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsOnline => _input?.IsOnline.BoolValue;
+ ///
+ /// Gets the video sync detected status
+ ///
[JsonProperty("videoSyncDetected", NullValueHandling = NullValueHandling.Ignore)]
public bool? VideoSyncDetected => _input?.VideoSyncDetected;
+ ///
+ /// Gets the key
+ ///
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
public string Key => _input?.Key;
+ ///
+ /// Initializes a new instance of the RoutingInput class
+ ///
+ /// The input slot
public RoutingInput(IRoutingInputSlot input)
{
_input = input;
}
}
+ ///
+ /// Represents a routing output slot
+ ///
public class RoutingOutput
{
private IRoutingOutputSlot _output;
-
+ ///
+ /// Initializes a new instance of the RoutingOutput class
+ ///
+ /// The output slot
public RoutingOutput(IRoutingOutputSlot output)
{
_output = output;
}
+ ///
+ /// Gets the receive device key
+ ///
[JsonProperty("rxDeviceKey")]
public string RxDeviceKey => _output.RxDeviceKey;
+ ///
+ /// Gets the current routes
+ ///
[JsonProperty("currentRoutes")]
public Dictionary CurrentRoutes => _output.CurrentRoutes.ToDictionary(kvp => kvp.Key.ToString(), kvp => new RoutingInput(kvp.Value));
+ ///
+ /// Gets the slot number
+ ///
[JsonProperty("slotNumber")]
public int SlotNumber => _output.SlotNumber;
+ ///
+ /// Gets the supported signal types
+ ///
[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
[JsonProperty("supportedSignalTypes")]
public eRoutingSignalType SupportedSignalTypes => _output.SupportedSignalTypes;
+ ///
+ /// Gets the name
+ ///
[JsonProperty("name")]
public string Name => _output.Name;
+ ///
+ /// Gets the key
+ ///
[JsonProperty("key")]
public string Key => _output.Key;
}
+ ///
+ /// Request for matrix routing
+ ///
public class MatrixRouteRequest
{
+ ///
+ /// Gets or sets the output key
+ ///
[JsonProperty("outputKey")]
public string OutputKey { get; set; }
+ ///
+ /// Gets or sets the input key
+ ///
[JsonProperty("inputKey")]
public string InputKey { get; set; }
+ ///
+ /// Gets or sets the route type
+ ///
[JsonProperty("routeType")]
public eRoutingSignalType RouteType { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs
index d7c4a59f..af74a929 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ISelectableItemsMessenger.cs
@@ -1,14 +1,18 @@
-using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Core.Logging;
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Messenger for devices that implement ISelectableItems interface
+ ///
+ /// Type of the key used for selectable items
public class ISelectableItemsMessenger : MessengerBase
- {
+ {
private readonly ISelectableItems itemDevice;
private readonly string _propName;
@@ -16,16 +20,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
///
/// Constructs a messenger for a device that implements ISelectableItems
///
- ///
- ///
- ///
- ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Device that implements ISelectableItems
+ /// Property name for JSON serialization
public ISelectableItemsMessenger(string key, string messagePath, ISelectableItems device, string propName) : base(key, messagePath, device as IKeyName)
{
itemDevice = device;
_propName = propName;
}
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -83,11 +88,21 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// State message for selectable items
+ ///
+ /// Type of the key used for selectable items
public class ISelectableItemsStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the items dictionary
+ ///
[JsonProperty("items")]
public Dictionary Items { get; set; }
+ ///
+ /// Gets or sets the current item
+ ///
[JsonProperty("currentItem")]
public TKey CurrentItem { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ITechPasswordMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ITechPasswordMessenger.cs
index 5b15d7ab..87450258 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ITechPasswordMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ITechPasswordMessenger.cs
@@ -4,16 +4,26 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Messenger for devices that implement ITechPassword interface
+ ///
public class ITechPasswordMessenger : MessengerBase
{
private readonly ITechPassword _room;
+ ///
+ /// Initializes a new instance of the ITechPasswordMessenger class
+ ///
+ /// Unique identifier for the messenger
+ /// Path for message routing
+ /// Room that implements ITechPassword
public ITechPasswordMessenger(string key, string messagePath, ITechPassword room)
: base(key, messagePath, room as IKeyName)
{
_room = room;
}
+ ///
protected override void RegisterActions()
{
@@ -64,23 +74,44 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
+ ///
+ /// State message for tech password information
+ ///
public class ITechPasswordStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the tech password length
+ ///
[JsonProperty("techPasswordLength", NullValueHandling = NullValueHandling.Ignore)]
public int? TechPasswordLength { get; set; }
}
+ ///
+ /// Event message for tech password validation result
+ ///
public class ITechPasswordEventMessage : DeviceEventMessageBase
{
+ ///
+ /// Gets or sets whether the password is valid
+ ///
[JsonProperty("isValid", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsValid { get; set; }
}
+ ///
+ /// Content for setting tech password
+ ///
internal class SetTechPasswordContent
{
+ ///
+ /// Gets or sets the old password
+ ///
[JsonProperty("oldPassword")]
public string OldPassword { get; set; }
+ ///
+ /// Gets or sets the new password
+ ///
[JsonProperty("newPassword")]
public string NewPassword { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/MessengerBase.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/MessengerBase.cs
index c3a612bc..343ad33c 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/MessengerBase.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/MessengerBase.cs
@@ -1,41 +1,57 @@
-using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Core.Logging;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers
{
///
- /// Provides a messaging bridge
+ /// Provides a messaging bridge between mobile control clients and Essentials devices.
+ /// This abstract base class handles message routing, action registration, and status updates.
///
public abstract class MessengerBase : EssentialsDevice, IMobileControlMessenger
{
+ ///
+ /// The device that this messenger is associated with
+ ///
protected IKeyName _device;
+ ///
+ /// List of interfaces implemented by the associated device
+ ///
private readonly List _deviceInterfaces;
+ ///
+ /// Dictionary of registered actions, keyed by path
+ ///
private readonly Dictionary> _actions = new Dictionary>();
+ ///
+ /// Gets the key of the associated device
+ ///
public string DeviceKey => _device?.Key ?? "";
///
- ///
+ /// Gets the mobile control app server controller
///
-
public IMobileControl AppServerController { get; private set; }
+ ///
+ /// Gets the message path for this messenger
+ ///
public string MessagePath { get; private set; }
///
- ///
+ /// Initializes a new instance of the MessengerBase class
///
- ///
- ///
+ /// The unique key for this messenger
+ /// The message path for routing messages
+ /// Thrown when messagePath is null or empty
protected MessengerBase(string key, string messagePath)
: base(key)
{
@@ -47,6 +63,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
MessagePath = messagePath;
}
+ ///
+ /// Initializes a new instance of the MessengerBase class with an associated device
+ ///
+ /// The unique key for this messenger
+ /// The message path for routing messages
+ /// The device to associate with this messenger
protected MessengerBase(string key, string messagePath, IKeyName device)
: this(key, messagePath)
{
@@ -56,7 +78,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
///
- /// Gets the interfaces implmented on the device
+ /// Gets the interfaces implented on the device
///
///
///
@@ -93,6 +115,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
action(id, content);
}
+ ///
+ /// Adds an action to be executed when a message is received at the specified path
+ ///
+ /// The path to register the action for
+ /// The action to execute when the path is matched
protected void AddAction(string path, Action action)
{
if (_actions.ContainsKey(path))
@@ -104,11 +131,19 @@ namespace PepperDash.Essentials.AppServer.Messengers
_actions.Add(path, action);
}
+ ///
+ /// Gets a list of all registered action paths
+ ///
+ /// A list of action paths
public List GetActionPaths()
{
return _actions.Keys.ToList();
}
+ ///
+ /// Removes an action from the specified path
+ ///
+ /// The path to remove the action from
protected void RemoveAction(string path)
{
if (!_actions.ContainsKey(path))
@@ -122,7 +157,6 @@ namespace PepperDash.Essentials.AppServer.Messengers
///
/// Implemented in extending classes. Wire up API calls and feedback here
///
- ///
protected virtual void RegisterActions()
{
@@ -131,8 +165,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
///
/// Helper for posting status message
///
- ///
- ///
+ /// The device state message to post
+ /// Optional client ID to send the message to a specific client
protected void PostStatusMessage(DeviceStateMessageBase message, string clientId = null)
{
try
@@ -153,16 +187,22 @@ namespace PepperDash.Essentials.AppServer.Messengers
message.Name = _device.Name;
- var token = JToken.FromObject(message);
-
+ var token = JToken.FromObject(message);
+
PostStatusMessage(token, MessagePath, clientId);
}
catch (Exception ex)
{
- this.LogError(ex, "Exception posting status message for {messagePath} to {clientId}", MessagePath, clientId ?? "all clients");
+ this.LogError(ex, "Exception posting status message for {messagePath} to {clientId}", MessagePath, clientId ?? "all clients");
}
}
+ ///
+ /// Posts a status message with a specific message type
+ ///
+ /// The message type to send
+ /// The device state message to post
+ /// Optional client ID to send the message to a specific client
protected void PostStatusMessage(string type, DeviceStateMessageBase deviceState, string clientId = null)
{
try
@@ -182,10 +222,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
catch (Exception ex)
{
- this.LogError(ex, "Exception posting status message for {type} to {clientId}", type, clientId ?? "all clients");
+ this.LogError(ex, "Exception posting status message for {type} to {clientId}", type, clientId ?? "all clients");
}
}
+ ///
+ /// Posts a status message with JSON content
+ ///
+ /// The JSON content to send
+ /// The message type (defaults to MessagePath if empty)
+ /// Optional client ID to send the message to a specific client
protected void PostStatusMessage(JToken content, string type = "", string clientId = null)
{
try
@@ -198,6 +244,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// Posts an event message for the device
+ ///
+ /// The device event message to post
protected void PostEventMessage(DeviceEventMessageBase message)
{
message.Key = _device.Key;
@@ -211,6 +261,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
});
}
+ ///
+ /// Posts an event message with a specific event type
+ ///
+ /// The device event message to post
+ /// The event type to use
protected void PostEventMessage(DeviceEventMessageBase message, string eventType)
{
message.Key = _device.Key;
@@ -226,6 +281,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
});
}
+ ///
+ /// Posts an event message with only an event type
+ ///
+ /// The event type to post
protected void PostEventMessage(string eventType)
{
AppServerController?.SendMessageObject(new MobileControlMessage
@@ -237,6 +296,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
+ ///
+ /// Base class for device messages containing common properties like key, name, and message type
+ ///
public abstract class DeviceMessageBase
{
///
@@ -257,21 +319,28 @@ namespace PepperDash.Essentials.AppServer.Messengers
[JsonProperty("messageType")]
public string MessageType => GetType().Name;
+ ///
+ /// Gets or sets the base path for the message
+ ///
[JsonProperty("messageBasePath")]
public string MessageBasePath { get; set; }
}
///
- /// Base class for state messages that includes the type of message and the implmented interfaces
+ /// Base class for state messages that includes the type of message and the implemented interfaces
///
public class DeviceStateMessageBase : DeviceMessageBase
{
///
- /// The interfaces implmented by the device sending the messsage
+ /// The interfaces implented by the device sending the messsage
///
[JsonProperty("interfaces")]
public List Interfaces { get; private set; }
+ ///
+ /// Sets the interfaces implemented by the device
+ ///
+ /// List of interface names to set
public void SetInterfaces(List interfaces)
{
Interfaces = interfaces;
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/PressAndHoldHandler.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/PressAndHoldHandler.cs
index 9ec2a4e4..aefb8024 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/PressAndHoldHandler.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/PressAndHoldHandler.cs
@@ -1,19 +1,34 @@
-using Crestron.SimplSharp;
+using System;
+using System.Collections.Generic;
+using Crestron.SimplSharp;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Static handler for managing press and hold button actions with automatic timeout functionality
+ ///
public static class PressAndHoldHandler
{
+ ///
+ /// The interval in milliseconds for button heartbeat timeout
+ ///
private const long ButtonHeartbeatInterval = 1000;
+ ///
+ /// Dictionary of active timers for pressed actions, keyed by device key
+ ///
private static readonly Dictionary _pushedActions = new Dictionary();
+ ///
+ /// Dictionary of action handlers for different button states
+ ///
private static readonly Dictionary>> _pushedActionHandlers;
+ ///
+ /// Static constructor that initializes the action handlers for different button states
+ ///
static PressAndHoldHandler()
{
_pushedActionHandlers = new Dictionary>>
@@ -24,6 +39,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
};
}
+ ///
+ /// Adds a timer for a device key and executes the action with true state
+ ///
+ /// The unique key for the device
+ /// The action to execute with boolean state
private static void AddTimer(string deviceKey, Action action)
{
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Attempting to add timer for {deviceKey}", deviceKey);
@@ -50,6 +70,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
_pushedActions.Add(deviceKey, cancelTimer);
}
+ ///
+ /// Resets an existing timer for the specified device key
+ ///
+ /// The unique key for the device
+ /// The action associated with the timer
private static void ResetTimer(string deviceKey, Action action)
{
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Attempting to reset timer for {deviceKey}", deviceKey);
@@ -65,6 +90,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
cancelTimer.Reset(ButtonHeartbeatInterval);
}
+ ///
+ /// Stops and removes the timer for the specified device key
+ ///
+ /// The unique key for the device
+ /// The action to execute with false state before stopping
private static void StopTimer(string deviceKey, Action action)
{
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Attempting to stop timer for {deviceKey}", deviceKey);
@@ -82,6 +112,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
_pushedActions.Remove(deviceKey);
}
+ ///
+ /// Gets the appropriate press and hold handler for the specified value
+ ///
+ /// The button state value (pressed, held, released)
+ /// The handler action for the specified state, or null if not found
public static Action> GetPressAndHoldHandler(string value)
{
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Getting press and hold handler for {value}", value);
@@ -97,6 +132,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
return handler;
}
+ ///
+ /// Handles press and hold messages by parsing the content and executing the appropriate handler
+ ///
+ /// The unique key for the device
+ /// The JSON content containing the button state
+ /// The action to execute with boolean state
public static void HandlePressAndHold(string deviceKey, JToken content, Action action)
{
var msg = content.ToObject>();
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLAtcMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLAtcMessenger.cs
index 3222289a..fd212f56 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLAtcMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLAtcMessenger.cs
@@ -1,32 +1,39 @@
-using Crestron.SimplSharpPro.DeviceSupport;
+using System;
+using System.Collections.Generic;
+using Crestron.SimplSharpPro.DeviceSupport;
using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Devices.Common.Codec;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// SIMPL messenger for audio-only conference devices that provides audio calling functionality
+ ///
// ReSharper disable once InconsistentNaming
public class SIMPLAtcMessenger : MessengerBase
{
+ ///
+ /// The EISC (Ethernet Intersystem Communication) device
+ ///
private readonly BasicTriList _eisc;
+ ///
+ /// Gets the join map for SIMPL ATC operations
+ ///
public SIMPLAtcJoinMap JoinMap { get; private set; }
-
///
- ///
+ /// The current active call item for audio calls
///
private readonly CodecActiveCallItem _currentCallItem;
-
///
- ///
+ /// Initializes a new instance of the SIMPLAtcMessenger class
///
- ///
- ///
- ///
+ /// Unique identifier for the messenger
+ /// The EISC device for communication
+ /// Path for message routing
public SIMPLAtcMessenger(string key, BasicTriList eisc, string messagePath)
: base(key, messagePath)
{
@@ -38,7 +45,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
///
- ///
+ /// Sends the current status of the audio conference device to connected clients
///
private void SendFullStatus()
{
@@ -53,9 +60,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
///
- ///
+ /// Registers actions and feedback handlers for the SIMPL ATC messenger
///
- ///
protected override void RegisterActions()
{
//EISC.SetStringSigAction(SCurrentDialString, s => PostStatusMessage(new { currentDialString = s }));
@@ -133,7 +139,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
///
- ///
+ /// Sends the current calls list to connected clients
///
private void SendCallsList()
{
@@ -145,9 +151,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
///
- /// Turns the
+ /// Gets the current call list based on the call status
///
- ///
+ /// A list containing the current call item if connected, or an empty list if disconnected
private List GetCurrentCallList()
{
return _currentCallItem.Status == eCodecCallStatus.Disconnected
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLCameraMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLCameraMessenger.cs
index bf4eb765..3fd2cb58 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLCameraMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLCameraMessenger.cs
@@ -1,14 +1,18 @@
-using Crestron.SimplSharpPro.DeviceSupport;
+using System;
+using System.Collections.Generic;
+using Crestron.SimplSharpPro.DeviceSupport;
using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Bridges;
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using PepperDash.Essentials.Devices.Common.Cameras;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for camera control operations in SIMPL-based systems.
+ /// Handles camera movement, zoom, preset management, and mode control.
+ ///
// ReSharper disable once InconsistentNaming
public class SIMPLCameraMessenger : MessengerBase
{
@@ -16,7 +20,13 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly CameraControllerJoinMap _joinMap;
-
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The basic tri-list for SIMPL communication.
+ /// The message path for camera control messages.
+ /// The starting join number for SIMPL signal mapping.
public SIMPLCameraMessenger(string key, BasicTriList eisc, string messagePath, uint joinStart)
: base(key, messagePath)
{
@@ -32,6 +42,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
+ ///
+ /// Registers actions for handling camera control operations.
+ /// Includes camera movement, zoom, preset management, and mode control actions.
+ ///
protected override void RegisterActions()
{
AddAction("/fullStatus", (id, content) => SendCameraFullMessageObject());
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLDirectRouteMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLDirectRouteMessenger.cs
index b0ddc47a..cd0d6dcf 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLDirectRouteMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLDirectRouteMessenger.cs
@@ -1,19 +1,35 @@
-using Crestron.SimplSharpPro.DeviceSupport;
+using System.Collections.Generic;
+using Crestron.SimplSharpPro.DeviceSupport;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for direct routing operations in SIMPL-based systems.
+ /// Handles source selection, destination routing, and advanced sharing mode functionality.
+ ///
public class SimplDirectRouteMessenger : MessengerBase
{
private readonly BasicTriList _eisc;
+ ///
+ /// Gets the join map for SIMPL direct route actions.
+ ///
public MobileControlSIMPLRunDirectRouteActionJoinMap JoinMap { get; private set; }
+ ///
+ /// Gets or sets the dictionary of destination items for routing operations.
+ ///
public Dictionary DestinationList { get; set; }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The basic tri-list for SIMPL communication.
+ /// The message path for routing messages.
public SimplDirectRouteMessenger(string key, BasicTriList eisc, string messagePath) : base(key, messagePath)
{
_eisc = eisc;
@@ -25,6 +41,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
#region Overrides of MessengerBase
+ ///
+ /// Registers actions for handling direct route messaging operations.
+ /// Includes audio source selection, full status reporting, and advanced sharing mode controls.
+ ///
protected override void RegisterActions()
{
Debug.Console(2, "********** Direct Route Messenger CustomRegisterWithAppServer **********");
@@ -92,6 +112,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
));
}
+ ///
+ /// Registers routing actions for each destination in the destination list.
+ /// Sets up feedback handlers and source selection actions for individual destinations.
+ ///
public void RegisterForDestinationPaths()
{
//handle routing feedback from SIMPL
@@ -114,6 +138,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
#endregion
+ ///
+ /// Updates the source selection for a specific destination and posts a status message.
+ ///
+ /// The key of the selected source.
+ /// The key of the destination being updated.
private void UpdateSourceForDestination(string sourceKey, string destKey)
{
PostStatusMessage(JToken.FromObject(new
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLRouteMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLRouteMessenger.cs
index d6d59cc0..7c0e5efb 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLRouteMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLRouteMessenger.cs
@@ -6,21 +6,34 @@ using PepperDash.Essentials.Core.DeviceTypeInterfaces;
namespace PepperDash.Essentials.AppServer.Messengers
{
-
+ ///
+ /// Provides messaging capabilities for routing operations in SIMPL-based systems.
+ /// Handles source selection and routing status feedback.
+ ///
public class SIMPLRouteMessenger : MessengerBase
{
private readonly BasicTriList _eisc;
private readonly uint _joinStart;
+ ///
+ /// Defines the string join mappings for SIMPL routing operations.
+ ///
public class StringJoin
{
///
- /// 1
+ /// Join number for current source information (1).
///
public const uint CurrentSource = 1;
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The basic tri-list for SIMPL communication.
+ /// The message path for routing messages.
+ /// The starting join number for SIMPL signal mapping.
public SIMPLRouteMessenger(string key, BasicTriList eisc, string messagePath, uint joinStart)
: base(key, messagePath)
{
@@ -30,6 +43,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
_eisc.SetStringSigAction(_joinStart + StringJoin.CurrentSource, SendRoutingFullMessageObject);
}
+ ///
+ /// Registers actions for handling routing operations and status reporting.
+ /// Includes full status requests and source selection actions.
+ ///
protected override void RegisterActions()
{
AddAction("/fullStatus",
@@ -43,6 +60,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
});
}
+ ///
+ /// Unregisters this messenger from the mobile control app server.
+ /// Removes all registered actions and clears SIMPL signal actions.
+ ///
+ /// The mobile control app server controller.
public void CustomUnregisterWithAppServer(IMobileControl appServerController)
{
appServerController.RemoveAction(MessagePath + "/fullStatus");
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLVtcMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLVtcMessenger.cs
index a9872285..9fd00229 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLVtcMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SIMPLVtcMessenger.cs
@@ -1,33 +1,51 @@
-using Crestron.SimplSharpPro.DeviceSupport;
+using System;
+using System.Collections.Generic;
+using Crestron.SimplSharpPro.DeviceSupport;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Devices.Common.Cameras;
using PepperDash.Essentials.Devices.Common.Codec;
-using System;
-using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// SIMPL messenger for video conference devices that provides video calling and camera control functionality
+ ///
// ReSharper disable once InconsistentNaming
public class SIMPLVtcMessenger : MessengerBase
{
+ ///
+ /// The EISC (Ethernet Intersystem Communication) device
+ ///
private readonly BasicTriList _eisc;
+ ///
+ /// Gets the join map for SIMPL VTC operations
+ ///
public SIMPLVtcJoinMap JoinMap { get; private set; }
+ ///
+ /// The current active call item for video calls
+ ///
private readonly CodecActiveCallItem _currentCallItem;
+ ///
+ /// The incoming call item for video calls
+ ///
private CodecActiveCallItem _incomingCallItem;
+ ///
+ /// The previous directory length for tracking changes
+ ///
private ushort _previousDirectoryLength = 701;
///
- ///
+ /// Initializes a new instance of the SIMPLVtcMessenger class
///
- ///
- ///
- ///
+ /// Unique identifier for the messenger
+ /// The EISC device for communication
+ /// Path for message routing
public SIMPLVtcMessenger(string key, BasicTriList eisc, string messagePath)
: base(key, messagePath)
{
@@ -39,9 +57,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
///
- ///
+ /// Registers actions and feedback handlers for the SIMPL VTC messenger
///
- ///
protected override void RegisterActions()
{
_eisc.SetStringSigAction(JoinMap.HookState.JoinNumber, s =>
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ShadeBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ShadeBaseMessenger.cs
index ff41670a..32d59204 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ShadeBaseMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/ShadeBaseMessenger.cs
@@ -1,20 +1,34 @@
-using Newtonsoft.Json;
+using System;
+using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Essentials.Core.Shades;
-using System;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for shade control operations.
+ /// Handles shade open, close, and stop commands for shades that support these operations.
+ ///
public class IShadesOpenCloseStopMessenger : MessengerBase
{
private readonly IShadesOpenCloseStop device;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The shade device that provides open/close/stop functionality.
+ /// The message path for shade control messages.
public IShadesOpenCloseStopMessenger(string key, IShadesOpenCloseStop shades, string messagePath)
: base(key, messagePath, shades as IKeyName)
{
device = shades;
}
+ ///
+ /// Registers actions for handling shade control operations.
+ /// Includes shade open, close, stop, and full status reporting.
+ ///
protected override void RegisterActions()
{
base.RegisterActions();
@@ -86,14 +100,26 @@ namespace PepperDash.Essentials.AppServer.Messengers
}
}
+ ///
+ /// Represents a shade state message containing shade status and control information.
+ ///
public class ShadeBaseStateMessage : DeviceStateMessageBase
{
+ ///
+ /// Gets or sets the label for the middle button control.
+ ///
[JsonProperty("middleButtonLabel", NullValueHandling = NullValueHandling.Ignore)]
public string MiddleButtonLabel { get; set; }
+ ///
+ /// Gets or sets a value indicating whether the shade is open.
+ ///
[JsonProperty("isOpen", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsOpen { get; set; }
+ ///
+ /// Gets or sets a value indicating whether the shade is closed.
+ ///
[JsonProperty("isClosed", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsClosed { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SystemMonitorMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SystemMonitorMessenger.cs
index 2cb2ced0..a01b9c6c 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SystemMonitorMessenger.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/SystemMonitorMessenger.cs
@@ -1,17 +1,28 @@
-using Crestron.SimplSharp;
+using System;
+using System.Threading.Tasks;
+using Crestron.SimplSharp;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core;
using PepperDash.Essentials.Core.Monitoring;
-using System;
-using System.Threading.Tasks;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Provides messaging capabilities for system monitoring operations.
+ /// Handles system performance metrics, program status reporting, and monitoring data communication.
+ ///
public class SystemMonitorMessenger : MessengerBase
{
private readonly SystemMonitorController systemMonitor;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The unique identifier for this messenger instance.
+ /// The system monitor controller for monitoring operations.
+ /// The message path for system monitor messages.
+ /// Thrown when sysMon is null.
public SystemMonitorMessenger(string key, SystemMonitorController sysMon, string messagePath)
: base(key, messagePath, sysMon)
{
@@ -66,7 +77,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private void SendSystemMonitorStatusMessage()
{
// This takes a while, launch a new thread
-
+
Task.Run(() => PostStatusMessage(JToken.FromObject(new SystemMonitorStateMessage
{
@@ -80,29 +91,54 @@ namespace PepperDash.Essentials.AppServer.Messengers
));
}
+ ///
+ /// Registers actions for handling system monitor operations.
+ /// Includes full status reporting for system monitoring data.
+ ///
protected override void RegisterActions()
{
AddAction("/fullStatus", (id, content) => SendFullStatusMessage());
}
}
+ ///
+ /// Represents the system monitor state message containing system information and version details.
+ ///
public class SystemMonitorStateMessage
{
+ ///
+ /// Gets or sets the system time zone offset.
+ ///
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public int TimeZone { get; set; }
+ ///
+ /// Gets or sets the system time zone name.
+ ///
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string TimeZoneName { get; set; }
+ ///
+ /// Gets or sets the IO controller version information.
+ ///
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string IoControllerVersion { get; set; }
+ ///
+ /// Gets or sets the SNMP version information.
+ ///
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string SnmpVersion { get; set; }
+ ///
+ /// Gets or sets the BACnet version information.
+ ///
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string BacnetVersion { get; set; }
+ ///
+ /// Gets or sets the controller version information.
+ ///
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string ControllerVersion { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlMessage.cs b/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlMessage.cs
index 6e92d9da..f9dcdd19 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlMessage.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlMessage.cs
@@ -4,14 +4,26 @@ using PepperDash.Essentials.Core.DeviceTypeInterfaces;
namespace PepperDash.Essentials.AppServer.Messengers
{
+ ///
+ /// Represents a mobile control message that can be sent between clients and the system
+ ///
public class MobileControlMessage : IMobileControlMessage
{
+ ///
+ /// Gets or sets the message type/path for routing
+ ///
[JsonProperty("type")]
public string Type { get; set; }
+ ///
+ /// Gets or sets the client ID this message is intended for (null for broadcast)
+ ///
[JsonProperty("clientId")]
public string ClientId { get; set; }
+ ///
+ /// Gets or sets the JSON content of the message
+ ///
[JsonProperty("content")]
public JToken Content { get; set; }
}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlSimpleContent.cs b/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlSimpleContent.cs
index 1d804758..bf67ea65 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlSimpleContent.cs
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/MobileControlSimpleContent.cs
@@ -2,8 +2,15 @@
namespace PepperDash.Essentials.AppServer
{
+ ///
+ /// Generic container for simple mobile control message content with a single value
+ ///
+ /// The type of the value contained in the message
public class MobileControlSimpleContent
{
+ ///
+ /// Gets or sets the value of the message content
+ ///
[JsonProperty("value", NullValueHandling = NullValueHandling.Ignore)]
public T Value { get; set; }
}