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

@@ -45,6 +45,9 @@ namespace PepperDash.Essentials.Devices.Common
}
SourceListItem _CurrentSourceInfo;
/// <summary>
/// Gets or sets the AnyAudioIn
/// </summary>
public RoutingInputPort AnyAudioIn { get; private set; }
public GenericAudioOut(string key, string name)
@@ -65,11 +68,9 @@ namespace PepperDash.Essentials.Devices.Common
}
/// <summary>
/// Allows a zone-device's audio control to be attached to the endpoint, for easy routing and
/// control switching. Will also set the zone name on attached devices, like SWAMP or other
/// hardware with names built in.
/// </summary>
/// <summary>
/// Represents a GenericAudioOutWithVolume
/// </summary>
public class GenericAudioOutWithVolume : GenericAudioOut, IHasVolumeDevice
{
public string VolumeDeviceKey { get; private set; }
@@ -109,6 +110,10 @@ namespace PepperDash.Essentials.Devices.Common
TypeNames = new List<string>() { "genericaudiooutwithvolume" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new GenericAudioOutWithVolumeFactory Device");

View File

@@ -15,13 +15,15 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
public event EventHandler<CodecCallStatusItemChangeEventArgs> CallStatusChange;
/// <summary>
/// Gets or sets the CodecInfo
/// </summary>
public AudioCodecInfo CodecInfo { get; protected set; }
#region IUsageTracking Members
/// <summary>
/// This object can be added by outside users of this class to provide usage tracking
/// for various services
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
@@ -45,6 +47,9 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
}
// In most cases only a single call can be active
/// <summary>
/// Gets or sets the ActiveCalls
/// </summary>
public List<CodecActiveCallItem> ActiveCalls { get; set; }
public AudioCodecBase(string key, string name)

View File

@@ -12,6 +12,9 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.AudioCodec
{
/// <summary>
/// Represents a MockAC
/// </summary>
public class MockAC : AudioCodecBase
{
public MockAC(string key, string name, MockAcPropertiesConfig props)
@@ -22,6 +25,10 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
CodecInfo.PhoneNumber = props.PhoneNumber;
}
/// <summary>
/// Dial method
/// </summary>
/// <inheritdoc />
public override void Dial(string number)
{
if (!IsInCall)
@@ -47,6 +54,10 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
}
}
/// <summary>
/// EndCall method
/// </summary>
/// <inheritdoc />
public override void EndCall(CodecActiveCallItem call)
{
Debug.LogMessage(LogEventLevel.Debug, this, "EndCall");
@@ -54,6 +65,10 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Disconnected, call);
}
/// <summary>
/// EndAllCalls method
/// </summary>
/// <inheritdoc />
public override void EndAllCalls()
{
Debug.LogMessage(LogEventLevel.Debug, this, "EndAllCalls");
@@ -65,12 +80,19 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
}
}
/// <summary>
/// AcceptCall method
/// </summary>
/// <inheritdoc />
public override void AcceptCall(CodecActiveCallItem call)
{
Debug.LogMessage(LogEventLevel.Debug, this, "AcceptCall");
SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Connecting, call);
}
/// <summary>
/// RejectCall method
/// </summary>
public override void RejectCall(CodecActiveCallItem call)
{
Debug.LogMessage(LogEventLevel.Debug, this, "RejectCall");
@@ -78,6 +100,10 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Disconnected, call);
}
/// <summary>
/// SendDtmf method
/// </summary>
/// <inheritdoc />
public override void SendDtmf(string s)
{
Debug.LogMessage(LogEventLevel.Debug, this, "BEEP BOOP SendDTMF: {0}", s);
@@ -87,6 +113,9 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
///
/// </summary>
/// <param name="url"></param>
/// <summary>
/// TestIncomingAudioCall method
/// </summary>
public void TestIncomingAudioCall(string number)
{
Debug.LogMessage(LogEventLevel.Debug, this, "TestIncomingAudioCall from {0}", number);
@@ -97,6 +126,9 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
}
/// <summary>
/// Represents a MockAudioCodecInfo
/// </summary>
public class MockAudioCodecInfo : AudioCodecInfo
{
string _phoneNumber;
@@ -114,6 +146,9 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
}
}
/// <summary>
/// Represents a MockACFactory
/// </summary>
public class MockACFactory : EssentialsDeviceFactory<MockAC>
{
public MockACFactory()
@@ -121,6 +156,10 @@ namespace PepperDash.Essentials.Devices.Common.AudioCodec
TypeNames = new List<string>() { "mockac" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new MockAc Device");

View File

@@ -10,9 +10,15 @@ using Newtonsoft.Json;
namespace PepperDash.Essentials.Devices.Common.AudioCodec
{
/// <summary>
/// Represents a MockAcPropertiesConfig
/// </summary>
public class MockAcPropertiesConfig
{
[JsonProperty("phoneNumber")]
/// <summary>
/// Gets or sets the PhoneNumber
/// </summary>
public string PhoneNumber { get; set; }
}
}

View File

@@ -21,6 +21,9 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
/// <summary>
/// Enumeration of eCameraCapabilities values
/// </summary>
public enum eCameraCapabilities
{
None = 0,
@@ -33,11 +36,17 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
public abstract class CameraBase : ReconfigurableDevice, IRoutingOutputs
{
[JsonProperty("controlMode", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the ControlMode
/// </summary>
public eCameraControlMode ControlMode { get; protected set; }
#region IRoutingOutputs Members
[JsonIgnore]
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; protected set; }
#endregion
@@ -271,6 +280,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Represents a CameraPreset
/// </summary>
public class CameraPreset : PresetBase
{
public CameraPreset(int id, string description, bool isDefined, bool isDefinable)
@@ -281,19 +293,37 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Represents a CameraPropertiesConfig
/// </summary>
public class CameraPropertiesConfig
{
/// <summary>
/// Gets or sets the CommunicationMonitorProperties
/// </summary>
public CommunicationMonitorConfig CommunicationMonitorProperties { get; set; }
/// <summary>
/// Gets or sets the Control
/// </summary>
public ControlPropertiesConfig Control { get; set; }
[JsonProperty("supportsAutoMode")]
/// <summary>
/// Gets or sets the SupportsAutoMode
/// </summary>
public bool SupportsAutoMode { get; set; }
[JsonProperty("supportsOffMode")]
/// <summary>
/// Gets or sets the SupportsOffMode
/// </summary>
public bool SupportsOffMode { get; set; }
[JsonProperty("presets")]
/// <summary>
/// Gets or sets the Presets
/// </summary>
public List<CameraPreset> Presets { get; set; }
}
}

View File

@@ -8,6 +8,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
/// <summary>
/// Enumeration of eCameraControlMode values
/// </summary>
public enum eCameraControlMode
{
Manual = 0,
@@ -16,6 +19,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Defines the contract for IHasCameras
/// </summary>
public interface IHasCameras
{
event EventHandler<CameraSelectedEventArgs> CameraSelected;
@@ -30,7 +36,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Aggregates far end cameras with near end cameras
/// Defines the contract for IHasCodecCameras
/// </summary>
public interface IHasCodecCameras : IHasCameras, IHasFarEndCameraControl
{
@@ -62,8 +68,14 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
event EventHandler VideoUnmuteRequested;
}
/// <summary>
/// Represents a CameraSelectedEventArgs
/// </summary>
public class CameraSelectedEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the SelectedCamera
/// </summary>
public CameraBase SelectedCamera { get; private set; }
public CameraSelectedEventArgs(CameraBase camera)
@@ -72,6 +84,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
}
/// <summary>
/// Defines the contract for IHasFarEndCameraControl
/// </summary>
public interface IHasFarEndCameraControl
{
CameraBase FarEndCamera { get; }
@@ -81,7 +96,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Used to decorate a camera as a far end
/// Defines the contract for IAmFarEndCamera
/// </summary>
public interface IAmFarEndCamera
{
@@ -93,7 +108,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Aggregates the pan, tilt and zoom interfaces
/// Defines the contract for IHasCameraPtzControl
/// </summary>
public interface IHasCameraPtzControl : IHasCameraPanControl, IHasCameraTiltControl, IHasCameraZoomControl
{
@@ -114,7 +129,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Interface for camera tilt control
/// Defines the contract for IHasCameraTiltControl
/// </summary>
public interface IHasCameraTiltControl : IHasCameraControls
{
@@ -124,7 +139,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Interface for camera zoom control
/// Defines the contract for IHasCameraZoomControl
/// </summary>
public interface IHasCameraZoomControl : IHasCameraControls
{
@@ -134,7 +149,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Interface for camera focus control
/// Defines the contract for IHasCameraFocusControl
/// </summary>
public interface IHasCameraFocusControl : IHasCameraControls
{
@@ -152,6 +167,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
void ToggleFocusMode();
}
/// <summary>
/// Defines the contract for IHasCameraAutoMode
/// </summary>
public interface IHasCameraAutoMode : IHasCameraControls
{
void CameraAutoModeOn();

View File

@@ -19,12 +19,21 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
/// <summary>
/// Represents a CameraVisca
/// </summary>
public class CameraVisca : CameraBase, IHasCameraPtzControl, ICommunicationMonitor, IHasCameraPresets, IHasPowerControlWithFeedback, IBridgeAdvanced, IHasCameraFocusControl, IHasAutoFocusMode
{
private readonly CameraViscaPropertiesConfig PropertiesConfig;
/// <summary>
/// Gets or sets the Communication
/// </summary>
public IBasicCommunication Communication { get; private set; }
/// <summary>
/// Gets or sets the CommunicationMonitor
/// </summary>
public StatusMonitorBase CommunicationMonitor { get; private set; }
/// <summary>
@@ -156,6 +165,10 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
}
/// <summary>
/// CustomActivate method
/// </summary>
/// <inheritdoc />
public override bool CustomActivate()
{
Communication.Connect();
@@ -169,6 +182,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
return true;
}
/// <summary>
/// LinkToApi method
/// </summary>
public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkCameraToApi(this, trilist, joinStart, joinMapKey, bridge);
@@ -408,6 +424,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
InquiryResponseQueue.Enqueue(HandlePowerResponse);
}
/// <summary>
/// PowerOn method
/// </summary>
public void PowerOn()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x00, 0x02, 0xFF });
@@ -431,12 +450,18 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
}
/// <summary>
/// PowerOff method
/// </summary>
public void PowerOff()
{
SendBytes(new byte[] {ID, 0x01, 0x04, 0x00, 0x03, 0xFF});
SendPowerQuery();
}
/// <summary>
/// PowerToggle method
/// </summary>
public void PowerToggle()
{
if (PowerIsOnFeedback.BoolValue)
@@ -445,30 +470,48 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
PowerOn();
}
/// <summary>
/// PanLeft method
/// </summary>
public void PanLeft()
{
SendPanTiltCommand(new byte[] {0x01, 0x03}, false);
// IsMoving = true;
}
/// <summary>
/// PanRight method
/// </summary>
public void PanRight()
{
SendPanTiltCommand(new byte[] { 0x02, 0x03 }, false);
// IsMoving = true;
}
/// <summary>
/// PanStop method
/// </summary>
public void PanStop()
{
Stop();
}
/// <summary>
/// TiltDown method
/// </summary>
public void TiltDown()
{
SendPanTiltCommand(new byte[] { 0x03, 0x02 }, false);
// IsMoving = true;
}
/// <summary>
/// TiltUp method
/// </summary>
public void TiltUp()
{
SendPanTiltCommand(new byte[] { 0x03, 0x01 }, false);
// IsMoving = true;
}
/// <summary>
/// TiltStop method
/// </summary>
public void TiltStop()
{
Stop();
@@ -480,21 +523,33 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// ZoomIn method
/// </summary>
public void ZoomIn()
{
SendZoomCommand(ZoomInCmd);
IsZooming = true;
}
/// <summary>
/// ZoomOut method
/// </summary>
public void ZoomOut()
{
SendZoomCommand(ZoomOutCmd);
IsZooming = true;
}
/// <summary>
/// ZoomStop method
/// </summary>
public void ZoomStop()
{
Stop();
}
/// <summary>
/// Stop method
/// </summary>
public void Stop()
{
if (IsZooming)
@@ -509,15 +564,24 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
// IsMoving = false;
}
}
/// <summary>
/// PositionHome method
/// </summary>
public void PositionHome()
{
SendBytes(new byte[] { ID, 0x01, 0x06, 0x02, PanSpeedFast, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF });
SendBytes(new byte[] { ID, 0x01, 0x04, 0x47, 0x00, 0x00, 0x00, 0x00, 0xFF });
}
/// <summary>
/// RecallPreset method
/// </summary>
public void RecallPreset(int presetNumber)
{
SendBytes(new byte[] {ID, 0x01, 0x04, 0x3F, 0x02, (byte)presetNumber, 0xFF} );
}
/// <summary>
/// SavePreset method
/// </summary>
public void SavePreset(int presetNumber)
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x3F, 0x01, (byte)presetNumber, 0xFF });
@@ -536,13 +600,22 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
handler.Invoke(this, EventArgs.Empty);
}
/// <summary>
/// Gets or sets the Presets
/// </summary>
public List<CameraPreset> Presets { get; private set; }
/// <summary>
/// PresetSelect method
/// </summary>
public void PresetSelect(int preset)
{
RecallPreset(preset);
}
/// <summary>
/// PresetStore method
/// </summary>
public void PresetStore(int preset, string description)
{
SavePreset(preset);
@@ -553,21 +626,33 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraFocusControl Members
/// <summary>
/// FocusNear method
/// </summary>
public void FocusNear()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x08, 0x03, 0xFF });
}
/// <summary>
/// FocusFar method
/// </summary>
public void FocusFar()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x08, 0x02, 0xFF });
}
/// <summary>
/// FocusStop method
/// </summary>
public void FocusStop()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x08, 0x00, 0xFF });
}
/// <summary>
/// TriggerAutoFocus method
/// </summary>
public void TriggerAutoFocus()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x18, 0x01, 0xFF });
@@ -578,18 +663,27 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasAutoFocus Members
/// <summary>
/// SetFocusModeAuto method
/// </summary>
public void SetFocusModeAuto()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x38, 0x02, 0xFF });
SendAutoFocusQuery();
}
/// <summary>
/// SetFocusModeManual method
/// </summary>
public void SetFocusModeManual()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x38, 0x03, 0xFF });
SendAutoFocusQuery();
}
/// <summary>
/// ToggleFocusMode method
/// </summary>
public void ToggleFocusMode()
{
SendBytes(new byte[] { ID, 0x01, 0x04, 0x38, 0x10, 0xFF });
@@ -625,9 +719,15 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraOff Members
/// <summary>
/// Gets or sets the CameraIsOffFeedback
/// </summary>
public BoolFeedback CameraIsOffFeedback { get; private set; }
/// <summary>
/// CameraOff method
/// </summary>
public void CameraOff()
{
PowerOff();
@@ -636,6 +736,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#endregion
}
/// <summary>
/// Represents a CameraViscaFactory
/// </summary>
public class CameraViscaFactory : EssentialsDeviceFactory<CameraVisca>
{
public CameraViscaFactory()
@@ -643,6 +746,10 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
TypeNames = new List<string>() { "cameravisca" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new CameraVisca Device");
@@ -654,12 +761,18 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
}
/// <summary>
/// Represents a CameraViscaPropertiesConfig
/// </summary>
public class CameraViscaPropertiesConfig : CameraPropertiesConfig
{
/// <summary>
/// Control ID of the camera (1-7)
/// </summary>
[JsonProperty("id")]
/// <summary>
/// Gets or sets the Id
/// </summary>
public uint Id { get; set; }
/// <summary>

View File

@@ -12,33 +12,60 @@ using Newtonsoft.Json.Converters;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Represents a CodecActiveCallItem
/// </summary>
public class CodecActiveCallItem
{
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Name
/// </summary>
public string Name { get; set; }
[JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Number
/// </summary>
public string Number { get; set; }
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the Type
/// </summary>
public eCodecCallType Type { get; set; }
[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the Status
/// </summary>
public eCodecCallStatus Status { get; set; }
[JsonProperty("direction", NullValueHandling = NullValueHandling.Ignore)]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the Direction
/// </summary>
public eCodecCallDirection Direction { get; set; }
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Id
/// </summary>
public string Id { get; set; }
[JsonProperty("isOnHold", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the IsOnHold
/// </summary>
public bool IsOnHold { get; set; }
[JsonProperty("duration", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Duration
/// </summary>
public TimeSpan Duration { get; set; }
//public object CallMetaData { get; set; }
@@ -61,10 +88,13 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
/// <summary>
///
/// Represents a CodecCallStatusItemChangeEventArgs
/// </summary>
public class CodecCallStatusItemChangeEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the CallItem
/// </summary>
public CodecActiveCallItem CallItem { get; private set; }
public CodecCallStatusItemChangeEventArgs(CodecActiveCallItem item)

View File

@@ -6,6 +6,9 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Defines the contract for IHasCallHold
/// </summary>
public interface IHasCallHold
{
/// <summary>

View File

@@ -8,6 +8,9 @@ using PepperDash.Essentials.Devices.Common.VideoCodec.Cisco;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Defines the contract for IHasExternalSourceSwitching
/// </summary>
public interface IHasExternalSourceSwitching
{
bool ExternalSourceListEnabled { get; }

View File

@@ -7,11 +7,17 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Enumeration of eCodecCallDirection values
/// </summary>
public enum eCodecCallDirection
{
Unknown = 0, Incoming, Outgoing
}
/// <summary>
/// Represents a CodecCallDirection
/// </summary>
public class CodecCallDirection
{
/// <summary>
@@ -19,6 +25,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
/// <summary>
/// ConvertToDirectionEnum method
/// </summary>
public static eCodecCallDirection ConvertToDirectionEnum(string s)
{
switch (s.ToLower())

View File

@@ -6,6 +6,9 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Enumeration of eCodecCallStatus values
/// </summary>
public enum eCodecCallStatus
{
Unknown = 0,
@@ -23,6 +26,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
/// <summary>
/// Represents a CodecCallStatus
/// </summary>
public class CodecCallStatus
{
@@ -31,6 +37,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
/// <summary>
/// ConvertToStatusEnum method
/// </summary>
public static eCodecCallStatus ConvertToStatusEnum(string s)
{
switch (s)

View File

@@ -7,6 +7,9 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Enumeration of eCodecCallType values
/// </summary>
public enum eCodecCallType
{
Unknown = 0,
@@ -16,6 +19,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
ForwardAllCall
}
/// <summary>
/// Represents a CodecCallType
/// </summary>
public class CodecCallType
{
@@ -24,6 +30,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
/// <summary>
/// ConvertToTypeEnum method
/// </summary>
public static eCodecCallType ConvertToTypeEnum(string s)
{
switch (s)

View File

@@ -6,6 +6,9 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Enumeration of eMeetingPrivacy values
/// </summary>
public enum eMeetingPrivacy
{
Unknown = 0,
@@ -13,6 +16,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
Private
}
/// <summary>
/// Represents a CodecCallPrivacy
/// </summary>
public class CodecCallPrivacy
{
/// <summary>
@@ -20,6 +26,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
/// <summary>
/// ConvertToDirectionEnum method
/// </summary>
public static eMeetingPrivacy ConvertToDirectionEnum(string s)
{
switch (s.ToLower())

View File

@@ -6,16 +6,22 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Defines the contract for IHasCallFavorites
/// </summary>
public interface IHasCallFavorites
{
CodecCallFavorites CallFavorites { get; }
}
/// <summary>
/// Represents favorites entries for a codec device
/// Represents a CodecCallFavorites
/// </summary>
public class CodecCallFavorites
{
/// <summary>
/// Gets or sets the Favorites
/// </summary>
public List<CodecActiveCallItem> Favorites { get; set; }
public CodecCallFavorites()

View File

@@ -10,6 +10,9 @@ using Newtonsoft.Json.Converters;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Defines the contract for IHasCallHistory
/// </summary>
public interface IHasCallHistory
{
CodecCallHistory CallHistory { get; }
@@ -17,6 +20,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
void RemoveCallHistoryEntry(CodecCallHistory.CallHistoryEntry entry);
}
/// <summary>
/// Enumeration of eCodecOccurrenceType values
/// </summary>
public enum eCodecOccurrenceType
{
Unknown = 0,
@@ -26,12 +32,15 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
/// <summary>
/// Represents the recent call history for a codec device
/// Represents a CodecCallHistory
/// </summary>
public class CodecCallHistory
{
public event EventHandler<EventArgs> RecentCallsListHasChanged;
/// <summary>
/// Gets or sets the RecentCalls
/// </summary>
public List<CallHistoryEntry> RecentCalls { get; private set; }
/// <summary>
@@ -57,6 +66,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
/// <summary>
/// RemoveEntry method
/// </summary>
public void RemoveEntry(CallHistoryEntry entry)
{
RecentCalls.Remove(entry);
@@ -64,12 +76,15 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
/// <summary>
/// Generic call history entry, not device specific
/// Represents a CallHistoryEntry
/// </summary>
public class CallHistoryEntry : CodecActiveCallItem
{
[JsonConverter(typeof(IsoDateTimeConverter))]
[JsonProperty("startTime")]
/// <summary>
/// Gets or sets the StartTime
/// </summary>
public DateTime StartTime { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("occurrenceType")]
@@ -83,6 +98,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// </summary>
/// <param name="entries"></param>
/// <returns></returns>
/// <summary>
/// ConvertCiscoCallHistoryToGeneric method
/// </summary>
public void ConvertCiscoCallHistoryToGeneric(List<CiscoCallHistory.Entry> entries)
{
var genericEntries = new List<CallHistoryEntry>();
@@ -112,6 +130,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// Takes the Cisco occurence type and converts it to the matching enum
/// </summary>
/// <param name="s"></param>
/// <summary>
/// ConvertToOccurenceTypeEnum method
/// </summary>
public eCodecOccurrenceType ConvertToOccurenceTypeEnum(string s)
{
switch (s)

View File

@@ -10,6 +10,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Devices.Common.Codec
{
/// <summary>
/// Defines the contract for IHasContentSharing
/// </summary>
public interface IHasContentSharing
{
BoolFeedback SharingContentIsOnFeedback { get; }

View File

@@ -40,18 +40,27 @@ namespace PepperDash.Essentials.Devices.Common.Codec
BoolFeedback CurrentDirectoryResultIsNotDirectoryRoot { get; }
}
/// <summary>
/// Defines the contract for IHasDirectoryHistoryStack
/// </summary>
public interface IHasDirectoryHistoryStack : IHasDirectory
{
Stack<CodecDirectory> DirectoryBrowseHistoryStack { get; }
}
/// <summary>
///
/// </summary>
/// <summary>
/// Represents a DirectoryEventArgs
/// </summary>
public class DirectoryEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the Directory
/// </summary>
public CodecDirectory Directory { get; set; }
/// <summary>
/// Gets or sets the DirectoryIsOnRoot
/// </summary>
public bool DirectoryIsOnRoot { get; set; }
}
@@ -89,6 +98,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// Used to store the ID of the current folder for CurrentDirectoryResults
/// </summary>
[JsonProperty("resultsFolderId")]
/// <summary>
/// Gets or sets the ResultsFolderId
/// </summary>
public string ResultsFolderId { get; set; }
public CodecDirectory()
@@ -100,6 +112,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// Adds folders to the directory
/// </summary>
/// <param name="folders"></param>
/// <summary>
/// AddFoldersToDirectory method
/// </summary>
public void AddFoldersToDirectory(List<DirectoryItem> folders)
{
if(folders != null)
@@ -112,6 +127,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// Adds contacts to the directory
/// </summary>
/// <param name="contacts"></param>
/// <summary>
/// AddContactsToDirectory method
/// </summary>
public void AddContactsToDirectory(List<DirectoryItem> contacts)
{
if(contacts != null)
@@ -124,6 +142,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// Filters the CurrentDirectoryResults by the predicate
/// </summary>
/// <param name="predicate"></param>
/// <summary>
/// FilterContacts method
/// </summary>
public void FilterContacts(Func<DirectoryItem, bool> predicate)
{
CurrentDirectoryResults = CurrentDirectoryResults.Where(predicate).ToList();
@@ -156,7 +177,7 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
/// <summary>
/// Used to decorate a contact to indicate it can be invided to a meeting
/// Defines the contract for IInvitableContact
/// </summary>
public interface IInvitableContact
{
@@ -175,11 +196,14 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
/// <summary>
/// Represents an item in the directory
/// </summary>
/// <summary>
/// Represents a DirectoryItem
/// </summary>
public class DirectoryItem : ICloneable
{
/// <summary>
/// Clone method
/// </summary>
public object Clone()
{
return this.MemberwiseClone();
@@ -189,18 +213,27 @@ namespace PepperDash.Essentials.Devices.Common.Codec
public string FolderId { get; set; }
[JsonProperty("name")]
/// <summary>
/// Gets or sets the Name
/// </summary>
public string Name { get; set; }
[JsonProperty("parentFolderId")]
/// <summary>
/// Gets or sets the ParentFolderId
/// </summary>
public string ParentFolderId { get; set; }
}
/// <summary>
/// Represents a folder type DirectoryItem
/// </summary>
/// <summary>
/// Represents a DirectoryFolder
/// </summary>
public class DirectoryFolder : DirectoryItem
{
[JsonProperty("contacts")]
/// <summary>
/// Gets or sets the Contacts
/// </summary>
public List<DirectoryContact> Contacts { get; set; }
@@ -210,12 +243,15 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
/// <summary>
/// Represents a contact type DirectoryItem
/// </summary>
/// <summary>
/// Represents a DirectoryContact
/// </summary>
public class DirectoryContact : DirectoryItem
{
[JsonProperty("contactId")]
/// <summary>
/// Gets or sets the ContactId
/// </summary>
public string ContactId { get; set; }
[JsonProperty("title")]
@@ -230,12 +266,15 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
/// <summary>
/// Represents a method of contact for a contact
/// </summary>
/// <summary>
/// Represents a ContactMethod
/// </summary>
public class ContactMethod
{
[JsonProperty("contactMethodId")]
/// <summary>
/// Gets or sets the ContactMethodId
/// </summary>
public string ContactMethodId { get; set; }
[JsonProperty("number")]
@@ -243,16 +282,22 @@ namespace PepperDash.Essentials.Devices.Common.Codec
[JsonProperty("device")]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the Device
/// </summary>
public eContactMethodDevice Device { get; set; }
[JsonProperty("callType")]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the CallType
/// </summary>
public eContactMethodCallType CallType { get; set; }
}
/// <summary>
///
/// </summary>
/// <summary>
/// Enumeration of eContactMethodDevice values
/// </summary>
public enum eContactMethodDevice
{
Unknown = 0,
@@ -262,9 +307,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
Video
}
/// <summary>
///
/// </summary>
/// <summary>
/// Enumeration of eContactMethodCallType values
/// </summary>
public enum eContactMethodCallType
{
Unknown = 0,

View File

@@ -14,6 +14,9 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Codec
{
[Flags]
/// <summary>
/// Enumeration of eMeetingEventChangeType values
/// </summary>
public enum eMeetingEventChangeType
{
Unknown = 0,
@@ -23,6 +26,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
MeetingEnd = 8
}
/// <summary>
/// Defines the contract for IHasScheduleAwareness
/// </summary>
public interface IHasScheduleAwareness
{
CodecScheduleAwareness CodecSchedule { get; }
@@ -30,6 +36,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
void GetSchedule();
}
/// <summary>
/// Represents a CodecScheduleAwareness
/// </summary>
public class CodecScheduleAwareness
{
List<Meeting> _meetings;
@@ -147,7 +156,7 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
/// <summary>
/// Generic class to represent a meeting (Cisco or Polycom OBTP or Fusion)
/// Represents a Meeting
/// </summary>
public class Meeting
{
@@ -159,8 +168,14 @@ namespace PepperDash.Essentials.Devices.Common.Codec
[JsonProperty("organizer")]
public string Organizer { get; set; }
[JsonProperty("title")]
/// <summary>
/// Gets or sets the Title
/// </summary>
public string Title { get; set; }
[JsonProperty("agenda")]
/// <summary>
/// Gets or sets the Agenda
/// </summary>
public string Agenda { get; set; }
[JsonProperty("meetingWarningMinutes")]
@@ -185,8 +200,14 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
[JsonProperty("startTime")]
/// <summary>
/// Gets or sets the StartTime
/// </summary>
public DateTime StartTime { get; set; }
[JsonProperty("endTime")]
/// <summary>
/// Gets or sets the EndTime
/// </summary>
public DateTime EndTime { get; set; }
[JsonProperty("duration")]
public TimeSpan Duration
@@ -197,6 +218,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
[JsonProperty("privacy")]
/// <summary>
/// Gets or sets the Privacy
/// </summary>
public eMeetingPrivacy Privacy { get; set; }
[JsonProperty("joinable")]
public bool Joinable
@@ -211,21 +235,36 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
[JsonProperty("dialable")]
/// <summary>
/// Gets or sets the Dialable
/// </summary>
public bool Dialable { get; set; }
//public string ConferenceNumberToDial { get; set; }
[JsonProperty("conferencePassword")]
/// <summary>
/// Gets or sets the ConferencePassword
/// </summary>
public string ConferencePassword { get; set; }
[JsonProperty("isOneButtonToPushMeeting")]
/// <summary>
/// Gets or sets the IsOneButtonToPushMeeting
/// </summary>
public bool IsOneButtonToPushMeeting { get; set; }
[JsonProperty("calls")]
/// <summary>
/// Gets or sets the Calls
/// </summary>
public List<Call> Calls { get; private set; }
/// <summary>
/// Tracks the change types that have already been notified for
/// </summary>
[JsonIgnore]
/// <summary>
/// Gets or sets the NotifiedChangeTypes
/// </summary>
public eMeetingEventChangeType NotifiedChangeTypes { get; set; }
[JsonIgnore] private readonly int _joinableCooldownSeconds;
@@ -247,6 +286,10 @@ namespace PepperDash.Essentials.Devices.Common.Codec
#region Overrides of Object
/// <summary>
/// ToString method
/// </summary>
/// <inheritdoc />
public override string ToString()
{
return String.Format("{0}:{1}: {2}-{3}", Title, Agenda, StartTime, EndTime);
@@ -255,17 +298,41 @@ namespace PepperDash.Essentials.Devices.Common.Codec
#endregion
}
/// <summary>
/// Represents a Call
/// </summary>
public class Call
{
/// <summary>
/// Gets or sets the Number
/// </summary>
public string Number { get; set; }
/// <summary>
/// Gets or sets the Protocol
/// </summary>
public string Protocol { get; set; }
/// <summary>
/// Gets or sets the CallRate
/// </summary>
public string CallRate { get; set; }
/// <summary>
/// Gets or sets the CallType
/// </summary>
public string CallType { get; set; }
}
/// <summary>
/// Represents a MeetingEventArgs
/// </summary>
public class MeetingEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the ChangeType
/// </summary>
public eMeetingEventChangeType ChangeType { get; set; }
/// <summary>
/// Gets or sets the Meeting
/// </summary>
public Meeting Meeting { get; set; }
}

View File

@@ -47,6 +47,9 @@ namespace PepperDash.Essentials.Devices.Common.DSP
public abstract class DspControlPoint :IKeyed
{
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; }
protected DspControlPoint(string key) => Key = key;
@@ -54,7 +57,13 @@ namespace PepperDash.Essentials.Devices.Common.DSP
public abstract class DspLevelControlPoint :DspControlPoint, IBasicVolumeWithFeedback
{
/// <summary>
/// Gets or sets the MuteFeedback
/// </summary>
public BoolFeedback MuteFeedback { get; }
/// <summary>
/// Gets or sets the VolumeLevelFeedback
/// </summary>
public IntFeedback VolumeLevelFeedback { get; }
protected DspLevelControlPoint(string key, Func<bool> muteFeedbackFunc, Func<int> volumeLevelFeedbackFunc) : base(key)

View File

@@ -9,6 +9,9 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common
{
/// <summary>
/// Represents a DeviceFactory
/// </summary>
public class DeviceFactory
{

View File

@@ -11,9 +11,18 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Displays
{
/// <summary>
/// Represents a BasicIrDisplay
/// </summary>
public class BasicIrDisplay : DisplayBase, IBasicVolumeControls, IBridgeAdvanced
{
/// <summary>
/// Gets or sets the IrPort
/// </summary>
public IrOutputPortController IrPort { get; private set; }
/// <summary>
/// Gets or sets the IrPulseTime
/// </summary>
public ushort IrPulseTime { get; set; }
protected Func<bool> PowerIsOnFeedbackFunc
@@ -61,36 +70,57 @@ namespace PepperDash.Essentials.Devices.Common.Displays
});
}
/// <summary>
/// Hdmi1 method
/// </summary>
public void Hdmi1()
{
IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_1, IrPulseTime);
}
/// <summary>
/// Hdmi2 method
/// </summary>
public void Hdmi2()
{
IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_2, IrPulseTime);
}
/// <summary>
/// Hdmi3 method
/// </summary>
public void Hdmi3()
{
IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_3, IrPulseTime);
}
/// <summary>
/// Hdmi4 method
/// </summary>
public void Hdmi4()
{
IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_4, IrPulseTime);
}
/// <summary>
/// Component1 method
/// </summary>
public void Component1()
{
IrPort.Pulse(IROutputStandardCommands.IROut_COMPONENT_1, IrPulseTime);
}
/// <summary>
/// Video1 method
/// </summary>
public void Video1()
{
IrPort.Pulse(IROutputStandardCommands.IROut_VIDEO_1, IrPulseTime);
}
/// <summary>
/// Antenna method
/// </summary>
public void Antenna()
{
IrPort.Pulse(IROutputStandardCommands.IROut_ANTENNA, IrPulseTime);
@@ -98,18 +128,28 @@ namespace PepperDash.Essentials.Devices.Common.Displays
#region IPower Members
/// <summary>
/// PowerOn method
/// </summary>
/// <inheritdoc />
public override void PowerOn()
{
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_ON, IrPulseTime);
_PowerIsOn = true;
}
/// <summary>
/// PowerOff method
/// </summary>
public override void PowerOff()
{
_PowerIsOn = false;
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_OFF, IrPulseTime);
}
/// <summary>
/// PowerToggle method
/// </summary>
public override void PowerToggle()
{
_PowerIsOn = false;
@@ -120,16 +160,25 @@ namespace PepperDash.Essentials.Devices.Common.Displays
#region IBasicVolumeControls Members
/// <summary>
/// VolumeUp method
/// </summary>
public void VolumeUp(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_VOL_PLUS, pressRelease);
}
/// <summary>
/// VolumeDown method
/// </summary>
public void VolumeDown(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_VOL_MINUS, pressRelease);
}
/// <summary>
/// MuteToggle method
/// </summary>
public void MuteToggle()
{
IrPort.Pulse(IROutputStandardCommands.IROut_MUTE, 200);
@@ -164,6 +213,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
/// Typically called by the discovery routing algorithm.
/// </summary>
/// <param name="inputSelector">A delegate containing the input selector method to call</param>
/// <summary>
/// ExecuteSwitch method
/// </summary>
/// <inheritdoc />
public override void ExecuteSwitch(object inputSelector)
{
Debug.LogMessage(LogEventLevel.Verbose, this, "Switching to input '{0}'", (inputSelector as Action).ToString());
@@ -193,12 +246,18 @@ namespace PepperDash.Essentials.Devices.Common.Displays
#endregion
/// <summary>
/// LinkToApi method
/// </summary>
public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDisplayToApi(this, trilist, joinStart, joinMapKey, bridge);
}
}
/// <summary>
/// Represents a BasicIrDisplayFactory
/// </summary>
public class BasicIrDisplayFactory : EssentialsDeviceFactory<BasicIrDisplay>
{
public BasicIrDisplayFactory()
@@ -206,6 +265,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
TypeNames = new List<string>() { "basicirdisplay" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new BasicIrDisplay Device");

View File

@@ -52,9 +52,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
/// </summary>
public event SourceInfoChangeHandler CurrentSourceChange;
/// <summary>
/// Gets or sets the key of the current source information.
/// </summary>
/// <summary>
/// Gets or sets the CurrentSourceInfoKey
/// </summary>
public string CurrentSourceInfoKey { get; set; }
/// <summary>
@@ -94,24 +94,24 @@ namespace PepperDash.Essentials.Devices.Common.Displays
/// </summary>
public BoolFeedback IsCoolingDownFeedback { get; protected set; }
/// <summary>
/// Gets feedback indicating whether the display is currently warming up after being powered on.
/// </summary>
/// <summary>
/// Gets or sets the IsWarmingUpFeedback
/// </summary>
public BoolFeedback IsWarmingUpFeedback { get; private set; }
/// <summary>
/// Gets or sets the usage tracking instance for monitoring display usage statistics.
/// </summary>
/// <summary>
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
/// <summary>
/// Gets or sets the warmup time in milliseconds for the display to become ready after power on.
/// </summary>
/// <summary>
/// Gets or sets the WarmupTime
/// </summary>
public uint WarmupTime { get; set; }
/// <summary>
/// Gets or sets the cooldown time in milliseconds for the display to fully power down.
/// </summary>
/// <summary>
/// Gets or sets the CooldownTime
/// </summary>
public uint CooldownTime { get; set; }
/// <summary>
@@ -189,6 +189,7 @@ namespace PepperDash.Essentials.Devices.Common.Displays
/// <summary>
/// Gets the collection of feedback objects for this display device.
/// </summary>
/// <inheritdoc />
public virtual FeedbackCollection<Feedback> Feedbacks
{
get

View File

@@ -6,12 +6,33 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Displays
{
/// <summary>
/// Defines the contract for IInputHdmi1
/// </summary>
public interface IInputHdmi1 { void InputHdmi1(); }
/// <summary>
/// Defines the contract for IInputHdmi2
/// </summary>
public interface IInputHdmi2 { void InputHdmi2(); }
/// <summary>
/// Defines the contract for IInputHdmi3
/// </summary>
public interface IInputHdmi3 { void InputHdmi3(); }
/// <summary>
/// Defines the contract for IInputHdmi4
/// </summary>
public interface IInputHdmi4 { void InputHdmi4(); }
/// <summary>
/// Defines the contract for IInputDisplayPort1
/// </summary>
public interface IInputDisplayPort1 { void InputDisplayPort1(); }
/// <summary>
/// Defines the contract for IInputDisplayPort2
/// </summary>
public interface IInputDisplayPort2 { void InputDisplayPort2(); }
/// <summary>
/// Defines the contract for IInputVga1
/// </summary>
public interface IInputVga1 { void InputVga1(); }
}

View File

@@ -12,8 +12,14 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Displays
{
/// <summary>
/// Represents a MockDisplay
/// </summary>
public class MockDisplay : TwoWayDisplayBase, IBasicVolumeWithFeedback, IBridgeAdvanced, IHasInputs<string>, IRoutingSinkWithSwitchingWithInputPort, IHasPowerControlWithFeedback
{
/// <summary>
/// Gets or sets the Inputs
/// </summary>
public ISelectableItems<string> Inputs { get; private set; }
bool _PowerIsOn;
@@ -92,6 +98,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
CooldownTime = 10000;
}
/// <summary>
/// PowerOn method
/// </summary>
/// <inheritdoc />
public override void PowerOn()
{
if (!PowerIsOnFeedback.BoolValue && !_IsWarmingUp && !_IsCoolingDown)
@@ -109,6 +119,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
}
}
/// <summary>
/// PowerOff method
/// </summary>
/// <inheritdoc />
public override void PowerOff()
{
// If a display has unreliable-power off feedback, just override this and
@@ -129,6 +143,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
}
}
/// <summary>
/// PowerToggle method
/// </summary>
/// <inheritdoc />
public override void PowerToggle()
{
if (PowerIsOnFeedback.BoolValue && !IsWarmingUpFeedback.BoolValue)
@@ -137,6 +155,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
PowerOn();
}
/// <summary>
/// ExecuteSwitch method
/// </summary>
/// <inheritdoc />
public override void ExecuteSwitch(object selector)
{
try
@@ -174,6 +196,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
}
}
/// <summary>
/// SetInput method
/// </summary>
public void SetInput(string selector)
{
ISelectableItem currentInput = null;
@@ -202,26 +227,41 @@ namespace PepperDash.Essentials.Devices.Common.Displays
#region IBasicVolumeWithFeedback Members
/// <summary>
/// Gets or sets the VolumeLevelFeedback
/// </summary>
public IntFeedback VolumeLevelFeedback { get; private set; }
/// <summary>
/// SetVolume method
/// </summary>
public void SetVolume(ushort level)
{
_FakeVolumeLevel = level;
VolumeLevelFeedback.InvokeFireUpdate();
}
/// <summary>
/// MuteOn method
/// </summary>
public void MuteOn()
{
_IsMuted = true;
MuteFeedback.InvokeFireUpdate();
}
/// <summary>
/// MuteOff method
/// </summary>
public void MuteOff()
{
_IsMuted = false;
MuteFeedback.InvokeFireUpdate();
}
/// <summary>
/// Gets or sets the MuteFeedback
/// </summary>
public BoolFeedback MuteFeedback { get; private set; }
@@ -229,6 +269,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
#region IBasicVolumeControls Members
/// <summary>
/// VolumeUp method
/// </summary>
public void VolumeUp(bool pressRelease)
{
//while (pressRelease)
@@ -243,6 +286,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
//}
}
/// <summary>
/// VolumeDown method
/// </summary>
public void VolumeDown(bool pressRelease)
{
//while (pressRelease)
@@ -257,6 +303,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
//}
}
/// <summary>
/// MuteToggle method
/// </summary>
public void MuteToggle()
{
_IsMuted = !_IsMuted;
@@ -265,12 +314,18 @@ namespace PepperDash.Essentials.Devices.Common.Displays
#endregion
/// <summary>
/// LinkToApi method
/// </summary>
public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDisplayToApi(this, trilist, joinStart, joinMapKey, bridge);
}
}
/// <summary>
/// Represents a MockDisplayFactory
/// </summary>
public class MockDisplayFactory : EssentialsDeviceFactory<MockDisplay>
{
public MockDisplayFactory()
@@ -278,6 +333,10 @@ namespace PepperDash.Essentials.Devices.Common.Displays
TypeNames = new List<string>() { "mockdisplay" , "mockdisplay2" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Mock Display Device");

View File

@@ -8,6 +8,9 @@ using System.Threading.Tasks;
namespace PepperDash.Essentials.Devices.Common.Displays
{
/// <summary>
/// Represents a MockDisplayInputs
/// </summary>
public class MockDisplayInputs : ISelectableItems<string>
{
private Dictionary<string, ISelectableItem> _items;
@@ -52,6 +55,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
public event EventHandler CurrentItemChanged;
}
/// <summary>
/// Represents a MockDisplayInput
/// </summary>
public class MockDisplayInput : ISelectableItem
{
private MockDisplay _parent;
@@ -75,8 +81,14 @@ namespace PepperDash.Essentials.Devices.Common.Displays
}
}
/// <summary>
/// Gets or sets the Name
/// </summary>
public string Name { get; set; }
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; set; }
public event EventHandler ItemUpdated;
@@ -88,6 +100,9 @@ namespace PepperDash.Essentials.Devices.Common.Displays
_parent = parent;
}
/// <summary>
/// Select method
/// </summary>
public void Select()
{
if (!_parent.PowerIsOnFeedback.BoolValue) _parent.PowerOn();

View File

@@ -41,10 +41,22 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
private bool _isInUpPosition { get; set; }
/// <summary>
/// Gets or sets the Type
/// </summary>
public eScreenLiftControlType Type { get; private set; }
/// <summary>
/// Gets or sets the Mode
/// </summary>
public eScreenLiftControlMode Mode { get; private set; }
/// <summary>
/// Gets or sets the DisplayDeviceKey
/// </summary>
public string DisplayDeviceKey { get; private set; }
/// <summary>
/// Gets or sets the IsInUpPosition
/// </summary>
public BoolFeedback IsInUpPosition { get; private set; }
public event EventHandler<EventArgs> PositionChanged;
@@ -97,6 +109,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
}
/// <summary>
/// CustomActivate method
/// </summary>
/// <inheritdoc />
public override bool CustomActivate()
{
//Create ISwitchedOutput objects based on props
@@ -131,6 +147,9 @@ namespace PepperDash.Essentials.Devices.Common.Shades
return base.CustomActivate();
}
/// <summary>
/// Raise method
/// </summary>
public void Raise()
{
if (RaiseRelay == null && LatchedRelay == null) return;
@@ -153,6 +172,9 @@ namespace PepperDash.Essentials.Devices.Common.Shades
InUpPosition = true;
}
/// <summary>
/// Lower method
/// </summary>
public void Lower()
{
if (LowerRelay == null && LatchedRelay == null) return;
@@ -216,32 +238,56 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
/// <summary>
/// Represents a ScreenLiftControllerConfigProperties
/// </summary>
public class ScreenLiftControllerConfigProperties
{
[JsonProperty("displayDeviceKey")]
/// <summary>
/// Gets or sets the DisplayDeviceKey
/// </summary>
public string DisplayDeviceKey { get; set; }
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the Type
/// </summary>
public eScreenLiftControlType Type { get; set; }
[JsonProperty("mode")]
[JsonConverter(typeof(StringEnumConverter))]
/// <summary>
/// Gets or sets the Mode
/// </summary>
public eScreenLiftControlMode Mode { get; set; }
[JsonProperty("relays")]
public Dictionary<string,ScreenLiftRelaysConfig> Relays { get; set; }
}
/// <summary>
/// Represents a ScreenLiftRelaysConfig
/// </summary>
public class ScreenLiftRelaysConfig
{
[JsonProperty("deviceKey")]
/// <summary>
/// Gets or sets the DeviceKey
/// </summary>
public string DeviceKey { get; set; }
[JsonProperty("pulseTimeInMs")]
/// <summary>
/// Gets or sets the PulseTimeInMs
/// </summary>
public int PulseTimeInMs { get; set; }
}
/// <summary>
/// Represents a ScreenLiftControllerFactory
/// </summary>
public class ScreenLiftControllerFactory : EssentialsDeviceFactory<RelayControlledShade>
{
public ScreenLiftControllerFactory()
@@ -249,6 +295,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
TypeNames = new List<string>() { "screenliftcontroller" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Comm Device");
@@ -258,6 +308,9 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
}
/// <summary>
/// Enumeration of eScreenLiftControlMode values
/// </summary>
public enum eScreenLiftControlMode
{
momentary,

View File

@@ -7,6 +7,9 @@ using System.Collections.Generic;
namespace PepperDash.Essentials.Devices.Common.Generic
{
/// <summary>
/// Represents a GenericSink
/// </summary>
public class GenericSink : EssentialsDevice, IRoutingSinkWithInputPort
{
public GenericSink(string key, string name) : base(key, name)
@@ -18,11 +21,20 @@ namespace PepperDash.Essentials.Devices.Common.Generic
InputPorts.Add(inputPort);
}
/// <summary>
/// Gets or sets the InputPorts
/// </summary>
public RoutingPortCollection<RoutingInputPort> InputPorts { get; private set; }
/// <summary>
/// Gets or sets the CurrentSourceInfoKey
/// </summary>
public string CurrentSourceInfoKey { get; set; }
private SourceListItem _currentSource;
/// <summary>
/// Gets or sets the CurrentSourceInfo
/// </summary>
public SourceListItem CurrentSourceInfo {
get => _currentSource;
set {
@@ -44,6 +56,9 @@ namespace PepperDash.Essentials.Devices.Common.Generic
public event SourceInfoChangeHandler CurrentSourceChange;
}
/// <summary>
/// Represents a GenericSinkFactory
/// </summary>
public class GenericSinkFactory : EssentialsDeviceFactory<GenericSink>
{
public GenericSinkFactory()
@@ -51,6 +66,10 @@ namespace PepperDash.Essentials.Devices.Common.Generic
TypeNames = new List<string>() { "genericsink", "genericdestination" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Sink Device");

View File

@@ -13,9 +13,15 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common
{
/// <summary>
/// Represents a GenericSource
/// </summary>
public class GenericSource : EssentialsDevice, IUiDisplayInfo, IRoutingSource, IUsageTracking
{
/// <summary>
/// Gets or sets the DisplayUiType
/// </summary>
public uint DisplayUiType { get { return DisplayUiConstants.TypeNoControls; } }
public GenericSource(string key, string name)
@@ -29,18 +35,30 @@ namespace PepperDash.Essentials.Devices.Common
#region IRoutingOutputs Members
/// <summary>
/// Gets or sets the AnyOut
/// </summary>
public RoutingOutputPort AnyOut { get; private set; }
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
#endregion
#region IUsageTracking Members
/// <summary>
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
#endregion
}
/// <summary>
/// Represents a GenericSourceFactory
/// </summary>
public class GenericSourceFactory : EssentialsDeviceFactory<GenericSource>
{
public GenericSourceFactory()
@@ -48,6 +66,10 @@ namespace PepperDash.Essentials.Devices.Common
TypeNames = new List<string>() { "genericsource" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Source Device");

View File

@@ -22,10 +22,19 @@ namespace PepperDash.Essentials.Devices.Common.Lighting
public event EventHandler<LightingSceneChangeEventArgs> LightingSceneChange;
/// <summary>
/// Gets or sets the LightingScenes
/// </summary>
public List<LightingScene> LightingScenes { get; protected set; }
/// <summary>
/// Gets or sets the CurrentLightingScene
/// </summary>
public LightingScene CurrentLightingScene { get; protected set; }
/// <summary>
/// Gets or sets the CurrentLightingSceneFeedback
/// </summary>
public IntFeedback CurrentLightingSceneFeedback { get; protected set; }
#endregion
@@ -41,6 +50,9 @@ namespace PepperDash.Essentials.Devices.Common.Lighting
public abstract void SelectScene(LightingScene scene);
/// <summary>
/// SimulateSceneSelect method
/// </summary>
public void SimulateSceneSelect(string sceneName)
{
Debug.LogMessage(LogEventLevel.Debug, this, "Simulating selection of scene '{0}'", sceneName);

View File

@@ -3,6 +3,9 @@ using PepperDash.Essentials.Room.Config;
namespace PepperDash.Essentials.Devices.Common.Room
{
/// <summary>
/// Defines the contract for IEssentialsHuddleSpaceRoom
/// </summary>
public interface IEssentialsHuddleSpaceRoom : IEssentialsRoom, IHasCurrentSourceInfoChange, IRunRouteAction, IHasDefaultDisplay, IHasCurrentVolumeControls, IRoomOccupancy,
IEmergency, IMicrophonePrivacy
{

View File

@@ -6,6 +6,9 @@ using PepperDash.Essentials.Room.Config;
namespace PepperDash.Essentials.Devices.Common.Room
{
/// <summary>
/// Defines the contract for IEssentialsHuddleVtc1Room
/// </summary>
public interface IEssentialsHuddleVtc1Room : IEssentialsRoom, IHasCurrentSourceInfoChange, IHasCurrentVolumeControls, IRunRouteAction, IRunDefaultCallRoute, IHasVideoCodec, IHasAudioCodec, IHasDefaultDisplay, IHasInCallFeedback,
IRoomOccupancy, IEmergency, IMicrophonePrivacy
{

View File

@@ -7,6 +7,9 @@ using System.Threading.Tasks;
namespace PepperDash.Essentials.Devices.Common.Room
{
/// <summary>
/// Defines the contract for IEssentialsRoomPropertiesConfig
/// </summary>
public interface IEssentialsRoomPropertiesConfig
{
EssentialsRoomPropertiesConfig PropertiesConfig { get; }

View File

@@ -8,6 +8,9 @@ using TwoWayDisplayBase = PepperDash.Essentials.Devices.Common.Displays.TwoWayDi
namespace PepperDash.Essentials.Devices.Common.Room
{
/// <summary>
/// Defines the contract for IEssentialsTechRoom
/// </summary>
public interface IEssentialsTechRoom:IEssentialsRoom, ITvPresetsProvider,IBridgeAdvanced,IRunDirectRouteAction
{
EssentialsTechRoomConfig PropertiesConfig { get; }

View File

@@ -19,18 +19,45 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common
{
[Description("Wrapper class for an IR Set Top Box")]
/// <summary>
/// Represents a IRSetTopBoxBase
/// </summary>
public class IRSetTopBoxBase : EssentialsBridgeableDevice, ISetTopBoxControls, IRoutingSource, IRoutingOutputs, IUsageTracking, IHasPowerControl, ITvPresetsProvider
{
/// <summary>
/// Gets or sets the IrPort
/// </summary>
public IrOutputPortController IrPort { get; private set; }
/// <summary>
/// Gets or sets the DisplayUiType
/// </summary>
public uint DisplayUiType { get { return DisplayUiConstants.TypeDirecTv; } }
/// <summary>
/// Gets or sets the IrPulseTime
/// </summary>
public ushort IrPulseTime { get; set; }
/// <summary>
/// Gets or sets the HasPresets
/// </summary>
public bool HasPresets { get; set; }
/// <summary>
/// Gets or sets the HasDvr
/// </summary>
public bool HasDvr { get; set; }
/// <summary>
/// Gets or sets the HasDpad
/// </summary>
public bool HasDpad { get; set; }
/// <summary>
/// Gets or sets the HasNumeric
/// </summary>
public bool HasNumeric { get; set; }
/// <summary>
/// Gets or sets the TvPresets
/// </summary>
public DevicePresetsModel TvPresets { get; private set; }
public IRSetTopBoxBase(string key, string name, IrOutputPortController portCont,
@@ -67,6 +94,9 @@ namespace PepperDash.Essentials.Devices.Common
OutputPorts = new RoutingPortCollection<RoutingOutputPort> { AnyVideoOut, AnyAudioOut };
}
/// <summary>
/// LoadPresets method
/// </summary>
public void LoadPresets(string filePath)
{
TvPresets = new DevicePresetsModel(Key + "-presets", this, filePath);
@@ -76,11 +106,17 @@ namespace PepperDash.Essentials.Devices.Common
#region ISetTopBoxControls Members
/// <summary>
/// DvrList method
/// </summary>
public void DvrList(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_DVR, pressRelease);
}
/// <summary>
/// Replay method
/// </summary>
public void Replay(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_REPLAY, pressRelease);
@@ -90,36 +126,57 @@ namespace PepperDash.Essentials.Devices.Common
#region IDPad Members
/// <summary>
/// Up method
/// </summary>
public void Up(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_UP_ARROW, pressRelease);
}
/// <summary>
/// Down method
/// </summary>
public void Down(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_DN_ARROW, pressRelease);
}
/// <summary>
/// Left method
/// </summary>
public void Left(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_LEFT_ARROW, pressRelease);
}
/// <summary>
/// Right method
/// </summary>
public void Right(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RIGHT_ARROW, pressRelease);
}
/// <summary>
/// Select method
/// </summary>
public void Select(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_ENTER, pressRelease);
}
/// <summary>
/// Menu method
/// </summary>
public void Menu(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_MENU, pressRelease);
}
/// <summary>
/// Exit method
/// </summary>
public void Exit(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_EXIT, pressRelease);
@@ -129,59 +186,89 @@ namespace PepperDash.Essentials.Devices.Common
#region INumericKeypad Members
/// <summary>
/// Digit0 method
/// </summary>
public void Digit0(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_0, pressRelease);
}
/// <summary>
/// Digit1 method
/// </summary>
public void Digit1(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_1, pressRelease);
}
/// <summary>
/// Digit2 method
/// </summary>
public void Digit2(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_2, pressRelease);
}
/// <summary>
/// Digit3 method
/// </summary>
public void Digit3(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_3, pressRelease);
}
/// <summary>
/// Digit4 method
/// </summary>
public void Digit4(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_4, pressRelease);
}
/// <summary>
/// Digit5 method
/// </summary>
public void Digit5(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_5, pressRelease);
}
/// <summary>
/// Digit6 method
/// </summary>
public void Digit6(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_6, pressRelease);
}
/// <summary>
/// Digit7 method
/// </summary>
public void Digit7(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_7, pressRelease);
}
/// <summary>
/// Digit8 method
/// </summary>
public void Digit8(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_8, pressRelease);
}
/// <summary>
/// Digit9 method
/// </summary>
public void Digit9(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_9, pressRelease);
}
/// <summary>
/// Defaults to true
/// </summary>
/// <summary>
/// Gets or sets the HasKeypadAccessoryButton1
/// </summary>
public bool HasKeypadAccessoryButton1 { get; set; }
/// <summary>
@@ -200,9 +287,9 @@ namespace PepperDash.Essentials.Devices.Common
IrPort.PressRelease(KeypadAccessoryButton1Command, pressRelease);
}
/// <summary>
/// Defaults to true
/// </summary>
/// <summary>
/// Gets or sets the HasKeypadAccessoryButton2
/// </summary>
public bool HasKeypadAccessoryButton2 { get; set; }
/// <summary>
@@ -225,9 +312,9 @@ namespace PepperDash.Essentials.Devices.Common
#region ISetTopBoxNumericKeypad Members
/// <summary>
/// Corresponds to "dash" IR command
/// </summary>
/// <summary>
/// Dash method
/// </summary>
public void Dash(bool pressRelease)
{
IrPort.PressRelease("dash", pressRelease);
@@ -250,21 +337,33 @@ namespace PepperDash.Essentials.Devices.Common
IrPort.PressRelease(IROutputStandardCommands.IROut_CH_PLUS, pressRelease);
}
/// <summary>
/// ChannelDown method
/// </summary>
public void ChannelDown(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_CH_MINUS, pressRelease);
}
/// <summary>
/// LastChannel method
/// </summary>
public void LastChannel(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_LAST, pressRelease);
}
/// <summary>
/// Guide method
/// </summary>
public void Guide(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_GUIDE, pressRelease);
}
/// <summary>
/// Info method
/// </summary>
public void Info(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_INFO, pressRelease);
@@ -274,21 +373,33 @@ namespace PepperDash.Essentials.Devices.Common
#region IColorFunctions Members
/// <summary>
/// Red method
/// </summary>
public void Red(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RED, pressRelease);
}
/// <summary>
/// Green method
/// </summary>
public void Green(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_GREEN, pressRelease);
}
/// <summary>
/// Yellow method
/// </summary>
public void Yellow(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_YELLOW, pressRelease);
}
/// <summary>
/// Blue method
/// </summary>
public void Blue(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_BLUE, pressRelease);
@@ -298,48 +409,81 @@ namespace PepperDash.Essentials.Devices.Common
#region IRoutingOutputs Members
/// <summary>
/// Gets or sets the AnyVideoOut
/// </summary>
public RoutingOutputPort AnyVideoOut { get; private set; }
/// <summary>
/// Gets or sets the AnyAudioOut
/// </summary>
public RoutingOutputPort AnyAudioOut { get; private set; }
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
#endregion
#region ITransport Members
/// <summary>
/// ChapMinus method
/// </summary>
public void ChapMinus(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_REPLAY, pressRelease);
}
/// <summary>
/// ChapPlus method
/// </summary>
public void ChapPlus(bool pressRelease)
{
}
/// <summary>
/// FFwd method
/// </summary>
public void FFwd(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_FSCAN, pressRelease);
}
/// <summary>
/// Pause method
/// </summary>
public void Pause(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RSCAN, pressRelease);
}
/// <summary>
/// Play method
/// </summary>
public void Play(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_PLAY, pressRelease);
}
/// <summary>
/// Record method
/// </summary>
public void Record(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RECORD, pressRelease);
}
/// <summary>
/// Rewind method
/// </summary>
public void Rewind(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RSCAN, pressRelease);
}
/// <summary>
/// Stop method
/// </summary>
public void Stop(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_STOP, pressRelease);
@@ -349,22 +493,34 @@ namespace PepperDash.Essentials.Devices.Common
#region IUsageTracking Members
/// <summary>
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
#endregion
#region IPower Members
/// <summary>
/// PowerOn method
/// </summary>
public void PowerOn()
{
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_ON, IrPulseTime);
}
/// <summary>
/// PowerOff method
/// </summary>
public void PowerOff()
{
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_OFF, IrPulseTime);
}
/// <summary>
/// PowerToggle method
/// </summary>
public void PowerToggle()
{
IrPort.Pulse(IROutputStandardCommands.IROut_POWER, IrPulseTime);
@@ -372,6 +528,10 @@ namespace PepperDash.Essentials.Devices.Common
#endregion
/// <summary>
/// LinkToApi method
/// </summary>
/// <inheritdoc />
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
var joinMap = new SetTopBoxControllerJoinMap(joinStart);
@@ -495,6 +655,9 @@ namespace PepperDash.Essentials.Devices.Common
}
}
/// <summary>
/// Represents a IRSetTopBoxBaseFactory
/// </summary>
public class IRSetTopBoxBaseFactory : EssentialsDeviceFactory<IRSetTopBoxBase>
{
public IRSetTopBoxBaseFactory()
@@ -502,6 +665,10 @@ namespace PepperDash.Essentials.Devices.Common
TypeNames = new List<string>() { "settopbox" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new SetTopBox Device");

View File

@@ -8,14 +8,35 @@ using PepperDash.Core;
namespace PepperDash.Essentials.Devices.Common
{
/// <summary>
/// Represents a SetTopBoxPropertiesConfig
/// </summary>
public class SetTopBoxPropertiesConfig : PepperDash.Essentials.Core.Config.SourceDevicePropertiesConfigBase
{
/// <summary>
/// Gets or sets the HasPresets
/// </summary>
public bool HasPresets { get; set; }
/// <summary>
/// Gets or sets the HasDvr
/// </summary>
public bool HasDvr { get; set; }
/// <summary>
/// Gets or sets the HasDpad
/// </summary>
public bool HasDpad { get; set; }
/// <summary>
/// Gets or sets the HasNumeric
/// </summary>
public bool HasNumeric { get; set; }
/// <summary>
/// Gets or sets the IrPulseTime
/// </summary>
public int IrPulseTime { get; set; }
/// <summary>
/// Gets or sets the Control
/// </summary>
public ControlPropertiesConfig Control { get; set; }
}
}

View File

@@ -22,6 +22,9 @@ namespace PepperDash.Essentials.Devices.Common.Shades
int RelayPulseTime;
/// <summary>
/// Gets or sets the StopOrPresetButtonLabel
/// </summary>
public string StopOrPresetButtonLabel { get; set; }
public RelayControlledShade(string key, string name, RelayControlledShadeConfigProperties config)
@@ -35,6 +38,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
/// <summary>
/// CustomActivate method
/// </summary>
/// <inheritdoc />
public override bool CustomActivate()
{
//Create ISwitchedOutput objects based on props
@@ -46,6 +53,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
return base.CustomActivate();
}
/// <summary>
/// Open method
/// </summary>
/// <inheritdoc />
public override void Open()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Opening Shade: '{0}'", this.Name);
@@ -53,6 +64,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
PulseOutput(OpenRelay, RelayPulseTime);
}
/// <summary>
/// Stop method
/// </summary>
/// <inheritdoc />
public override void Stop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Shade: '{0}'", this.Name);
@@ -60,6 +75,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
PulseOutput(StopOrPresetRelay, RelayPulseTime);
}
/// <summary>
/// Close method
/// </summary>
/// <inheritdoc />
public override void Close()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Closing Shade: '{0}'", this.Name);
@@ -95,20 +114,47 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
/// <summary>
/// Represents a RelayControlledShadeConfigProperties
/// </summary>
public class RelayControlledShadeConfigProperties
{
/// <summary>
/// Gets or sets the RelayPulseTime
/// </summary>
public int RelayPulseTime { get; set; }
/// <summary>
/// Gets or sets the Relays
/// </summary>
public ShadeRelaysConfig Relays { get; set; }
/// <summary>
/// Gets or sets the StopOrPresetLabel
/// </summary>
public string StopOrPresetLabel { get; set; }
/// <summary>
/// Represents a ShadeRelaysConfig
/// </summary>
public class ShadeRelaysConfig
{
/// <summary>
/// Gets or sets the Open
/// </summary>
public IOPortConfig Open { get; set; }
/// <summary>
/// Gets or sets the StopOrPreset
/// </summary>
public IOPortConfig StopOrPreset { get; set; }
/// <summary>
/// Gets or sets the Close
/// </summary>
public IOPortConfig Close { get; set; }
}
}
/// <summary>
/// Represents a RelayControlledShadeFactory
/// </summary>
public class RelayControlledShadeFactory : EssentialsDeviceFactory<RelayControlledShade>
{
public RelayControlledShadeFactory()
@@ -116,6 +162,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
TypeNames = new List<string>() { "relaycontrolledshade" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Generic Comm Device");

View File

@@ -24,6 +24,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
Shades = new List<IShadesOpenCloseStop>();
}
/// <summary>
/// CustomActivate method
/// </summary>
/// <inheritdoc />
public override bool CustomActivate()
{
foreach (var shadeConfig in Config.Shades)
@@ -44,17 +48,32 @@ namespace PepperDash.Essentials.Devices.Common.Shades
}
}
/// <summary>
/// Represents a ShadeControllerConfigProperties
/// </summary>
public class ShadeControllerConfigProperties
{
/// <summary>
/// Gets or sets the Shades
/// </summary>
public List<ShadeConfig> Shades { get; set; }
/// <summary>
/// Represents a ShadeConfig
/// </summary>
public class ShadeConfig
{
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; set; }
}
}
/// <summary>
/// Represents a ShadeControllerFactory
/// </summary>
public class ShadeControllerFactory : EssentialsDeviceFactory<ShadeController>
{
public ShadeControllerFactory()
@@ -62,6 +81,10 @@ namespace PepperDash.Essentials.Devices.Common.Shades
TypeNames = new List<string>() { "shadecontroller" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new ShadeController Device");

View File

@@ -11,15 +11,24 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.SoftCodec
{
/// <summary>
/// Represents a BlueJeansPc
/// </summary>
public class BlueJeansPc : InRoomPc, IRunRouteAction, IRoutingSink
{
/// <summary>
/// Gets or sets the AnyVideoIn
/// </summary>
public RoutingInputPort AnyVideoIn { get; private set; }
public RoutingInputPort CurrentInputPort => AnyVideoIn;
#region IRoutingInputs Members
/// <summary>
/// Gets or sets the InputPorts
/// </summary>
public RoutingPortCollection<RoutingInputPort> InputPorts { get; private set; }
#endregion
@@ -35,11 +44,17 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
#region IRunRouteAction Members
/// <summary>
/// RunRouteAction method
/// </summary>
public void RunRouteAction(string routeKey, string sourceListKey)
{
RunRouteAction(routeKey, sourceListKey, null);
}
/// <summary>
/// RunRouteAction method
/// </summary>
public void RunRouteAction(string routeKey, string sourceListKey, Action successCallback)
{
CrestronInvoke.BeginInvoke(o =>
@@ -128,6 +143,9 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
#region IHasCurrentSourceInfoChange Members
/// <summary>
/// Gets or sets the CurrentSourceInfoKey
/// </summary>
public string CurrentSourceInfoKey { get; set; }
/// <summary>
@@ -164,6 +182,9 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
#endregion
}
/// <summary>
/// Represents a BlueJeansPcFactory
/// </summary>
public class BlueJeansPcFactory : EssentialsDeviceFactory<BlueJeansPc>
{
public BlueJeansPcFactory()
@@ -171,6 +192,10 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
TypeNames = new List<string>() { "bluejeanspc" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new BlueJeansPc Device");

View File

@@ -8,10 +8,16 @@ using System.Linq;
namespace PepperDash.Essentials.Devices.Common.SoftCodec
{
/// <summary>
/// Represents a GenericSoftCodec
/// </summary>
public class GenericSoftCodec : EssentialsDevice, IRoutingSource, IRoutingSinkWithSwitchingWithInputPort
{
private RoutingInputPort _currentInputPort;
/// <summary>
/// Gets or sets the CurrentInputPort
/// </summary>
public RoutingInputPort CurrentInputPort {
get => _currentInputPort;
set
@@ -54,9 +60,18 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
}
}
/// <summary>
/// Gets or sets the InputPorts
/// </summary>
public RoutingPortCollection<RoutingInputPort> InputPorts { get; private set; }
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
/// <summary>
/// Gets or sets the CurrentSourceInfoKey
/// </summary>
public string CurrentSourceInfoKey { get ; set; }
public SourceListItem CurrentSourceInfo
{
@@ -85,6 +100,9 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
public event SourceInfoChangeHandler CurrentSourceChange;
public event InputChangedEventHandler InputChanged;
/// <summary>
/// ExecuteSwitch method
/// </summary>
public void ExecuteSwitch(object inputSelector)
{
var inputPort = InputPorts.FirstOrDefault(p => p.Selector == inputSelector);
@@ -99,21 +117,39 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
}
}
/// <summary>
/// Represents a GenericSoftCodecProperties
/// </summary>
public class GenericSoftCodecProperties
{
[JsonProperty("hasCameraInputs")]
/// <summary>
/// Gets or sets the HasCameraInputs
/// </summary>
public bool HasCameraInputs { get; set; }
[JsonProperty("cameraInputCount")]
/// <summary>
/// Gets or sets the CameraInputCount
/// </summary>
public int CameraInputCount { get; set; }
[JsonProperty("contentInputCount")]
/// <summary>
/// Gets or sets the ContentInputCount
/// </summary>
public int ContentInputCount { get; set; }
[JsonProperty("contentOutputCount")]
/// <summary>
/// Gets or sets the OutputCount
/// </summary>
public int OutputCount { get; set; }
}
/// <summary>
/// Represents a GenericSoftCodecFactory
/// </summary>
public class GenericSoftCodecFactory: EssentialsDeviceFactory<GenericSoftCodec>
{
public GenericSoftCodecFactory()
@@ -121,6 +157,10 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
TypeNames = new List<string> { "genericsoftcodec" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Attempting to create new Generic SoftCodec Device");

View File

@@ -7,19 +7,34 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Sources
{
/// <summary>
/// Represents a InRoomPc
/// </summary>
public class InRoomPc : EssentialsDevice, IHasFeedback, IRoutingSource, IRoutingOutputs, IAttachVideoStatus, IUiDisplayInfo, IUsageTracking
{
/// <summary>
/// Gets or sets the DisplayUiType
/// </summary>
public uint DisplayUiType { get { return DisplayUiConstants.TypeLaptop; } }
/// <summary>
/// Gets or sets the IconName
/// </summary>
public string IconName { get; set; }
/// <summary>
/// Gets or sets the HasPowerOnFeedback
/// </summary>
public BoolFeedback HasPowerOnFeedback { get; private set; }
/// <summary>
/// Gets or sets the AnyVideoOut
/// </summary>
public RoutingOutputPort AnyVideoOut { get; private set; }
#region IRoutingOutputs Members
/// <summary>
/// Options: hdmi
/// </summary>
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
#endregion
@@ -54,11 +69,17 @@ namespace PepperDash.Essentials.Devices.Common.Sources
#region IUsageTracking Members
/// <summary>
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
#endregion
}
/// <summary>
/// Represents a InRoomPcFactory
/// </summary>
public class InRoomPcFactory : EssentialsDeviceFactory<InRoomPc>
{
public InRoomPcFactory()
@@ -66,6 +87,10 @@ namespace PepperDash.Essentials.Devices.Common.Sources
TypeNames = new List<string>() { "inroompc" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new InRoomPc Device");

View File

@@ -7,19 +7,34 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Sources
{
/// <summary>
/// Represents a Laptop
/// </summary>
public class Laptop : EssentialsDevice, IHasFeedback, IRoutingSource, IRoutingOutputs, IAttachVideoStatus, IUiDisplayInfo, IUsageTracking
{
/// <summary>
/// Gets or sets the DisplayUiType
/// </summary>
public uint DisplayUiType { get { return DisplayUiConstants.TypeLaptop; } }
/// <summary>
/// Gets or sets the IconName
/// </summary>
public string IconName { get; set; }
/// <summary>
/// Gets or sets the HasPowerOnFeedback
/// </summary>
public BoolFeedback HasPowerOnFeedback { get; private set; }
/// <summary>
/// Gets or sets the AnyVideoOut
/// </summary>
public RoutingOutputPort AnyVideoOut { get; private set; }
#region IRoutingOutputs Members
/// <summary>
/// Options: hdmi
/// </summary>
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
#endregion
@@ -58,11 +73,17 @@ namespace PepperDash.Essentials.Devices.Common.Sources
#region IUsageTracking Members
/// <summary>
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
#endregion
}
/// <summary>
/// Represents a LaptopFactory
/// </summary>
public class LaptopFactory : EssentialsDeviceFactory<Laptop>
{
public LaptopFactory()
@@ -70,6 +91,10 @@ namespace PepperDash.Essentials.Devices.Common.Sources
TypeNames = new List<string>() { "laptop" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Laptop Device");

View File

@@ -18,11 +18,20 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common
{
[Description("Wrapper class for an IR-Controlled AppleTV")]
/// <summary>
/// Represents a AppleTV
/// </summary>
public class AppleTV : EssentialsBridgeableDevice, IDPad, ITransport, IUiDisplayInfo, IRoutingSource, IRoutingOutputs
{
/// <summary>
/// Gets or sets the IrPort
/// </summary>
public IrOutputPortController IrPort { get; private set; }
public const string StandardDriverName = "Apple_AppleTV_4th_Gen_Essentials.ir";
/// <summary>
/// Gets or sets the DisplayUiType
/// </summary>
public uint DisplayUiType { get { return DisplayUiConstants.TypeAppleTv; } }
public AppleTV(string key, string name, IrOutputPortController portCont)
@@ -40,6 +49,9 @@ namespace PepperDash.Essentials.Devices.Common
PrintExpectedIrCommands();
}
/// <summary>
/// PrintExpectedIrCommands method
/// </summary>
public void PrintExpectedIrCommands()
{
var cmds = typeof (AppleTvIrCommands).GetFields(BindingFlags.Public | BindingFlags.Static);
@@ -52,36 +64,57 @@ namespace PepperDash.Essentials.Devices.Common
#region IDPad Members
/// <summary>
/// Up method
/// </summary>
public void Up(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.Up, pressRelease);
}
/// <summary>
/// Down method
/// </summary>
public void Down(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.Down, pressRelease);
}
/// <summary>
/// Left method
/// </summary>
public void Left(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.Left, pressRelease);
}
/// <summary>
/// Right method
/// </summary>
public void Right(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.Right, pressRelease);
}
/// <summary>
/// Select method
/// </summary>
public void Select(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.Enter, pressRelease);
}
/// <summary>
/// Menu method
/// </summary>
public void Menu(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.Menu, pressRelease);
}
/// <summary>
/// Exit method
/// </summary>
public void Exit(bool pressRelease)
{
@@ -91,11 +124,17 @@ namespace PepperDash.Essentials.Devices.Common
#region ITransport Members
/// <summary>
/// Play method
/// </summary>
public void Play(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.PlayPause, pressRelease);
}
/// <summary>
/// Pause method
/// </summary>
public void Pause(bool pressRelease)
{
IrPort.PressRelease(AppleTvIrCommands.PlayPause, pressRelease);
@@ -105,6 +144,9 @@ namespace PepperDash.Essentials.Devices.Common
/// Not implemented
/// </summary>
/// <param name="pressRelease"></param>
/// <summary>
/// Rewind method
/// </summary>
public void Rewind(bool pressRelease)
{
}
@@ -155,10 +197,16 @@ namespace PepperDash.Essentials.Devices.Common
public RoutingOutputPort HdmiOut { get; private set; }
public RoutingOutputPort AnyAudioOut { get; private set; }
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
#endregion
/// <summary>
/// LinkToApi method
/// </summary>
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
var joinMap = new AppleTvJoinMap(joinStart);
@@ -190,6 +238,9 @@ namespace PepperDash.Essentials.Devices.Common
}
}
/// <summary>
/// Represents a AppleTVFactory
/// </summary>
public class AppleTVFactory : EssentialsDeviceFactory<AppleTV>
{
public AppleTVFactory()
@@ -197,6 +248,10 @@ namespace PepperDash.Essentials.Devices.Common
TypeNames = new List<string>() { "appletv" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new AppleTV Device");

View File

@@ -14,12 +14,21 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common
{
[Description("Wrapper class for an IR-Controlled Roku")]
/// <summary>
/// Represents a Roku2
/// </summary>
public class Roku2 : EssentialsDevice, IDPad, ITransport, IUiDisplayInfo, IRoutingSource, IRoutingOutputs
{
[Api]
/// <summary>
/// Gets or sets the IrPort
/// </summary>
public IrOutputPortController IrPort { get; private set; }
public const string StandardDriverName = "Roku XD_S.ir";
[Api]
/// <summary>
/// Gets or sets the DisplayUiType
/// </summary>
public uint DisplayUiType { get { return DisplayUiConstants.TypeRoku; } }
public Roku2(string key, string name, IrOutputPortController portCont)
@@ -36,42 +45,63 @@ namespace PepperDash.Essentials.Devices.Common
#region IDPad Members
[Api]
/// <summary>
/// Up method
/// </summary>
public void Up(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_UP_ARROW, pressRelease);
}
[Api]
/// <summary>
/// Down method
/// </summary>
public void Down(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_DN_ARROW, pressRelease);
}
[Api]
/// <summary>
/// Left method
/// </summary>
public void Left(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_LEFT_ARROW, pressRelease);
}
[Api]
/// <summary>
/// Right method
/// </summary>
public void Right(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RIGHT_ARROW, pressRelease);
}
[Api]
/// <summary>
/// Select method
/// </summary>
public void Select(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_ENTER, pressRelease);
}
[Api]
/// <summary>
/// Menu method
/// </summary>
public void Menu(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_MENU, pressRelease);
}
[Api]
/// <summary>
/// Exit method
/// </summary>
public void Exit(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_EXIT, pressRelease);
@@ -82,24 +112,36 @@ namespace PepperDash.Essentials.Devices.Common
#region ITransport Members
[Api]
/// <summary>
/// Play method
/// </summary>
public void Play(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_PLAY, pressRelease);
}
[Api]
/// <summary>
/// Pause method
/// </summary>
public void Pause(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_PAUSE, pressRelease);
}
[Api]
/// <summary>
/// Rewind method
/// </summary>
public void Rewind(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_RSCAN, pressRelease);
}
[Api]
/// <summary>
/// FFwd method
/// </summary>
public void FFwd(bool pressRelease)
{
IrPort.PressRelease(IROutputStandardCommands.IROut_FSCAN, pressRelease);
@@ -109,6 +151,9 @@ namespace PepperDash.Essentials.Devices.Common
/// Not implemented
/// </summary>
/// <param name="pressRelease"></param>
/// <summary>
/// ChapMinus method
/// </summary>
public void ChapMinus(bool pressRelease)
{
}
@@ -148,6 +193,9 @@ namespace PepperDash.Essentials.Devices.Common
}
/// <summary>
/// Represents a Roku2Factory
/// </summary>
public class Roku2Factory : EssentialsDeviceFactory<Roku2>
{
public Roku2Factory()
@@ -155,6 +203,10 @@ namespace PepperDash.Essentials.Devices.Common
TypeNames = new List<string>() { "roku" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new Roku Device");

View File

@@ -6,91 +6,217 @@ using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
/// <summary>
/// Represents a CiscoCallHistory
/// </summary>
public class CiscoCallHistory
{
/// <summary>
/// Represents a CallbackNumber
/// </summary>
public class CallbackNumber
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a DisplayName
/// </summary>
public class DisplayName
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a LastOccurrenceStartTime
/// </summary>
public class LastOccurrenceStartTime
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public DateTime Value { get; set; }
}
/// <summary>
/// Represents a LastOccurrenceDaysAgo
/// </summary>
public class LastOccurrenceDaysAgo
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a LastOccurrenceHistoryId
/// </summary>
public class LastOccurrenceHistoryId
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a OccurrenceType
/// </summary>
public class OccurrenceType
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a IsAcknowledged
/// </summary>
public class IsAcknowledged
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a OccurrenceCount
/// </summary>
public class OccurrenceCount
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a Entry
/// </summary>
public class Entry
{
/// <summary>
/// Gets or sets the id
/// </summary>
public string id { get; set; }
/// <summary>
/// Gets or sets the CallbackNumber
/// </summary>
public CallbackNumber CallbackNumber { get; set; }
/// <summary>
/// Gets or sets the DisplayName
/// </summary>
public DisplayName DisplayName { get; set; }
/// <summary>
/// Gets or sets the LastOccurrenceStartTime
/// </summary>
public LastOccurrenceStartTime LastOccurrenceStartTime { get; set; }
/// <summary>
/// Gets or sets the LastOccurrenceDaysAgo
/// </summary>
public LastOccurrenceDaysAgo LastOccurrenceDaysAgo { get; set; }
/// <summary>
/// Gets or sets the LastOccurrenceHistoryId
/// </summary>
public LastOccurrenceHistoryId LastOccurrenceHistoryId { get; set; }
/// <summary>
/// Gets or sets the OccurrenceType
/// </summary>
public OccurrenceType OccurrenceType { get; set; }
/// <summary>
/// Gets or sets the IsAcknowledged
/// </summary>
public IsAcknowledged IsAcknowledged { get; set; }
/// <summary>
/// Gets or sets the OccurrenceCount
/// </summary>
public OccurrenceCount OccurrenceCount { get; set; }
}
/// <summary>
/// Represents a Offset
/// </summary>
public class Offset
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a Limit
/// </summary>
public class Limit
{
/// <summary>
/// Gets or sets the Value
/// </summary>
public string Value { get; set; }
}
/// <summary>
/// Represents a ResultInfo
/// </summary>
public class ResultInfo
{
/// <summary>
/// Gets or sets the Offset
/// </summary>
public Offset Offset { get; set; }
/// <summary>
/// Gets or sets the Limit
/// </summary>
public Limit Limit { get; set; }
}
/// <summary>
/// Represents a CallHistoryRecentsResult
/// </summary>
public class CallHistoryRecentsResult
{
/// <summary>
/// Gets or sets the status
/// </summary>
public string status { get; set; }
/// <summary>
/// Gets or sets the Entry
/// </summary>
public List<Entry> Entry { get; set; }
/// <summary>
/// Gets or sets the ResultInfo
/// </summary>
public ResultInfo ResultInfo { get; set; }
}
/// <summary>
/// Represents a CommandResponse
/// </summary>
public class CommandResponse
{
/// <summary>
/// Gets or sets the CallHistoryRecentsResult
/// </summary>
public CallHistoryRecentsResult CallHistoryRecentsResult { get; set; }
}
/// <summary>
/// Represents a RootObject
/// </summary>
public class RootObject
{
/// <summary>
/// Gets or sets the CommandResponse
/// </summary>
public CommandResponse CommandResponse { get; set; }
}
}

View File

@@ -68,7 +68,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// Represents a room preset on a video codec. Typically stores camera position(s) and video routing. Can be recalled by Far End if enabled.
/// Represents a CodecRoomPreset
/// </summary>
public class CodecRoomPreset : PresetBase
{

View File

@@ -1,4 +1,7 @@
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
{
/// <summary>
/// Enumeration of eExternalSourceMode values
/// </summary>
public enum eExternalSourceMode {Ready, NotReady, Hidden, Error}
}

View File

@@ -1,4 +1,7 @@
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
{
/// <summary>
/// Enumeration of eExternalSourceType values
/// </summary>
public enum eExternalSourceType {camera, desktop, document_camera, mediaplayer, PC, whiteboard, other}
}

View File

@@ -21,12 +21,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
}
/// <summary>
/// Represents the information about a meeting in progress
/// Currently used for Zoom meetings
/// Represents a MeetingInfo
/// </summary>
public class MeetingInfo
{
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the Id
/// </summary>
public string Id { get; private set; }
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
public string Name { get; private set; }
@@ -35,18 +37,39 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
[JsonProperty("password", NullValueHandling = NullValueHandling.Ignore)]
public string Password { get; private set; }
[JsonProperty("shareStatus", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the ShareStatus
/// </summary>
public string ShareStatus { get; private set; }
[JsonProperty("isHost", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the IsHost
/// </summary>
public Boolean IsHost { get; private set; }
[JsonProperty("isSharingMeeting", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the IsSharingMeeting
/// </summary>
public Boolean IsSharingMeeting { get; private set; }
[JsonProperty("waitingForHost", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the WaitingForHost
/// </summary>
public Boolean WaitingForHost { get; private set; }
[JsonProperty("isLocked", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the IsLocked
/// </summary>
public Boolean IsLocked { get; private set; }
[JsonProperty("isRecording", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the IsRecording
/// </summary>
public Boolean IsRecording { get; private set; }
[JsonProperty("canRecord", NullValueHandling = NullValueHandling.Ignore)]
/// <summary>
/// Gets or sets the CanRecord
/// </summary>
public Boolean CanRecord { get; private set; }
@@ -66,8 +89,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
}
}
/// <summary>
/// Represents a MeetingInfoEventArgs
/// </summary>
public class MeetingInfoEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the Info
/// </summary>
public MeetingInfo Info { get; private set; }
public MeetingInfoEventArgs(MeetingInfo info)

View File

@@ -7,6 +7,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
{
/// <summary>
/// Defines the contract for IHasMeetingLock
/// </summary>
public interface IHasMeetingLock
{
BoolFeedback MeetingIsLockedFeedback { get; }

View File

@@ -7,6 +7,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
{
/// <summary>
/// Defines the contract for IHasMeetingRecording
/// </summary>
public interface IHasMeetingRecording
{
BoolFeedback MeetingIsRecordingFeedback { get; }
@@ -16,6 +19,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
void ToggleRecording();
}
/// <summary>
/// Defines the contract for IHasMeetingRecordingWithPrompt
/// </summary>
public interface IHasMeetingRecordingWithPrompt : IHasMeetingRecording
{
BoolFeedback RecordConsentPromptIsVisible { get; }

View File

@@ -42,9 +42,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
void ToggleVideoForParticipant(int userId);
}
/// <summary>
/// Describes the ability to mute and unmute a participant's audio in a meeting
/// </summary>
/// <summary>
/// Defines the contract for IHasParticipantAudioMute
/// </summary>
public interface IHasParticipantAudioMute : IHasParticipantVideoMute
{
/// <summary>
@@ -57,9 +57,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
void ToggleAudioForParticipant(int userId);
}
/// <summary>
/// Describes the ability to pin and unpin a participant in a meeting
/// </summary>
/// <summary>
/// Defines the contract for IHasParticipantPinUnpin
/// </summary>
public interface IHasParticipantPinUnpin : IHasParticipants
{
IntFeedback NumberOfScreensFeedback { get; }
@@ -70,6 +70,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
void ToggleParticipantPinState(int userId, int screenIndex);
}
/// <summary>
/// Represents a CodecParticipants
/// </summary>
public class CodecParticipants
{
private List<Participant> _currentParticipants;
@@ -99,6 +102,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
_currentParticipants = new List<Participant>();
}
/// <summary>
/// OnParticipantsChanged method
/// </summary>
public void OnParticipantsChanged()
{
var handler = ParticipantsListHasChanged;
@@ -109,12 +115,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
}
}
/// <summary>
/// Represents a call participant
/// </summary>
/// <summary>
/// Represents a Participant
/// </summary>
public class Participant
{
/// <summary>
/// Gets or sets the UserId
/// </summary>
public int UserId { get; set; }
/// <summary>
/// Gets or sets the IsHost
/// </summary>
public bool IsHost { get; set; }
public bool IsMyself { get; set; }
public string Name { get; set; }
@@ -122,8 +134,17 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
public bool CanUnmuteVideo { get; set; }
public bool VideoMuteFb { get; set; }
public bool AudioMuteFb { get; set; }
/// <summary>
/// Gets or sets the HandIsRaisedFb
/// </summary>
public bool HandIsRaisedFb { get; set; }
/// <summary>
/// Gets or sets the IsPinnedFb
/// </summary>
public bool IsPinnedFb { get; set; }
/// <summary>
/// Gets or sets the ScreenIndexIsPinnedToFb
/// </summary>
public int ScreenIndexIsPinnedToFb { get; set; }
public Participant()

View File

@@ -1,5 +1,8 @@
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
{
/// <summary>
/// Defines the contract for IHasPresentationOnlyMeeting
/// </summary>
public interface IHasPresentationOnlyMeeting
{
void StartSharingOnlyMeeting();
@@ -9,6 +12,9 @@
void StartNormalMeetingFromSharingOnlyMeeting();
}
/// <summary>
/// Enumeration of eSharingMeetingMode values
/// </summary>
public enum eSharingMeetingMode
{
None,

View File

@@ -3,6 +3,9 @@ using PepperDash.Essentials.Devices.Common.VideoCodec;
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
{
/// <summary>
/// Defines the contract for IHasSelfviewPosition
/// </summary>
public interface IHasSelfviewPosition
{
StringFeedback SelfviewPipPositionFeedback { get; }

View File

@@ -2,6 +2,9 @@
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
{
/// <summary>
/// Defines the contract for IHasSelfviewSize
/// </summary>
public interface IHasSelfviewSize
{
StringFeedback SelfviewPipSizeFeedback { get; }

View File

@@ -21,7 +21,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// Describes a device that has Half Waek Mode capability
/// Defines the contract for IHasHalfWakeMode
/// </summary>
public interface IHasHalfWakeMode : IHasStandbyMode
{

View File

@@ -8,6 +8,9 @@ using PepperDash.Essentials.Devices.Common.Codec;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
/// <summary>
/// Defines the contract for IJoinCalls
/// </summary>
public interface IJoinCalls
{
void JoinCall(CodecActiveCallItem activeCall);

View File

@@ -13,6 +13,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
public static class MockVideoCodecDirectory
{
/// <summary>
/// Enumeration of eFolderId values
/// </summary>
public enum eFolderId
{
UnitedStates,

View File

@@ -20,15 +20,36 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
/// <summary>
/// Represents a MockVC
/// </summary>
public class MockVC : VideoCodecBase, IRoutingSource, IHasCallHistory, IHasScheduleAwareness, IHasCallFavorites, IHasDirectory, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets
{
/// <summary>
/// Gets or sets the PropertiesConfig
/// </summary>
public MockVcPropertiesConfig PropertiesConfig;
/// <summary>
/// Gets or sets the CodecOsdIn
/// </summary>
public RoutingInputPort CodecOsdIn { get; private set; }
/// <summary>
/// Gets or sets the HdmiIn1
/// </summary>
public RoutingInputPort HdmiIn1 { get; private set; }
/// <summary>
/// Gets or sets the HdmiIn2
/// </summary>
public RoutingInputPort HdmiIn2 { get; private set; }
/// <summary>
/// Gets or sets the HdmiOut
/// </summary>
public RoutingOutputPort HdmiOut { get; private set; }
/// <summary>
/// Gets or sets the CallFavorites
/// </summary>
public CodecCallFavorites CallFavorites { get; private set; }
/// <summary>
@@ -137,8 +158,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// Dials, yo!
/// Dial method
/// </summary>
/// <inheritdoc />
public override void Dial(string number)
{
Debug.LogMessage(LogEventLevel.Debug, this, "Dial: {0}", number);
@@ -155,6 +177,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}, 2000);
}
/// <summary>
/// Dial method
/// </summary>
/// <inheritdoc />
public override void Dial(Meeting meeting)
{
Debug.LogMessage(LogEventLevel.Debug, this, "Dial Meeting: {0}", meeting.Id);
@@ -174,8 +200,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
///
/// EndCall method
/// </summary>
/// <inheritdoc />
public override void EndCall(CodecActiveCallItem call)
{
Debug.LogMessage(LogEventLevel.Debug, this, "EndCall");
@@ -185,8 +212,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
///
/// EndAllCalls method
/// </summary>
/// <inheritdoc />
public override void EndAllCalls()
{
Debug.LogMessage(LogEventLevel.Debug, this, "EndAllCalls");
@@ -200,8 +228,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// For a call from the test methods below
/// AcceptCall method
/// </summary>
/// <inheritdoc />
public override void AcceptCall(CodecActiveCallItem call)
{
Debug.LogMessage(LogEventLevel.Debug, this, "AcceptCall");
@@ -211,8 +240,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// For a call from the test methods below
/// RejectCall method
/// </summary>
/// <inheritdoc />
public override void RejectCall(CodecActiveCallItem call)
{
Debug.LogMessage(LogEventLevel.Debug, this, "RejectCall");
@@ -225,6 +255,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
/// Makes horrible tones go out on the wire!
/// </summary>
/// <param name="s"></param>
/// <summary>
/// SendDtmf method
/// </summary>
public override void SendDtmf(string s)
{
Debug.LogMessage(LogEventLevel.Debug, this, "SendDTMF: {0}", s);
@@ -253,11 +286,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
_StandbyIsOn = true;
}
/// <summary>
/// StandbyDeactivate method
/// </summary>
/// <inheritdoc />
public override void StandbyDeactivate()
{
_StandbyIsOn = false;
}
/// <summary>
/// LinkToApi method
/// </summary>
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
throw new NotImplementedException();
@@ -267,6 +307,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
/// Called by routing to make it happen
/// </summary>
/// <param name="selector"></param>
/// <summary>
/// ExecuteSwitch method
/// </summary>
/// <inheritdoc />
public override void ExecuteSwitch(object selector)
{
Debug.LogMessage(LogEventLevel.Debug, this, "ExecuteSwitch: {0}", selector);
@@ -304,6 +348,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
///
/// </summary>
/// <param name="level"></param>
/// <summary>
/// SetVolume method
/// </summary>
/// <inheritdoc />
public override void SetVolume(ushort level)
{
_VolumeLevel = level;
@@ -314,6 +362,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
///
/// </summary>
/// <param name="pressRelease"></param>
/// <summary>
/// VolumeDown method
/// </summary>
/// <inheritdoc />
public override void VolumeDown(bool pressRelease)
{
}
@@ -339,8 +391,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
///
/// PrivacyModeOff method
/// </summary>
/// <inheritdoc />
public override void PrivacyModeOff()
{
Debug.LogMessage(LogEventLevel.Debug, this, "PrivacyMuteOff");
@@ -351,8 +404,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
///
/// PrivacyModeToggle method
/// </summary>
/// <inheritdoc />
public override void PrivacyModeToggle()
{
_PrivacyModeIsOn = !_PrivacyModeIsOn;
@@ -367,6 +421,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
///
/// </summary>
/// <param name="url"></param>
/// <summary>
/// TestIncomingVideoCall method
/// </summary>
public void TestIncomingVideoCall(string url)
{
Debug.LogMessage(LogEventLevel.Debug, this, "TestIncomingVideoCall from {0}", url);
@@ -382,6 +439,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
///
/// </summary>
/// <param name="url"></param>
/// <summary>
/// TestIncomingAudioCall method
/// </summary>
public void TestIncomingAudioCall(string url)
{
Debug.LogMessage(LogEventLevel.Debug, this, "TestIncomingAudioCall from {0}", url);
@@ -393,7 +453,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
///
/// TestFarEndHangup method
/// </summary>
public void TestFarEndHangup()
{
@@ -406,6 +466,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public CodecCallHistory CallHistory { get; private set; }
/// <summary>
/// RemoveCallHistoryEntry method
/// </summary>
public void RemoveCallHistoryEntry(CodecCallHistory.CallHistoryEntry entry)
{
@@ -415,6 +478,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
#region IHasScheduleAwareness Members
/// <summary>
/// GetSchedule method
/// </summary>
public void GetSchedule()
{
@@ -487,6 +553,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
}
/// <summary>
/// SearchDirectory method
/// </summary>
public void SearchDirectory(string searchString)
{
var searchResults = new CodecDirectory();
@@ -507,6 +576,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
OnDirectoryResultReturned(searchResults);
}
/// <summary>
/// GetDirectoryFolderContents method
/// </summary>
public void GetDirectoryFolderContents(string folderId)
{
var folderDirectory = new CodecDirectory();
@@ -533,6 +605,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
OnDirectoryResultReturned(folderDirectory);
}
/// <summary>
/// SetCurrentDirectoryToRoot method
/// </summary>
public void SetCurrentDirectoryToRoot()
{
DirectoryBrowseHistory.Clear();
@@ -540,6 +615,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
OnDirectoryResultReturned(DirectoryRoot);
}
/// <summary>
/// GetDirectoryParentFolderContents method
/// </summary>
public void GetDirectoryParentFolderContents()
{
var currentDirectory = new CodecDirectory();
@@ -562,10 +640,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
OnDirectoryResultReturned(currentDirectory);
}
/// <summary>
/// Gets or sets the CurrentDirectoryResultIsNotDirectoryRoot
/// </summary>
public BoolFeedback CurrentDirectoryResultIsNotDirectoryRoot { get; private set; }
/// <summary>
/// Gets or sets the DirectoryBrowseHistory
/// </summary>
public List<CodecDirectory> DirectoryBrowseHistory { get; private set; }
/// <summary>
/// OnDirectoryResultReturned method
/// </summary>
public void OnDirectoryResultReturned(CodecDirectory result)
{
CurrentDirectoryResultIsNotDirectoryRoot.FireUpdate();
@@ -643,6 +730,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public event EventHandler<CameraSelectedEventArgs> CameraSelected;
/// <summary>
/// Gets or sets the Cameras
/// </summary>
public List<CameraBase> Cameras { get; private set; }
private CameraBase _selectedCamera;
@@ -670,8 +760,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
}
/// <summary>
/// Gets or sets the SelectedCameraFeedback
/// </summary>
public StringFeedback SelectedCameraFeedback { get; private set; }
/// <summary>
/// SelectCamera method
/// </summary>
public void SelectCamera(string key)
{
var camera = Cameras.FirstOrDefault(c => c.Key.ToLower().IndexOf(key.ToLower()) > -1);
@@ -688,8 +784,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
#region IHasFarEndCameraControl Members
/// <summary>
/// Gets or sets the FarEndCamera
/// </summary>
public CameraBase FarEndCamera { get; private set; }
/// <summary>
/// Gets or sets the ControllingFarEndCameraFeedback
/// </summary>
public BoolFeedback ControllingFarEndCameraFeedback { get; private set; }
#endregion
@@ -698,18 +800,27 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
private bool _CameraAutoModeIsOn;
/// <summary>
/// CameraAutoModeOn method
/// </summary>
public void CameraAutoModeOn()
{
_CameraAutoModeIsOn = true;
CameraAutoModeIsOnFeedback.FireUpdate();
}
/// <summary>
/// CameraAutoModeOff method
/// </summary>
public void CameraAutoModeOff()
{
_CameraAutoModeIsOn = false;
CameraAutoModeIsOnFeedback.FireUpdate();
}
/// <summary>
/// CameraAutoModeToggle method
/// </summary>
public void CameraAutoModeToggle()
{
if(_CameraAutoModeIsOn)
@@ -721,6 +832,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// Gets or sets the CameraAutoModeIsOnFeedback
/// </summary>
public BoolFeedback CameraAutoModeIsOnFeedback {get; private set;}
#endregion
@@ -729,10 +843,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public event EventHandler<EventArgs> CodecRoomPresetsListHasChanged;
/// <summary>
/// Gets or sets the NearEndPresets
/// </summary>
public List<CodecRoomPreset> NearEndPresets { get; private set; }
/// <summary>
/// Gets or sets the FarEndRoomPresets
/// </summary>
public List<CodecRoomPreset> FarEndRoomPresets { get; private set; }
/// <summary>
/// CodecRoomPresetSelect method
/// </summary>
public void CodecRoomPresetSelect(int preset)
{
if (SelectedCamera is IAmFarEndCamera)
@@ -745,6 +868,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
}
/// <summary>
/// CodecRoomPresetStore method
/// </summary>
public void CodecRoomPresetStore(int preset, string description)
{
var editPreset = NearEndPresets.FirstOrDefault(p => p.ID.Equals(preset));
@@ -767,6 +893,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
SetConfig(Config);
}
/// <summary>
/// SelectFarEndPreset method
/// </summary>
public void SelectFarEndPreset(int i)
{
Debug.LogMessage(LogEventLevel.Debug, this, "Selecting Far End Preset: {0}", i);
@@ -786,7 +915,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// Implementation for the mock VC
/// Represents a MockCodecInfo
/// </summary>
public class MockCodecInfo : VideoCodecInfo
{
@@ -801,38 +930,49 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
get { return "someE164alias"; }
}
/// <inheritdoc />
public override string H323Id
{
get { return "someH323Id"; }
}
/// <inheritdoc />
public override string IpAddress
{
get { return "xxx.xxx.xxx.xxx"; }
}
/// <inheritdoc />
public override string SipPhoneNumber
{
get { return "333-444-5555"; }
}
/// <inheritdoc />
public override string SipUri
{
get { return "mock@someurl.com"; }
}
/// <inheritdoc />
public override bool AutoAnswerEnabled
{
get { return _AutoAnswerEnabled; }
}
bool _AutoAnswerEnabled;
/// <summary>
/// SetAutoAnswer method
/// </summary>
public void SetAutoAnswer(bool value)
{
_AutoAnswerEnabled = value;
}
}
/// <summary>
/// Represents a MockVCFactory
/// </summary>
public class MockVCFactory : EssentialsDeviceFactory<MockVC>
{
public MockVCFactory()
@@ -840,6 +980,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
TypeNames = new List<string>() { "mockvc" };
}
/// <summary>
/// BuildDevice method
/// </summary>
/// <inheritdoc />
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new MockVC Device");

View File

@@ -11,6 +11,9 @@ using Serilog.Events;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
/// <summary>
/// Represents a MockVCCamera
/// </summary>
public class MockVCCamera : CameraBase, IHasCameraPtzControl, IHasCameraFocusControl, IBridgeAdvanced
{
protected VideoCodecBase ParentCodec { get; private set; }
@@ -26,6 +29,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraPtzControl Members
/// <summary>
/// PositionHome method
/// </summary>
public void PositionHome()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Resetting to home position");
@@ -35,16 +41,25 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraPanControl Members
/// <summary>
/// PanLeft method
/// </summary>
public void PanLeft()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Panning Left");
}
/// <summary>
/// PanRight method
/// </summary>
public void PanRight()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Panning Right");
}
/// <summary>
/// PanStop method
/// </summary>
public void PanStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Pan");
@@ -54,16 +69,25 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraTiltControl Members
/// <summary>
/// TiltDown method
/// </summary>
public void TiltDown()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Tilting Down");
}
/// <summary>
/// TiltUp method
/// </summary>
public void TiltUp()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Tilting Up");
}
/// <summary>
/// TiltStop method
/// </summary>
public void TiltStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Tilt");
@@ -73,16 +97,25 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraZoomControl Members
/// <summary>
/// ZoomIn method
/// </summary>
public void ZoomIn()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Zooming In");
}
/// <summary>
/// ZoomOut method
/// </summary>
public void ZoomOut()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Zooming Out");
}
/// <summary>
/// ZoomStop method
/// </summary>
public void ZoomStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Zoom");
@@ -92,21 +125,33 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraFocusControl Members
/// <summary>
/// FocusNear method
/// </summary>
public void FocusNear()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Focusing Near");
}
/// <summary>
/// FocusFar method
/// </summary>
public void FocusFar()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Focusing Far");
}
/// <summary>
/// FocusStop method
/// </summary>
public void FocusStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Focus");
}
/// <summary>
/// TriggerAutoFocus method
/// </summary>
public void TriggerAutoFocus()
{
Debug.LogMessage(LogEventLevel.Debug, this, "AutoFocus Triggered");
@@ -114,12 +159,18 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#endregion
/// <summary>
/// LinkToApi method
/// </summary>
public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkCameraToApi(this, trilist, joinStart, joinMapKey, bridge);
}
}
/// <summary>
/// Represents a MockFarEndVCCamera
/// </summary>
public class MockFarEndVCCamera : CameraBase, IHasCameraPtzControl, IAmFarEndCamera, IBridgeAdvanced
{
protected VideoCodecBase ParentCodec { get; private set; }
@@ -135,6 +186,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraPtzControl Members
/// <summary>
/// PositionHome method
/// </summary>
public void PositionHome()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Resetting to home position");
@@ -144,16 +198,25 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraPanControl Members
/// <summary>
/// PanLeft method
/// </summary>
public void PanLeft()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Panning Left");
}
/// <summary>
/// PanRight method
/// </summary>
public void PanRight()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Panning Right");
}
/// <summary>
/// PanStop method
/// </summary>
public void PanStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Pan");
@@ -163,16 +226,25 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraTiltControl Members
/// <summary>
/// TiltDown method
/// </summary>
public void TiltDown()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Tilting Down");
}
/// <summary>
/// TiltUp method
/// </summary>
public void TiltUp()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Tilting Up");
}
/// <summary>
/// TiltStop method
/// </summary>
public void TiltStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Tilt");
@@ -182,16 +254,25 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#region IHasCameraZoomControl Members
/// <summary>
/// ZoomIn method
/// </summary>
public void ZoomIn()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Zooming In");
}
/// <summary>
/// ZoomOut method
/// </summary>
public void ZoomOut()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Zooming Out");
}
/// <summary>
/// ZoomStop method
/// </summary>
public void ZoomStop()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Stopping Zoom");
@@ -199,6 +280,9 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
#endregion
/// <summary>
/// LinkToApi method
/// </summary>
public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkCameraToApi(this, trilist, joinStart, joinMapKey, bridge);

View File

@@ -13,12 +13,21 @@ using PepperDash.Essentials.Devices.Common.Codec;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
/// <summary>
/// Represents a MockVcPropertiesConfig
/// </summary>
public class MockVcPropertiesConfig
{
[JsonProperty("favorites")]
/// <summary>
/// Gets or sets the Favorites
/// </summary>
public List<CodecActiveCallItem> Favorites { get; set; }
[JsonProperty("presets")]
/// <summary>
/// Gets or sets the Presets
/// </summary>
public List<CodecRoomPreset> Presets { get; set; }
public MockVcPropertiesConfig()

View File

@@ -59,13 +59,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
ActiveCalls = new List<CodecActiveCallItem>();
}
/// <summary>
/// Gets or sets the Communication
/// </summary>
public IBasicCommunication Communication { get; protected set; }
/// <summary>
/// An internal pseudo-source that is routable and connected to the osd input
/// </summary>
/// <summary>
/// Gets or sets the OsdSource
/// </summary>
public DummyRoutingInputsDevice OsdSource { get; protected set; }
/// <summary>
/// Gets or sets the StandbyIsOnFeedback
/// </summary>
public BoolFeedback StandbyIsOnFeedback { get; private set; }
protected abstract Func<bool> PrivacyModeIsOnFeedbackFunc { get; }
@@ -75,11 +81,23 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public List<CodecActiveCallItem> ActiveCalls { get; set; }
/// <summary>
/// Gets or sets the ShowSelfViewByDefault
/// </summary>
public bool ShowSelfViewByDefault { get; protected set; }
/// <summary>
/// Gets or sets the SupportsCameraOff
/// </summary>
public bool SupportsCameraOff { get; protected set; }
/// <summary>
/// Gets or sets the SupportsCameraAutoMode
/// </summary>
public bool SupportsCameraAutoMode { get; protected set; }
/// <summary>
/// Gets or sets the IsReady
/// </summary>
public bool IsReady { get; protected set; }
public virtual List<Feedback> Feedbacks
@@ -102,9 +120,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public abstract void PrivacyModeOn();
public abstract void PrivacyModeOff();
public abstract void PrivacyModeToggle();
/// <summary>
/// Gets or sets the PrivacyModeIsOnFeedback
/// </summary>
public BoolFeedback PrivacyModeIsOnFeedback { get; private set; }
/// <summary>
/// Gets or sets the MuteFeedback
/// </summary>
public BoolFeedback MuteFeedback { get; private set; }
public abstract void MuteOff();
@@ -113,6 +137,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public abstract void SetVolume(ushort level);
/// <summary>
/// Gets or sets the VolumeLevelFeedback
/// </summary>
public IntFeedback VolumeLevelFeedback { get; private set; }
public abstract void MuteToggle();
@@ -129,9 +156,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public abstract void StartSharing();
public abstract void StopSharing();
/// <summary>
/// Gets or sets the AutoShareContentWhileInCall
/// </summary>
public bool AutoShareContentWhileInCall { get; protected set; }
/// <summary>
/// Gets or sets the SharingSourceFeedback
/// </summary>
public StringFeedback SharingSourceFeedback { get; private set; }
/// <summary>
/// Gets or sets the SharingContentIsOnFeedback
/// </summary>
public BoolFeedback SharingContentIsOnFeedback { get; private set; }
#endregion
@@ -161,24 +197,33 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public abstract void AcceptCall(CodecActiveCallItem call);
public abstract void RejectCall(CodecActiveCallItem call);
public abstract void SendDtmf(string s);
/// <summary>
/// SendDtmf method
/// </summary>
/// <inheritdoc />
public virtual void SendDtmf(string s, CodecActiveCallItem call) { }
#endregion
#region IRoutingInputsOutputs Members
/// <summary>
/// Gets or sets the InputPorts
/// </summary>
public RoutingPortCollection<RoutingInputPort> InputPorts { get; private set; }
/// <summary>
/// Gets or sets the OutputPorts
/// </summary>
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
#endregion
#region IUsageTracking Members
/// <summary>
/// This object can be added by outside users of this class to provide usage tracking
/// for various services
/// </summary>
/// <summary>
/// Gets or sets the UsageTracker
/// </summary>
public UsageTracking UsageTracker { get; set; }
#endregion
@@ -192,6 +237,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public event EventHandler<EventArgs> IsReadyChange;
public abstract void Dial(Meeting meeting);
/// <summary>
/// Dial method
/// </summary>
/// <inheritdoc />
public virtual void Dial(IInvitableContact contact)
{
}
@@ -258,9 +307,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
// **** DEBUGGING THINGS ****
/// <summary>
///
/// </summary>
/// <summary>
/// ListCalls method
/// </summary>
/// <inheritdoc />
public virtual void ListCalls()
{
Debug.LogMessage(LogEventLevel.Debug, this, "Active Calls:");
@@ -879,6 +929,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
/// <summary>
/// Gets or sets the MeetingsToDisplayFeedback
/// </summary>
public IntFeedback MeetingsToDisplayFeedback { get; set; }
private string UpdateMeetingsListXSig(List<Meeting> meetings)
@@ -1874,9 +1927,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
/// <summary>
/// Used to track the status of syncronizing the phonebook values when connecting to a codec or refreshing the phonebook info
/// </summary>
/// <summary>
/// Represents a CodecPhonebookSyncState
/// </summary>
public class CodecPhonebookSyncState : IKeyed
{
private bool _InitialSyncComplete;
@@ -1901,24 +1954,45 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
}
/// <summary>
/// Gets or sets the InitialPhonebookFoldersWasReceived
/// </summary>
public bool InitialPhonebookFoldersWasReceived { get; private set; }
/// <summary>
/// Gets or sets the NumberOfContactsWasReceived
/// </summary>
public bool NumberOfContactsWasReceived { get; private set; }
/// <summary>
/// Gets or sets the PhonebookRootEntriesWasRecieved
/// </summary>
public bool PhonebookRootEntriesWasRecieved { get; private set; }
/// <summary>
/// Gets or sets the PhonebookHasFolders
/// </summary>
public bool PhonebookHasFolders { get; private set; }
/// <summary>
/// Gets or sets the NumberOfContacts
/// </summary>
public int NumberOfContacts { get; private set; }
#region IKeyed Members
/// <summary>
/// Gets or sets the Key
/// </summary>
public string Key { get; private set; }
#endregion
public event EventHandler<EventArgs> InitialSyncCompleted;
/// <summary>
/// InitialPhonebookFoldersReceived method
/// </summary>
public void InitialPhonebookFoldersReceived()
{
InitialPhonebookFoldersWasReceived = true;
@@ -1926,6 +2000,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
CheckSyncStatus();
}
/// <summary>
/// PhonebookRootEntriesReceived method
/// </summary>
public void PhonebookRootEntriesReceived()
{
PhonebookRootEntriesWasRecieved = true;
@@ -1933,6 +2010,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
CheckSyncStatus();
}
/// <summary>
/// SetPhonebookHasFolders method
/// </summary>
public void SetPhonebookHasFolders(bool value)
{
PhonebookHasFolders = value;
@@ -1940,6 +2020,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
Debug.LogMessage(LogEventLevel.Debug, this, "Phonebook has folders: {0}", PhonebookHasFolders);
}
/// <summary>
/// SetNumberOfContacts method
/// </summary>
public void SetNumberOfContacts(int contacts)
{
NumberOfContacts = contacts;
@@ -1950,6 +2033,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
CheckSyncStatus();
}
/// <summary>
/// CodecDisconnected method
/// </summary>
public void CodecDisconnected()
{
InitialPhonebookFoldersWasReceived = false;
@@ -1972,11 +2058,17 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
}
/// <summary>
/// Represents a codec command that might need to have a friendly label applied for UI feedback purposes
/// Represents a CodecCommandWithLabel
/// </summary>
public class CodecCommandWithLabel
{
/// <summary>
/// Gets or sets the Command
/// </summary>
public string Command { get; private set; }
/// <summary>
/// Gets or sets the Label
/// </summary>
public string Label { get; private set; }
public CodecCommandWithLabel(string command, string label)