docs: complete XML documentation for all projects with inheritdoc tags

Co-authored-by: andrew-welker <1765622+andrew-welker@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-07-22 15:53:01 +00:00
parent 260677a37f
commit 7987eb8f9b
485 changed files with 8099 additions and 2490 deletions

View File

@@ -2,18 +2,33 @@
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a AuthorizationResponse
/// </summary>
public class AuthorizationResponse
{
[JsonProperty("authorized")]
/// <summary>
/// Gets or sets the Authorized
/// </summary>
public bool Authorized { get; set; }
[JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Reason
/// </summary>
public string Reason { get; set; } = null;
}
/// <summary>
/// Represents a AuthorizationRequest
/// </summary>
public class AuthorizationRequest
{
[JsonProperty("grantCode")]
/// <summary>
/// Gets or sets the GrantCode
/// </summary>
public string GrantCode { get; set; }
}
}

View File

@@ -3,9 +3,7 @@
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a room whose configuration is derived from runtime data,
/// perhaps from another program, and that the data may not be fully
/// available at startup.
/// Defines the contract for IDelayedConfiguration
/// </summary>
public interface IDelayedConfiguration
{

View File

@@ -4,8 +4,14 @@ using System;
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a MobileControlAction
/// </summary>
public class MobileControlAction : IMobileControlAction
{
/// <summary>
/// Gets or sets the Messenger
/// </summary>
public IMobileControlMessenger Messenger { get; private set; }
public Action<string, string, JToken> Action { get; private set; }

View File

@@ -5,7 +5,7 @@ using System.Collections.Generic;
namespace PepperDash.Essentials
{
/// <summary>
///
/// Represents a MobileControlConfig
/// </summary>
public class MobileControlConfig
{
@@ -19,21 +19,39 @@ namespace PepperDash.Essentials
public MobileControlDirectServerPropertiesConfig DirectServer { get; set; }
[JsonProperty("applicationConfig")]
/// <summary>
/// Gets or sets the ApplicationConfig
/// </summary>
public MobileControlApplicationConfig ApplicationConfig { get; set; } = null;
[JsonProperty("enableApiServer")]
/// <summary>
/// Gets or sets the EnableApiServer
/// </summary>
public bool EnableApiServer { get; set; } = true;
}
/// <summary>
/// Represents a MobileControlDirectServerPropertiesConfig
/// </summary>
public class MobileControlDirectServerPropertiesConfig
{
[JsonProperty("enableDirectServer")]
/// <summary>
/// Gets or sets the EnableDirectServer
/// </summary>
public bool EnableDirectServer { get; set; }
[JsonProperty("port")]
/// <summary>
/// Gets or sets the Port
/// </summary>
public int Port { get; set; }
[JsonProperty("logging")]
/// <summary>
/// Gets or sets the Logging
/// </summary>
public MobileControlLoggingConfig Logging { get; set; }
[JsonProperty("automaticallyForwardPortToCSLAN")]
@@ -45,36 +63,60 @@ namespace PepperDash.Essentials
}
}
/// <summary>
/// Represents a MobileControlLoggingConfig
/// </summary>
public class MobileControlLoggingConfig
{
[JsonProperty("enableRemoteLogging")]
/// <summary>
/// Gets or sets the EnableRemoteLogging
/// </summary>
public bool EnableRemoteLogging { get; set; }
[JsonProperty("host")]
/// <summary>
/// Gets or sets the Host
/// </summary>
public string Host { get; set; }
[JsonProperty("port")]
/// <summary>
/// Gets or sets the Port
/// </summary>
public int Port { get; set; }
}
/// <summary>
/// Represents a MobileControlRoomBridgePropertiesConfig
/// </summary>
public class MobileControlRoomBridgePropertiesConfig
{
[JsonProperty("key")]
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; set; }
[JsonProperty("roomKey")]
/// <summary>
/// Gets or sets the RoomKey
/// </summary>
public string RoomKey { get; set; }
}
/// <summary>
///
/// Represents a MobileControlSimplRoomBridgePropertiesConfig
/// </summary>
public class MobileControlSimplRoomBridgePropertiesConfig
{
[JsonProperty("eiscId")]
/// <summary>
/// Gets or sets the EiscId
/// </summary>
public string EiscId { get; set; }
}
@@ -84,6 +126,9 @@ namespace PepperDash.Essentials
public string ApiPath { get; set; }
[JsonProperty("gatewayAppPath")]
/// <summary>
/// Gets or sets the GatewayAppPath
/// </summary>
public string GatewayAppPath { get; set; }
[JsonProperty("enableDev")]
@@ -91,7 +136,7 @@ namespace PepperDash.Essentials
[JsonProperty("logoPath")]
/// <summary>
/// Client logo to be used in header and/or splash screen
/// Gets or sets the LogoPath
/// </summary>
public string LogoPath { get; set; }
@@ -106,35 +151,68 @@ namespace PepperDash.Essentials
public Dictionary<string, McMode> Modes { get; set; }
[JsonProperty("enableRemoteLogging")]
/// <summary>
/// Gets or sets the Logging
/// </summary>
public bool Logging { get; set; }
[JsonProperty("partnerMetadata", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the PartnerMetadata
/// </summary>
public List<MobileControlPartnerMetadata> PartnerMetadata { get; set; }
}
/// <summary>
/// Represents a MobileControlPartnerMetadata
/// </summary>
public class MobileControlPartnerMetadata
{
[JsonProperty("role")]
/// <summary>
/// Gets or sets the Role
/// </summary>
public string Role { get; set; }
[JsonProperty("description")]
/// <summary>
/// Gets or sets the Description
/// </summary>
public string Description { get; set; }
[JsonProperty("logoPath")]
/// <summary>
/// Gets or sets the LogoPath
/// </summary>
public string LogoPath { get; set; }
}
/// <summary>
/// Represents a McMode
/// </summary>
public class McMode
{
[JsonProperty("listPageText")]
/// <summary>
/// Gets or sets the ListPageText
/// </summary>
public string ListPageText { get; set; }
[JsonProperty("loginHelpText")]
/// <summary>
/// Gets or sets the LoginHelpText
/// </summary>
public string LoginHelpText { get; set; }
[JsonProperty("passcodePageText")]
/// <summary>
/// Gets or sets the PasscodePageText
/// </summary>
public string PasscodePageText { get; set; }
}
/// <summary>
/// Enumeration of MCIconSet values
/// </summary>
public enum MCIconSet
{
GOOGLE,

View File

@@ -10,6 +10,9 @@ using System.Linq;
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a MobileControlDeviceFactory
/// </summary>
public class MobileControlDeviceFactory : EssentialsDeviceFactory<MobileControlSystemController>
{
public MobileControlDeviceFactory()
@@ -17,6 +20,10 @@ namespace PepperDash.Essentials
TypeNames = new List<string> { "appserver", "mobilecontrol", "webserver" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
try

View File

@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace PepperDash.Essentials
{
/// <summary>
/// Used to overlay additional config data from mobile control on
/// Represents a MobileControlEssentialsConfig
/// </summary>
public class MobileControlEssentialsConfig : EssentialsConfig
{
@@ -35,11 +35,14 @@ namespace PepperDash.Essentials
}
/// <summary>
/// Used to add any additional runtime information from mobile control to be send to the API
/// Represents a MobileControlRuntimeInfo
/// </summary>
public class MobileControlRuntimeInfo
{
[JsonProperty("pluginVersion")]
/// <summary>
/// Gets or sets the PluginVersion
/// </summary>
public string PluginVersion { get; set; }
[JsonProperty("essentialsVersion")]
@@ -49,6 +52,9 @@ namespace PepperDash.Essentials
public string PepperDashCoreVersion { get; set; }
[JsonProperty("essentialsPlugins")]
/// <summary>
/// Gets or sets the EssentialsPlugins
/// </summary>
public List<LoadedAssembly> EssentialsPlugins { get; set; }
}
}

View File

@@ -6,6 +6,9 @@ using System.Reflection;
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a MobileControlFactory
/// </summary>
public class MobileControlFactory
{
public MobileControlFactory()

View File

@@ -6,7 +6,7 @@ using System;
namespace PepperDash.Essentials.Room.MobileControl
{
/// <summary>
/// Represents a generic device connection through to and EISC for SIMPL01
/// Represents a MobileControlSimplDeviceBridge
/// </summary>
public class MobileControlSimplDeviceBridge : Device, IChannel, INumericKeypad
{
@@ -24,31 +24,49 @@ namespace PepperDash.Essentials.Room.MobileControl
#region IChannel Members
/// <summary>
/// ChannelUp method
/// </summary>
public void ChannelUp(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// ChannelDown method
/// </summary>
public void ChannelDown(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// LastChannel method
/// </summary>
public void LastChannel(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Guide method
/// </summary>
public void Guide(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Info method
/// </summary>
public void Info(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Exit method
/// </summary>
public void Exit(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
@@ -58,51 +76,81 @@ namespace PepperDash.Essentials.Room.MobileControl
#region INumericKeypad Members
/// <summary>
/// Digit0 method
/// </summary>
public void Digit0(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit1 method
/// </summary>
public void Digit1(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit2 method
/// </summary>
public void Digit2(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit3 method
/// </summary>
public void Digit3(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit4 method
/// </summary>
public void Digit4(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit5 method
/// </summary>
public void Digit5(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit6 method
/// </summary>
public void Digit6(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit7 method
/// </summary>
public void Digit7(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit8 method
/// </summary>
public void Digit8(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
}
/// <summary>
/// Digit9 method
/// </summary>
public void Digit9(bool pressRelease)
{
_eisc.SetBool(1111, pressRelease);
@@ -118,6 +166,9 @@ namespace PepperDash.Essentials.Room.MobileControl
get { throw new NotImplementedException(); }
}
/// <summary>
/// KeypadAccessoryButton1 method
/// </summary>
public void KeypadAccessoryButton1(bool pressRelease)
{
throw new NotImplementedException();
@@ -133,6 +184,9 @@ namespace PepperDash.Essentials.Room.MobileControl
get { throw new NotImplementedException(); }
}
/// <summary>
/// KeypadAccessoryButton2 method
/// </summary>
public void KeypadAccessoryButton2(bool pressRelease)
{
throw new NotImplementedException();

View File

@@ -40,6 +40,9 @@ using WebSocketSharp;
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a MobileControlSystemController
/// </summary>
public class MobileControlSystemController : EssentialsDevice, IMobileControl
{
private bool _initialized = false;
@@ -70,6 +73,9 @@ namespace PepperDash.Essentials
private bool _disableReconnect;
private WebSocket _wsClient2;
/// <summary>
/// Gets or sets the ApiService
/// </summary>
public MobileControlApiService ApiService { get; private set; }
public List<MobileControlBridgeBase> RoomBridges => _roomBridges;
@@ -80,6 +86,9 @@ namespace PepperDash.Essentials
private readonly CCriticalSection _wsCriticalSection = new CCriticalSection();
/// <summary>
/// Gets or sets the SystemUrl
/// </summary>
public string SystemUrl; //set only from SIMPL Bridge!
public bool Connected => _wsClient2 != null && _wsClient2.IsAlive;
@@ -117,6 +126,9 @@ namespace PepperDash.Essentials
}
}
/// <summary>
/// Gets or sets the ApiOnlineAndAuthorized
/// </summary>
public BoolFeedback ApiOnlineAndAuthorized { get; private set; }
/// <summary>
@@ -1085,8 +1097,14 @@ namespace PepperDash.Essentials
);
}
/// <summary>
/// Gets or sets the Config
/// </summary>
public MobileControlConfig Config { get; private set; }
/// <summary>
/// Gets or sets the Host
/// </summary>
public string Host { get; private set; }
public string ClientAppUrl => Config.ClientAppUrl;
@@ -1099,11 +1117,17 @@ namespace PepperDash.Essentials
SendMessageObject(new MobileControlMessage { Type = "/system/roomCombinationChanged" });
}
/// <summary>
/// CheckForDeviceMessenger method
/// </summary>
public bool CheckForDeviceMessenger(string key)
{
return _messengers.ContainsKey(key);
}
/// <summary>
/// AddDeviceMessenger method
/// </summary>
public void AddDeviceMessenger(IMobileControlMessenger messenger)
{
if (_messengers.ContainsKey(messenger.Key))
@@ -1177,6 +1201,10 @@ namespace PepperDash.Essentials
messenger.RegisterWithAppServer(this);
}
/// <summary>
/// Initialize method
/// </summary>
/// <inheritdoc />
public override void Initialize()
{
foreach (var messenger in _messengers)
@@ -1219,6 +1247,9 @@ namespace PepperDash.Essentials
#region IMobileControl Members
/// <summary>
/// GetAppServer method
/// </summary>
public static IMobileControl GetAppServer()
{
try
@@ -1281,6 +1312,9 @@ namespace PepperDash.Essentials
return true;
}
/// <summary>
/// LinkSystemMonitorToAppServer method
/// </summary>
public void LinkSystemMonitorToAppServer()
{
if (CrestronEnvironment.DevicePlatform != eDevicePlatform.Appliance)
@@ -1372,6 +1406,9 @@ namespace PepperDash.Essentials
CleanUpWebsocketClient();
}
/// <summary>
/// PrintActionDictionaryPaths method
/// </summary>
public void PrintActionDictionaryPaths(object o)
{
CrestronConsole.ConsoleCommandResponse("ActionDictionary Contents:\r\n");
@@ -1443,6 +1480,9 @@ namespace PepperDash.Essentials
/// Removes an action from the dictionary
/// </summary>
/// <param name="key"></param>
/// <summary>
/// RemoveAction method
/// </summary>
public void RemoveAction(string key)
{
if (_actionDictionary.ContainsKey(key))
@@ -1456,6 +1496,9 @@ namespace PepperDash.Essentials
return _roomBridges.FirstOrDefault((r) => r.RoomKey.Equals(key));
}
/// <summary>
/// GetRoomMessenger method
/// </summary>
public IMobileControlRoomMessenger GetRoomMessenger(string key)
{
return _roomBridges.FirstOrDefault((r) => r.RoomKey.Equals(key));
@@ -1667,7 +1710,7 @@ Mobile Control Direct Server Infromation:
}
/// <summary>
/// Registers the room with the server
/// RegisterSystemToServer method
/// </summary>
public void RegisterSystemToServer()
{
@@ -1900,6 +1943,9 @@ Mobile Control Direct Server Infromation:
SendMessageObject(msg);
}
/// <summary>
/// GetConfigWithPluginVersion method
/// </summary>
public MobileControlEssentialsConfig GetConfigWithPluginVersion()
{
// Populate the application name and version number
@@ -1932,6 +1978,9 @@ Mobile Control Direct Server Infromation:
return confObject;
}
/// <summary>
/// SetClientUrl method
/// </summary>
public void SetClientUrl(string path, string roomKey = null)
{
var message = new MobileControlMessage
@@ -1947,6 +1996,9 @@ Mobile Control Direct Server Infromation:
/// Sends any object type to server
/// </summary>
/// <param name="o"></param>
/// <summary>
/// SendMessageObject method
/// </summary>
public void SendMessageObject(IMobileControlMessage o)
{
@@ -1969,6 +2021,9 @@ Mobile Control Direct Server Infromation:
}
/// <summary>
/// SendMessageObjectToDirectClient method
/// </summary>
public void SendMessageObjectToDirectClient(object o)
{
if (
@@ -2167,6 +2222,9 @@ Mobile Control Direct Server Infromation:
action(code.Value<string>(), qrChecksum.Value<string>());
}
/// <summary>
/// HandleClientMessage method
/// </summary>
public void HandleClientMessage(string message)
{
_receiveQueue.Enqueue(new ProcessStringMessage(message, ParseStreamRx));
@@ -2330,6 +2388,9 @@ Mobile Control Direct Server Infromation:
}
}
/// <summary>
/// Represents a ClientSpecificUpdateRequest
/// </summary>
public class ClientSpecificUpdateRequest
{
public ClientSpecificUpdateRequest(Action<string> action)
@@ -2337,9 +2398,15 @@ Mobile Control Direct Server Infromation:
ResponseMethod = action;
}
/// <summary>
/// Gets or sets the ResponseMethod
/// </summary>
public Action<string> ResponseMethod { get; private set; }
}
/// <summary>
/// Represents a UserCodeChanged
/// </summary>
public class UserCodeChanged
{
public Action<string, string> UpdateUserCode { get; private set; }

View File

@@ -20,15 +20,33 @@ namespace PepperDash.Essentials.RoomBridges
public event EventHandler<EventArgs> AppUrlChanged;
/// <summary>
/// Gets or sets the Parent
/// </summary>
public IMobileControl Parent { get; private set; }
/// <summary>
/// Gets or sets the AppUrl
/// </summary>
public string AppUrl { get; private set; }
/// <summary>
/// Gets or sets the UserCode
/// </summary>
public string UserCode { get; private set; }
/// <summary>
/// Gets or sets the QrCodeUrl
/// </summary>
public string QrCodeUrl { get; protected set; }
/// <summary>
/// Gets or sets the QrCodeChecksum
/// </summary>
public string QrCodeChecksum { get; protected set; }
/// <summary>
/// Gets or sets the McServerUrl
/// </summary>
public string McServerUrl { get; private set; }
public abstract string RoomName { get; }
@@ -50,6 +68,9 @@ namespace PepperDash.Essentials.RoomBridges
/// as adding actions to parent
/// </summary>
/// <param name="parent"></param>
/// <summary>
/// AddParent method
/// </summary>
public virtual void AddParent(IMobileControl parent)
{
Parent = parent;
@@ -62,6 +83,9 @@ namespace PepperDash.Essentials.RoomBridges
/// fire method UserCodeChange. Override that to handle changes
/// </summary>
/// <param name="code"></param>
/// <summary>
/// SetUserCode method
/// </summary>
public void SetUserCode(string code)
{
var changed = UserCode != code;

View File

@@ -25,11 +25,20 @@ using ShadeBase = PepperDash.Essentials.Devices.Common.Shades.ShadeBase;
namespace PepperDash.Essentials.RoomBridges
{
/// <summary>
/// Represents a MobileControlEssentialsRoomBridge
/// </summary>
public class MobileControlEssentialsRoomBridge : MobileControlBridgeBase
{
private List<JoinToken> _touchPanelTokens = new List<JoinToken>();
/// <summary>
/// Gets or sets the Room
/// </summary>
public IEssentialsRoom Room { get; private set; }
/// <summary>
/// Gets or sets the DefaultRoomKey
/// </summary>
public string DefaultRoomKey { get; private set; }
/// <summary>
///
@@ -292,6 +301,10 @@ namespace PepperDash.Essentials.RoomBridges
/// Override of base: calls base to add parent and then registers actions and events.
/// </summary>
/// <param name="parent"></param>
/// <summary>
/// AddParent method
/// </summary>
/// <inheritdoc />
public override void AddParent(MobileControlSystemController parent)
{
base.AddParent(parent);
@@ -780,9 +793,15 @@ namespace PepperDash.Essentials.RoomBridges
}
/// <summary>
/// Represents a RoomStateMessage
/// </summary>
public class RoomStateMessage : DeviceStateMessageBase
{
[JsonProperty("configuration", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Configuration
/// </summary>
public RoomConfiguration Configuration { get; set; }
[JsonProperty("activityMode", NullValueHandling = NullValueHandling.Ignore)]
@@ -796,8 +815,14 @@ namespace PepperDash.Essentials.RoomBridges
[JsonProperty("isCoolingDown", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsCoolingDown { get; set; }
[JsonProperty("selectedSourceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the SelectedSourceKey
/// </summary>
public string SelectedSourceKey { get; set; }
[JsonProperty("share", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Share
/// </summary>
public ShareState Share { get; set; }
[JsonProperty("volumes", NullValueHandling = NullValueHandling.Ignore)]
@@ -807,9 +832,15 @@ namespace PepperDash.Essentials.RoomBridges
public bool? IsInCall { get; set; }
}
/// <summary>
/// Represents a ShareState
/// </summary>
public class ShareState
{
[JsonProperty("currentShareText", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the CurrentShareText
/// </summary>
public string CurrentShareText { get; set; }
[JsonProperty("enabled", NullValueHandling = NullValueHandling.Ignore)]
public bool? Enabled { get; set; }
@@ -818,7 +849,7 @@ namespace PepperDash.Essentials.RoomBridges
}
/// <summary>
/// Represents the capabilities of the room and the associated device info
/// Represents a RoomConfiguration
/// </summary>
public class RoomConfiguration
{
@@ -841,32 +872,62 @@ namespace PepperDash.Essentials.RoomBridges
public bool? HasRoutingControls { get; set; }
[JsonProperty("touchpanelKeys", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the TouchpanelKeys
/// </summary>
public List<string> TouchpanelKeys { get; set; }
[JsonProperty("zoomRoomControllerKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the ZoomRoomControllerKey
/// </summary>
public string ZoomRoomControllerKey { get; set; }
[JsonProperty("ciscoNavigatorKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the CiscoNavigatorKey
/// </summary>
public string CiscoNavigatorKey { get; set; }
[JsonProperty("videoCodecKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the VideoCodecKey
/// </summary>
public string VideoCodecKey { get; set; }
[JsonProperty("audioCodecKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the AudioCodecKey
/// </summary>
public string AudioCodecKey { get; set; }
[JsonProperty("matrixRoutingKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the MatrixRoutingKey
/// </summary>
public string MatrixRoutingKey { get; set; }
[JsonProperty("endpointKeys", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the EndpointKeys
/// </summary>
public List<string> EndpointKeys { get; set; }
[JsonProperty("accessoryDeviceKeys", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the AccessoryDeviceKeys
/// </summary>
public List<string> AccessoryDeviceKeys { get; set; }
[JsonProperty("defaultDisplayKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the DefaultDisplayKey
/// </summary>
public string DefaultDisplayKey { get; set; }
[JsonProperty("destinations", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<eSourceListItemDestinationTypes, string> Destinations { get; set; }
[JsonProperty("environmentalDevices", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the EnvironmentalDevices
/// </summary>
public List<EnvironmentalDeviceConfiguration> EnvironmentalDevices { get; set; }
[JsonProperty("sourceList", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<string, SourceListItem> SourceList { get; set; }
@@ -875,22 +936,37 @@ namespace PepperDash.Essentials.RoomBridges
public Dictionary<string, DestinationListItem> DestinationList { get; set; }
[JsonProperty("audioControlPointList", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the AudioControlPointList
/// </summary>
public AudioControlPointListItem AudioControlPointList { get; set; }
[JsonProperty("cameraList", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<string, CameraListItem> CameraList { get; set; }
[JsonProperty("defaultPresentationSourceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the DefaultPresentationSourceKey
/// </summary>
public string DefaultPresentationSourceKey { get; set; }
[JsonProperty("helpMessage", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the HelpMessage
/// </summary>
public string HelpMessage { get; set; }
[JsonProperty("techPassword", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the TechPassword
/// </summary>
public string TechPassword { get; set; }
[JsonProperty("uiBehavior", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the UiBehavior
/// </summary>
public EssentialsRoomUiBehaviorConfig UiBehavior { get; set; }
[JsonProperty("supportsAdvancedSharing", NullValueHandling = NullValueHandling.Ignore)]
@@ -899,6 +975,9 @@ namespace PepperDash.Essentials.RoomBridges
public bool? UserCanChangeShareMode { get; set; }
[JsonProperty("roomCombinerKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the RoomCombinerKey
/// </summary>
public string RoomCombinerKey { get; set; }
public RoomConfiguration()
@@ -910,13 +989,22 @@ namespace PepperDash.Essentials.RoomBridges
}
}
/// <summary>
/// Represents a EnvironmentalDeviceConfiguration
/// </summary>
public class EnvironmentalDeviceConfiguration
{
[JsonProperty("deviceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the DeviceKey
/// </summary>
public string DeviceKey { get; private set; }
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("deviceType", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the DeviceType
/// </summary>
public eEnvironmentalDeviceTypes DeviceType { get; private set; }
public EnvironmentalDeviceConfiguration(string key, eEnvironmentalDeviceTypes type)
@@ -926,6 +1014,9 @@ namespace PepperDash.Essentials.RoomBridges
}
}
/// <summary>
/// Enumeration of eEnvironmentalDeviceTypes values
/// </summary>
public enum eEnvironmentalDeviceTypes
{
None,
@@ -935,25 +1026,52 @@ namespace PepperDash.Essentials.RoomBridges
Relay,
}
/// <summary>
/// Represents a ApiTouchPanelToken
/// </summary>
public class ApiTouchPanelToken
{
[JsonProperty("touchPanels", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the TouchPanels
/// </summary>
public List<JoinToken> TouchPanels { get; set; } = new List<JoinToken>();
[JsonProperty("userAppUrl", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the UserAppUrl
/// </summary>
public string UserAppUrl { get; set; } = "";
}
#if SERIES3
/// <summary>
/// Represents a SourceSelectMessageContent
/// </summary>
public class SourceSelectMessageContent
{
/// <summary>
/// Gets or sets the SourceListItem
/// </summary>
public string SourceListItem { get; set; }
/// <summary>
/// Gets or sets the SourceListKey
/// </summary>
public string SourceListKey { get; set; }
}
/// <summary>
/// Represents a DirectRoute
/// </summary>
public class DirectRoute
{
/// <summary>
/// Gets or sets the SourceKey
/// </summary>
public string SourceKey { get; set; }
/// <summary>
/// Gets or sets the DestinationKey
/// </summary>
public string DestinationKey { get; set; }
}
@@ -961,6 +1079,9 @@ namespace PepperDash.Essentials.RoomBridges
///
/// </summary>
/// <param name="b"></param>
/// <summary>
/// Delegate for PressAndHoldAction
/// </summary>
public delegate void PressAndHoldAction(bool b);
#endif
}

View File

@@ -21,6 +21,9 @@ using System.Collections.Generic;
namespace PepperDash.Essentials.Room.MobileControl
{
// ReSharper disable once InconsistentNaming
/// <summary>
/// Represents a MobileControlSIMPLRoomBridge
/// </summary>
public class MobileControlSIMPLRoomBridge : MobileControlBridgeBase, IDelayedConfiguration
{
private const int SupportedDisplayCount = 10;
@@ -30,18 +33,25 @@ namespace PepperDash.Essentials.Room.MobileControl
/// </summary>
public event EventHandler<EventArgs> ConfigurationIsReady;
/// <summary>
/// Gets or sets the Eisc
/// </summary>
public ThreeSeriesTcpIpEthernetIntersystemCommunications Eisc { get; private set; }
/// <summary>
/// Gets or sets the JoinMap
/// </summary>
public MobileControlSIMPLRoomJoinMap JoinMap { get; private set; }
public Dictionary<string, MessengerBase> DeviceMessengers { get; private set; }
/// <summary>
///
/// Gets or sets the ConfigIsLoaded
/// </summary>
public bool ConfigIsLoaded { get; private set; }
/// <inheritdoc />
public override string RoomName
{
get
@@ -51,6 +61,7 @@ namespace PepperDash.Essentials.Room.MobileControl
}
}
/// <inheritdoc />
public override string RoomKey
{
get { return "room1"; }
@@ -127,6 +138,9 @@ namespace PepperDash.Essentials.Room.MobileControl
/// parent controller and link them up.
/// </summary>
/// <returns></returns>
/// <summary>
/// CustomActivate method
/// </summary>
public override bool CustomActivate()
{
Debug.Console(0, this, "Final activation. Setting up actions and feedbacks");

View File

@@ -3,7 +3,7 @@
namespace PepperDash.Essentials.Room.MobileControl
{
/// <summary>
/// Contains all of the default joins that map to API funtions
/// Represents a SourceDeviceMapDictionary
/// </summary>
public class SourceDeviceMapDictionary : Dictionary<string, uint>
{

View File

@@ -6,6 +6,9 @@ using System.Threading.Tasks;
namespace PepperDash.Essentials.Services
{
/// <summary>
/// Represents a MobileControlApiService
/// </summary>
public class MobileControlApiService
{
private readonly HttpClient _client;

View File

@@ -2,6 +2,9 @@
namespace PepperDash.Essentials.Touchpanel
{
/// <summary>
/// Defines the contract for ITheme
/// </summary>
public interface ITheme : IKeyed
{
string Theme { get; }

View File

@@ -3,6 +3,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Touchpanel
{
/// <summary>
/// Defines the contract for ITswAppControl
/// </summary>
public interface ITswAppControl : IKeyed
{
BoolFeedback AppOpenFeedback { get; }
@@ -14,6 +17,9 @@ namespace PepperDash.Essentials.Touchpanel
void OpenApp();
}
/// <summary>
/// Defines the contract for ITswZoomControl
/// </summary>
public interface ITswZoomControl : IKeyed
{
BoolFeedback ZoomIncomingCallFeedback { get; }

View File

@@ -6,6 +6,9 @@ using PepperDash.Essentials.AppServer.Messengers;
namespace PepperDash.Essentials.Touchpanel
{
/// <summary>
/// Represents a ITswAppControlMessenger
/// </summary>
public class ITswAppControlMessenger : MessengerBase
{
private readonly ITswAppControl _appControl;
@@ -51,6 +54,9 @@ namespace PepperDash.Essentials.Touchpanel
}
}
/// <summary>
/// Represents a TswAppStateMessage
/// </summary>
public class TswAppStateMessage : DeviceStateMessageBase
{
[JsonProperty("appOpen", NullValueHandling = NullValueHandling.Ignore)]

View File

@@ -7,6 +7,9 @@ using PepperDash.Essentials.AppServer.Messengers;
namespace PepperDash.Essentials.Touchpanel
{
/// <summary>
/// Represents a ITswZoomControlMessenger
/// </summary>
public class ITswZoomControlMessenger : MessengerBase
{
private readonly ITswZoomControl _zoomControl;
@@ -62,6 +65,9 @@ namespace PepperDash.Essentials.Touchpanel
}
}
/// <summary>
/// Represents a TswZoomStateMessage
/// </summary>
public class TswZoomStateMessage : DeviceStateMessageBase
{
[JsonProperty("inCall", NullValueHandling = NullValueHandling.Ignore)]

View File

@@ -30,7 +30,7 @@ namespace PepperDash.Essentials.Touchpanel
private string _appUrl;
/// <summary>
/// Gets feedback for the current application URL.
/// Gets or sets the AppUrlFeedback
/// </summary>
public StringFeedback AppUrlFeedback { get; private set; }
@@ -65,12 +65,12 @@ namespace PepperDash.Essentials.Touchpanel
public BoolFeedback ZoomInCallFeedback => _zoomInCallFeedback;
/// <summary>
/// Gets the collection of feedback objects for this touchpanel controller.
/// Gets or sets the Feedbacks
/// </summary>
public FeedbackCollection<Feedback> Feedbacks { get; private set; }
/// <summary>
/// Gets the collection of Zoom-related feedback objects.
/// Gets or sets the ZoomFeedbacks
/// </summary>
public FeedbackCollection<Feedback> ZoomFeedbacks { get; private set; }
@@ -95,7 +95,7 @@ namespace PepperDash.Essentials.Touchpanel
public string Theme => localConfig.Theme;
/// <summary>
/// Gets feedback for the current theme setting.
/// Gets or sets the ThemeFeedback
/// </summary>
public StringFeedback ThemeFeedback { get; private set; }
@@ -188,6 +188,9 @@ namespace PepperDash.Essentials.Touchpanel
/// Updates the theme setting for this touchpanel controller and persists the change to configuration.
/// </summary>
/// <param name="theme">The new theme identifier to apply.</param>
/// <summary>
/// UpdateTheme method
/// </summary>
public void UpdateTheme(string theme)
{
localConfig.Theme = theme;
@@ -325,6 +328,9 @@ namespace PepperDash.Essentials.Touchpanel
/// registering messengers and linking to mobile control.
/// </summary>
/// <returns>True if activation was successful; otherwise, false.</returns>
/// <summary>
/// CustomActivate method
/// </summary>
public override bool CustomActivate()
{
var appMessenger = new ITswAppControlMessenger($"appControlMessenger-{Key}", $"/device/{Key}", this);
@@ -432,6 +438,9 @@ namespace PepperDash.Essentials.Touchpanel
/// Sets the application URL and updates the corresponding feedback.
/// </summary>
/// <param name="url">The new application URL to set.</param>
/// <summary>
/// SetAppUrl method
/// </summary>
public void SetAppUrl(string url)
{
_appUrl = url;
@@ -458,7 +467,7 @@ namespace PepperDash.Essentials.Touchpanel
}
/// <summary>
/// Hides the currently open application on the touchpanel.
/// HideOpenApp method
/// </summary>
public void HideOpenApp()
{
@@ -476,7 +485,7 @@ namespace PepperDash.Essentials.Touchpanel
}
/// <summary>
/// Opens an application on the touchpanel. Note: X60 panels do not support Zoom app opening.
/// OpenApp method
/// </summary>
public void OpenApp()
{
@@ -494,7 +503,7 @@ namespace PepperDash.Essentials.Touchpanel
}
/// <summary>
/// Closes the currently open application on the touchpanel.
/// CloseOpenApp method
/// </summary>
public void CloseOpenApp()
{
@@ -512,7 +521,7 @@ namespace PepperDash.Essentials.Touchpanel
}
/// <summary>
/// Ends the current Zoom call on the touchpanel.
/// EndZoomCall method
/// </summary>
public void EndZoomCall()
{
@@ -530,8 +539,7 @@ namespace PepperDash.Essentials.Touchpanel
}
/// <summary>
/// Updates the device information (MAC address and IP address) from the touchpanel
/// and raises the DeviceInfoChanged event.
/// UpdateDeviceInfo method
/// </summary>
public void UpdateDeviceInfo()
{
@@ -570,8 +578,7 @@ namespace PepperDash.Essentials.Touchpanel
}
/// <summary>
/// Factory class for creating MobileControlTouchpanelController instances from device configuration.
/// Supports various Crestron touchpanel models including TSW, TS, CrestronApp, XPanel, and DGE series.
/// Represents a MobileControlTouchpanelControllerFactory
/// </summary>
public class MobileControlTouchpanelControllerFactory : EssentialsPluginDeviceFactory<MobileControlTouchpanelController>
{
@@ -590,6 +597,9 @@ namespace PepperDash.Essentials.Touchpanel
/// </summary>
/// <param name="dc">The device configuration containing the device properties and settings.</param>
/// <returns>A configured MobileControlTouchpanelController instance.</returns>
/// <summary>
/// BuildDevice method
/// </summary>
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
var comm = CommFactory.GetControlPropertiesConfig(dc);

View File

@@ -3,18 +3,33 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Touchpanel
{
/// <summary>
/// Represents a MobileControlTouchpanelProperties
/// </summary>
public class MobileControlTouchpanelProperties : CrestronTouchpanelPropertiesConfig
{
[JsonProperty("useDirectServer")]
/// <summary>
/// Gets or sets the UseDirectServer
/// </summary>
public bool UseDirectServer { get; set; } = false;
[JsonProperty("zoomRoomController")]
/// <summary>
/// Gets or sets the ZoomRoomController
/// </summary>
public bool ZoomRoomController { get; set; } = false;
[JsonProperty("buttonToolbarTimeoutInS")]
/// <summary>
/// Gets or sets the ButtonToolbarTimoutInS
/// </summary>
public ushort ButtonToolbarTimoutInS { get; set; } = 0;
[JsonProperty("theme")]
/// <summary>
/// Gets or sets the Theme
/// </summary>
public string Theme { get; set; } = "light";
}
}

View File

@@ -6,6 +6,9 @@ using PepperDash.Essentials.AppServer.Messengers;
namespace PepperDash.Essentials.Touchpanel
{
/// <summary>
/// Represents a ThemeMessenger
/// </summary>
public class ThemeMessenger : MessengerBase
{
private readonly ITheme _tpDevice;
@@ -34,9 +37,15 @@ namespace PepperDash.Essentials.Touchpanel
}
}
/// <summary>
/// Represents a ThemeUpdateMessage
/// </summary>
public class ThemeUpdateMessage : DeviceStateMessageBase
{
[JsonProperty("theme")]
/// <summary>
/// Gets or sets the Theme
/// </summary>
public string Theme { get; set; }
}
}

View File

@@ -12,6 +12,9 @@ using WebSocketSharp;
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a TransmitMessage
/// </summary>
public class TransmitMessage : IQueueMessage
{
private readonly WebSocket _ws;
@@ -31,6 +34,9 @@ namespace PepperDash.Essentials
#region Implementation of IQueueMessage
/// <summary>
/// Dispatch method
/// </summary>
public void Dispatch()
{
try
@@ -67,6 +73,9 @@ namespace PepperDash.Essentials
/// <summary>
/// Represents a MessageToClients
/// </summary>
public class MessageToClients : IQueueMessage
{
private readonly MobileControlWebsocketServer _server;
@@ -86,6 +95,9 @@ namespace PepperDash.Essentials
#region Implementation of IQueueMessage
/// <summary>
/// Dispatch method
/// </summary>
public void Dispatch()
{
try

View File

@@ -2,12 +2,21 @@
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a UserCodeChangedContent
/// </summary>
public class UserCodeChangedContent
{
[JsonProperty("userCode")]
/// <summary>
/// Gets or sets the UserCode
/// </summary>
public string UserCode { get; set; }
[JsonProperty("qrChecksum", NullValueHandling = NullValueHandling.Include)]
/// <summary>
/// Gets or sets the QrChecksum
/// </summary>
public string QrChecksum { get; set; }
}
}

View File

@@ -3,9 +3,15 @@ using System.Collections.Generic;
namespace PepperDash.Essentials
{
/// <summary>
/// Represents a Volumes
/// </summary>
public class Volumes
{
[JsonProperty("master", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Master
/// </summary>
public Volume Master { get; set; }
[JsonProperty("auxFaders", NullValueHandling = NullValueHandling.Ignore)]
@@ -19,9 +25,15 @@ namespace PepperDash.Essentials
}
}
/// <summary>
/// Represents a Volume
/// </summary>
public class Volume
{
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; set; }
[JsonProperty("level", NullValueHandling = NullValueHandling.Ignore)]
@@ -31,6 +43,9 @@ namespace PepperDash.Essentials
public bool? Muted { get; set; }
[JsonProperty("label", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Label
/// </summary>
public string Label { get; set; }
[JsonProperty("hasMute", NullValueHandling = NullValueHandling.Ignore)]
@@ -44,6 +59,9 @@ namespace PepperDash.Essentials
[JsonProperty("muteIcon", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the MuteIcon
/// </summary>
public string MuteIcon { get; set; }
public Volume(string key, int level, bool muted, string label, bool hasMute, string muteIcon)

View File

@@ -6,6 +6,9 @@ using System.Linq;
namespace PepperDash.Essentials.WebApiHandlers
{
/// <summary>
/// Represents a ActionPathsHandler
/// </summary>
public class ActionPathsHandler : WebApiBaseRequestHandler
{
private readonly MobileControlSystemController mcController;
@@ -26,6 +29,9 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a ActionPathsResponse
/// </summary>
public class ActionPathsResponse
{
[JsonIgnore]
@@ -40,12 +46,21 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a ActionPath
/// </summary>
public class ActionPath
{
[JsonProperty("messengerKey")]
/// <summary>
/// Gets or sets the MessengerKey
/// </summary>
public string MessengerKey { get; set; }
[JsonProperty("path")]
/// <summary>
/// Gets or sets the Path
/// </summary>
public string Path { get; set; }
}
}

View File

@@ -8,6 +8,9 @@ using System.Threading.Tasks;
namespace PepperDash.Essentials.WebApiHandlers
{
/// <summary>
/// Represents a MobileAuthRequestHandler
/// </summary>
public class MobileAuthRequestHandler : WebApiBaseRequestAsyncHandler
{
private readonly MobileControlSystemController mcController;

View File

@@ -10,6 +10,9 @@ using System.Linq;
namespace PepperDash.Essentials.WebApiHandlers
{
/// <summary>
/// Represents a MobileInfoHandler
/// </summary>
public class MobileInfoHandler : WebApiBaseRequestHandler
{
private readonly MobileControlSystemController mcController;
@@ -39,6 +42,9 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a InformationResponse
/// </summary>
public class InformationResponse
{
[JsonIgnore]
@@ -58,6 +64,9 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a MobileControlEdgeServer
/// </summary>
public class MobileControlEdgeServer
{
[JsonIgnore]
@@ -87,6 +96,9 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a MobileControlDirectServer
/// </summary>
public class MobileControlDirectServer
{
[JsonIgnore]
@@ -113,6 +125,9 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a MobileControlDirectClient
/// </summary>
public class MobileControlDirectClient
{
[JsonIgnore]

View File

@@ -8,6 +8,9 @@ using Serilog.Events;
namespace PepperDash.Essentials.WebApiHandlers
{
/// <summary>
/// Represents a UiClientHandler
/// </summary>
public class UiClientHandler : WebApiBaseRequestHandler
{
private readonly MobileControlWebsocketServer server;
@@ -140,27 +143,51 @@ namespace PepperDash.Essentials.WebApiHandlers
}
}
/// <summary>
/// Represents a ClientRequest
/// </summary>
public class ClientRequest
{
[JsonProperty("roomKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the RoomKey
/// </summary>
public string RoomKey { get; set; }
[JsonProperty("grantCode", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the GrantCode
/// </summary>
public string GrantCode { get; set; }
[JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Token
/// </summary>
public string Token { get; set; }
}
/// <summary>
/// Represents a ClientResponse
/// </summary>
public class ClientResponse
{
[JsonProperty("error", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Error
/// </summary>
public string Error { get; set; }
[JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Token
/// </summary>
public string Token { get; set; }
[JsonProperty("path", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Path
/// </summary>
public string Path { get; set; }
}
}

View File

@@ -12,12 +12,24 @@ namespace PepperDash.Essentials.WebSocketServer
}
}
/// <summary>
/// Represents a WebSocketServerSecret
/// </summary>
public class WebSocketServerSecret : ISecret
{
/// <summary>
/// Gets or sets the Provider
/// </summary>
public ISecretProvider Provider { get; private set; }
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; private set; }
/// <summary>
/// Gets or sets the Value
/// </summary>
public object Value { get; private set; }
public WebSocketServerSecret(string key, object value, ISecretProvider provider)
@@ -27,6 +39,9 @@ namespace PepperDash.Essentials.WebSocketServer
Provider = provider;
}
/// <summary>
/// DeserializeSecret method
/// </summary>
public ServerTokenSecrets DeserializeSecret()
{
return JsonConvert.DeserializeObject<ServerTokenSecrets>(Value.ToString());