wip: update XML comments

This commit is contained in:
Erik Meyer
2026-01-28 13:06:00 -05:00
parent 4db32e3720
commit 2b0c98444b
40 changed files with 786 additions and 61 deletions

View File

@@ -5,6 +5,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IAudioZone : IBasicVolumeWithFeedback
{
/// <summary>
/// Selects the specified input
/// </summary>
/// <param name="input">The input to select</param>
void SelectInput(ushort input);
}
}

View File

@@ -5,10 +5,26 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IBasicVolumeWithFeedback : IBasicVolumeControls
{
BoolFeedback MuteFeedback { get; }
/// <summary>
/// Mutes the volume
/// </summary>
void MuteOn();
/// <summary>
/// Unmutes the volume
/// </summary>
void MuteOff();
/// <summary>
/// Sets the volume to the specified level
/// </summary>
/// <param name="level">The volume level to set</param>
void SetVolume(ushort level);
/// <summary>
/// Gets the mute feedback
/// </summary>
IntFeedback VolumeLevelFeedback { get; }
}
}

View File

@@ -5,8 +5,14 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IBasicVolumeWithFeedbackAdvanced : IBasicVolumeWithFeedback
{
/// <summary>
/// Gets the raw volume level
/// </summary>
int RawVolumeLevel { get; }
/// <summary>
/// Gets the volume level units
/// </summary>
eVolumeLevelUnits Units { get; }
}
}

View File

@@ -7,26 +7,56 @@ using PepperDash.Essentials.Core.SmartObjects;
namespace PepperDash.Essentials.Core
{
/// <summary>
///
/// Defines the contract for IChannel
/// </summary>
public interface IChannel
{
/// <summary>
/// Channel up
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
///
void ChannelUp(bool pressRelease);
/// <summary>
/// Channel down
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void ChannelDown(bool pressRelease);
/// <summary>
/// Last channel
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void LastChannel(bool pressRelease);
/// <summary>
/// Guide
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
///
void Guide(bool pressRelease);
/// <summary>
/// Info
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void Info(bool pressRelease);
/// <summary>
/// Exit
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void Exit(bool pressRelease);
}
/// <summary>
///
/// IChannelExtensions class
/// </summary>
public static class IChannelExtensions
{
/// <summary>
/// LinkButtons method
/// </summary>
/// <summary>
/// LinkButtons method
/// </summary>
public static void LinkButtons(this IChannel dev, BasicTriList triList)
{
triList.SetBoolSigAction(123, dev.ChannelUp);
@@ -37,9 +67,9 @@ namespace PepperDash.Essentials.Core
triList.SetBoolSigAction(134, dev.Exit);
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <summary>
/// UnlinkButtons method
/// </summary>
public static void UnlinkButtons(this IChannel dev, BasicTriList triList)
{
triList.ClearBoolSigAction(123);

View File

@@ -7,24 +7,45 @@ using PepperDash.Essentials.Core.SmartObjects;
namespace PepperDash.Essentials.Core
{
/// <summary>
///
/// IColor interface
/// </summary>
public interface IColor
{
/// <summary>
/// Red button
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void Red(bool pressRelease);
/// <summary>
/// Green button
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void Green(bool pressRelease);
/// <summary>
/// Yellow button
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void Yellow(bool pressRelease);
/// <summary>
/// Blue button
/// </summary>
/// <param name="pressRelease">indicates whether this is a press or release</param>
void Blue(bool pressRelease);
}
/// <summary>
///
/// IColorExtensions class
/// </summary>
public static class IColorExtensions
{
/// <summary>
/// LinkButtons method
/// </summary>
/// <summary>
/// LinkButtons method
/// </summary>
/// <param name="dev">The IColor device</param>
/// <param name="TriList">The BasicTriList to link</param>
public static void LinkButtons(this IColor dev, BasicTriList TriList)
{
TriList.SetBoolSigAction(155, dev.Red);
@@ -33,9 +54,11 @@ namespace PepperDash.Essentials.Core
TriList.SetBoolSigAction(158, dev.Blue);
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <param name="dev">The IColor device</param>
/// <param name="triList">The BasicTriList to unlink</param>
public static void UnlinkButtons(this IColor dev, BasicTriList triList)
{
triList.ClearBoolSigAction(155);

View File

@@ -11,23 +11,57 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IDPad : IKeyed
{
/// <summary>
/// Up button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Up(bool pressRelease);
/// <summary>
/// Down button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Down(bool pressRelease);
/// <summary>
/// Left button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Left(bool pressRelease);
/// <summary>
/// Right button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Right(bool pressRelease);
/// <summary>
/// Select button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Select(bool pressRelease);
/// <summary>
/// Menu button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Menu(bool pressRelease);
/// <summary>
/// Exit button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Exit(bool pressRelease);
}
/// <summary>
///
/// IDPadExtensions class
/// </summary>
public static class IDPadExtensions
{
/// <summary>
/// LinkButtons method
/// </summary>
/// <summary>
/// LinkButtons method
/// </summary>
public static void LinkButtons(this IDPad dev, BasicTriList triList)
{
triList.SetBoolSigAction(138, dev.Up);
@@ -39,9 +73,9 @@ namespace PepperDash.Essentials.Core
triList.SetBoolSigAction(134, dev.Exit);
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <summary>
/// UnlinkButtons method
/// </summary>
public static void UnlinkButtons(this IDPad dev, BasicTriList triList)
{
triList.ClearBoolSigAction(138);

View File

@@ -16,24 +16,40 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IDvr : IDPad
{
/// <summary>
/// DVR List button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void DvrList(bool pressRelease);
/// <summary>
/// Record button press
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void Record(bool pressRelease);
}
/// <summary>
///
/// IDvrExtensions class
/// </summary>
public static class IDvrExtensions
{
/// <summary>
/// LinkButtons method
/// </summary>
/// <summary>
/// LinkButtons method
/// </summary>
/// <param name="dev">IDvr device</param>
/// <param name="triList">BasicTriList to link to</param>
public static void LinkButtons(this IDvr dev, BasicTriList triList)
{
triList.SetBoolSigAction(136, dev.DvrList);
triList.SetBoolSigAction(152, dev.Record);
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <param name="dev">IDvr device</param>
/// <param name="triList">BasicTriList to unlink from</param>
public static void UnlinkButtons(this IDvr dev, BasicTriList triList)
{
triList.ClearBoolSigAction(136);

View File

@@ -11,7 +11,15 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface IEmergencyOSD
{
/// <summary>
/// Shows an emergency message on the OSD
/// </summary>
/// <param name="url">The URL of the emergency message to display</param>
void ShowEmergencyMessage(string url);
/// <summary>
/// Hides the emergency message from the OSD
/// </summary>
void HideEmergencyMessage();
}
}

View File

@@ -5,37 +5,149 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IFullAudioSettings : IBasicVolumeWithFeedback
{
/// <summary>
/// SetBalance method
/// </summary>
/// <param name="level">level to set</param>
void SetBalance(ushort level);
/// <summary>
/// BalanceLeft method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void BalanceLeft(bool pressRelease);
/// <summary>
/// BalanceRight method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void BalanceRight(bool pressRelease);
/// <summary>
/// SetBass method
/// </summary>
/// <param name="level">level to set</param>
void SetBass(ushort level);
/// <summary>
/// BassUp method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void BassUp(bool pressRelease);
/// <summary>
/// BassDown method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void BassDown(bool pressRelease);
/// <summary>
/// SetTreble method
/// </summary>
/// <param name="level">level to set</param>
void SetTreble(ushort level);
/// <summary>
/// TrebleUp method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void TrebleUp(bool pressRelease);
/// <summary>
/// TrebleDown method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void TrebleDown(bool pressRelease);
/// <summary>
/// hasMaxVolume property
/// </summary>
bool hasMaxVolume { get; }
/// <summary>
/// SetMaxVolume method
/// </summary>
/// <param name="level">level to set</param>
void SetMaxVolume(ushort level);
/// <summary>
/// MaxVolumeUp method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void MaxVolumeUp(bool pressRelease);
/// <summary>
/// MaxVolumeDown method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void MaxVolumeDown(bool pressRelease);
/// <summary>
/// hasDefaultVolume property
/// </summary>
bool hasDefaultVolume { get; }
/// <summary>
/// SetDefaultVolume method
/// </summary>
/// <param name="level">level to set</param>
void SetDefaultVolume(ushort level);
/// <summary>
/// DefaultVolumeUp method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void DefaultVolumeUp(bool pressRelease);
/// <summary>
/// DefaultVolumeDown method
/// </summary>
/// <param name="pressRelease">determines if the button is pressed or released</param>
void DefaultVolumeDown(bool pressRelease);
/// <summary>
/// LoudnessToggle method
/// </summary>
void LoudnessToggle();
/// <summary>
/// MonoToggle method
/// </summary>
void MonoToggle();
/// <summary>
/// LoudnessFeedback property
/// </summary>
BoolFeedback LoudnessFeedback { get; }
/// <summary>
/// MonoFeedback property
/// </summary>
BoolFeedback MonoFeedback { get; }
/// <summary>
/// BalanceFeedback property
/// </summary>
IntFeedback BalanceFeedback { get; }
/// <summary>
/// BassFeedback property
/// </summary>
IntFeedback BassFeedback { get; }
/// <summary>
/// TrebleFeedback property
/// </summary>
IntFeedback TrebleFeedback { get; }
/// <summary>
/// MaxVolumeFeedback property
/// </summary>
IntFeedback MaxVolumeFeedback { get; }
/// <summary>
/// DefaultVolumeFeedback property
/// </summary>
IntFeedback DefaultVolumeFeedback { get; }
}
}

View File

@@ -7,7 +7,15 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface IHasBranding
{
/// <summary>
/// Gets whether branding is enabled
/// </summary>
bool BrandingEnabled { get; }
/// <summary>
/// Initializes branding for the device
/// </summary>
/// <param name="roomKey">The key identifying the room for branding purposes</param>
void InitializeBranding(string roomKey);
}
}

View File

@@ -7,11 +7,24 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasCurrentVolumeControls
{
/// <summary>
/// CurrentVolumeControls property
/// </summary>
IBasicVolumeControls CurrentVolumeControls { get; }
/// <summary>
/// CurrentVolumeDeviceChange event
/// </summary>
event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
/// <summary>
/// SetDefaultLevels method
/// </summary>
void SetDefaultLevels();
/// <summary>
/// ZeroVolumeWhenSwtichingVolumeDevices property
/// </summary>
bool ZeroVolumeWhenSwtichingVolumeDevices { get; }
}
}

View File

@@ -5,6 +5,9 @@
/// </summary>
public interface IHasFarEndContentStatus
{
/// <summary>
/// Gets whether far end content is being received
/// </summary>
BoolFeedback ReceivingContent { get; }
}
}

View File

@@ -11,6 +11,9 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </example>
public interface IHasInputs<T> : IKeyName
{
/// <summary>
/// Gets the collection of inputs
/// </summary>
ISelectableItems<T> Inputs { get; }
}
}

View File

@@ -5,6 +5,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasMuteControl
{
/// <summary>
/// MuteToggle method
/// </summary>
void MuteToggle();
}
}

View File

@@ -5,8 +5,19 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasMuteControlWithFeedback : IHasMuteControl
{
/// <summary>
/// MuteFeedback property
/// </summary>
BoolFeedback MuteFeedback { get; }
/// <summary>
/// MuteOn method
/// </summary>
void MuteOn();
/// <summary>
/// MuteOff method
/// </summary>
void MuteOff();
}
}

View File

@@ -8,11 +8,36 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface IHasPhoneDialing
{
/// <summary>
/// Feedback that indicates whether the phone is off-hook
/// </summary>
BoolFeedback PhoneOffHookFeedback { get; }
/// <summary>
/// Feedback that provides the caller ID name
/// </summary>
StringFeedback CallerIdNameFeedback { get; }
/// <summary>
/// Feedback that provides the caller ID number
/// </summary>
StringFeedback CallerIdNumberFeedback { get; }
/// <summary>
/// Dials a phone call to the specified number
/// </summary>
/// <param name="number">the number to dial</param>
void DialPhoneCall(string number);
/// <summary>
/// Ends the current phone call
/// </summary>
void EndPhoneCall();
/// <summary>
/// Sends a DTMF digit to the phone
/// </summary>
/// <param name="digit">the DTMF digit to send</param>
void SendDtmfToPhone(string digit);
}
}

View File

@@ -11,10 +11,18 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// Describes a device that has selectable surround sound modes
/// </summary>
/// <typeparam name="TKey">the type to use as the key for each input item. Most likely an enum or string</typeparam>
/// <typeparam name="TSelector">the type used to select an item. Most likely an enum or string</typeparam>
public interface IHasSurroundSoundModes<TKey, TSelector>: IKeyName
{
/// <summary>
/// The available surround sound modes
/// </summary>
ISelectableItems<TKey> SurroundSoundModes { get; }
/// <summary>
/// The currently selected surround sound mode
/// </summary>
/// <param name="selector">the selector for the surround sound mode</param>
void SetSurroundSoundMode(TSelector selector);
}
}

View File

@@ -5,7 +5,16 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasVolumeControl
{
/// <summary>
/// VolumeUp method
/// </summary>
/// <param name="pressRelease">determines if the volume up command is a press or release action</param>
void VolumeUp(bool pressRelease);
/// <summary>
/// VolumeDown method
/// </summary>
/// <param name="pressRelease">determines if the volume down command is a press or release action</param>
void VolumeDown(bool pressRelease);
}
}

View File

@@ -5,7 +5,15 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasVolumeControlWithFeedback : IHasVolumeControl
{
/// <summary>
/// SetVolume method
/// </summary>
/// <param name="level">The volume level to set</param>
void SetVolume(ushort level);
/// <summary>
/// VolumeLevelFeedback property
/// </summary>
IntFeedback VolumeLevelFeedback { get; }
}
}

View File

@@ -5,6 +5,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasVolumeDevice
{
/// <summary>
/// VolumeDevice property
/// </summary>
IBasicVolumeControls VolumeDevice { get; }
}
}

View File

@@ -11,9 +11,28 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface IHasWebView
{
/// <summary>
/// Indicates whether the webview is currently visible
/// </summary>
bool WebviewIsVisible { get; }
/// <summary>
/// Shows the webview with the specified parameters
/// </summary>
/// <param name="url">the URL to display in the webview</param>
/// <param name="mode">the display mode for the webview</param>
/// <param name="title">the title to display on the webview</param>
/// <param name="target">the target for the webview</param>
void ShowWebView(string url, string mode, string title, string target);
/// <summary>
/// Hides the webview
/// </summary>
void HideWebView();
/// <summary>
/// Event raised when the webview status changes
/// </summary>
event EventHandler<WebViewStatusChangedEventArgs> WebViewStatusChanged;
}
@@ -27,6 +46,10 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public string Status { get; }
/// <summary>
/// Constructor for WebViewStatusChangedEventArgs
/// </summary>
/// <param name="status">the new status of the webview</param>
public WebViewStatusChangedEventArgs(string status)
{
Status = status;

View File

@@ -8,14 +8,49 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface ILanguageDefinition
{
/// <summary>
/// The locale name for the language definition
/// </summary>
string LocaleName { get; set; }
/// <summary>
/// The friendly name for the language definition
/// </summary>
string FriendlyName { get; set; }
/// <summary>
/// Indicates whether the language definition is enabled
/// </summary>
bool Enable { get; set; }
/// <summary>
/// The UI labels for the language definition
/// </summary>
List<LanguageLabel> UiLabels { get; set; }
/// <summary>
/// The source and destination labels for the language definition
/// </summary>
List<LanguageLabel> Sources { get; set; }
/// <summary>
/// The destination labels for the language definition
/// </summary>
List<LanguageLabel> Destinations { get; set; }
/// <summary>
/// The source group names for the language definition
/// </summary>
List<LanguageLabel> SourceGroupNames { get; set; }
/// <summary>
/// The destination group names for the language definition
/// </summary>
List<LanguageLabel> DestinationGroupNames { get; set; }
/// <summary>
/// The room names for the language definition
/// </summary>
List<LanguageLabel> RoomNames { get; set; }
}
}

View File

@@ -8,8 +8,14 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface ILanguageProvider
{
/// <summary>
/// The current language definition
/// </summary>
ILanguageDefinition CurrentLanguage { get; set; }
/// <summary>
/// Event raised when the current language changes
/// </summary>
event EventHandler CurrentLanguageChanged;
}

View File

@@ -11,6 +11,9 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface ILevelControls
{
/// <summary>
/// The level control points
/// </summary>
Dictionary<string, IBasicVolumeWithFeedback> LevelControlPoints { get; }
}
}

View File

@@ -8,8 +8,14 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface IMobileControlAction
{
/// <summary>
/// The messenger to use for mobile control actions
/// </summary>
IMobileControlMessenger Messenger { get; }
/// <summary>
/// The action to perform for mobile control actions
/// </summary>
Action<string, string, JToken> Action { get; }
}
}

View File

@@ -3,14 +3,26 @@ using Newtonsoft.Json.Linq;
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
{
/// <summary>
/// Defines the contract for IMobileControlMessage
/// </summary>
public interface IMobileControlMessage
{
/// <summary>
/// The type of mobile control message
/// </summary>
[JsonProperty("type")]
string Type { get; }
/// <summary>
/// The client ID for the mobile control message
/// </summary>
[JsonProperty("clientId", NullValueHandling = NullValueHandling.Ignore)]
string ClientId { get; }
/// <summary>
/// The content of the mobile control message
/// </summary>
[JsonProperty("content", NullValueHandling = NullValueHandling.Ignore)]
JToken Content { get; }

View File

@@ -8,26 +8,60 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface IMobileControlRoomMessenger : IKeyed
{
/// <summary>
/// Raised when the user code changes
/// </summary>
event EventHandler<EventArgs> UserCodeChanged;
/// <summary>
/// Raised when the user is prompted for the code
/// </summary>
event EventHandler<EventArgs> UserPromptedForCode;
/// <summary>
/// Raised when a client joins the room
/// </summary>
event EventHandler<EventArgs> ClientJoined;
/// <summary>
/// Raised when the app url changes
/// </summary>
event EventHandler<EventArgs> AppUrlChanged;
/// <summary>
/// The user code for joining the room
/// </summary>
string UserCode { get; }
/// <summary>
/// The QR code URL for joining the room
/// </summary>
string QrCodeUrl { get; }
/// <summary>
/// The QR code checksum
/// </summary>
string QrCodeChecksum { get; }
/// <summary>
/// The Mobile Control server URL
/// </summary>
string McServerUrl { get; }
/// <summary>
/// The name of the room
/// </summary>
string RoomName { get; }
/// <summary>
/// The Mobile Control app URL
/// </summary>
string AppUrl { get; }
/// <summary>
/// Updates the url of the Mobile Control app
/// </summary>
/// <param name="url">The new URL of the Mobile Control app</param>
void UpdateAppUrl(string url);
}
}

View File

@@ -10,37 +10,119 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface INumericKeypad:IKeyed
{
/// <summary>
/// Digit buttons 0
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit0(bool pressRelease);
/// <summary>
/// Digit buttons 1
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit1(bool pressRelease);
/// <summary>
/// Digit buttons 2
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit2(bool pressRelease);
/// <summary>
/// Digit buttons 3
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit3(bool pressRelease);
/// <summary>
/// Digit buttons 4
/// </summary>
/// <param name="pressRelease"></param>
void Digit4(bool pressRelease);
/// <summary>
/// Digit buttons 5
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit5(bool pressRelease);
/// <summary>
/// Digit buttons 6
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit6(bool pressRelease);
/// <summary>
/// Digit buttons 7
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit7(bool pressRelease);
/// <summary>
/// Digit buttons 8
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit8(bool pressRelease);
/// <summary>
/// Digit buttons 9
/// </summary>
/// <param name="pressRelease">determines if the digit button command is a press or release action</param>
void Digit9(bool pressRelease);
/// <summary>
/// Used to hide/show the button and/or text on the left-hand keypad button
/// </summary>
bool HasKeypadAccessoryButton1 { get; }
/// <summary>
/// Label for the left-hand keypad button
/// </summary>
string KeypadAccessoryButton1Label { get; }
/// <summary>
/// Left-hand keypad button action
/// </summary>
/// <param name="pressRelease">determines if the button command is a press or release action</param>
void KeypadAccessoryButton1(bool pressRelease);
/// <summary>
/// Used to hide/show the button and/or text on the right-hand keypad button
/// </summary>
bool HasKeypadAccessoryButton2 { get; }
/// <summary>
/// Label for the right-hand keypad button
/// </summary>
string KeypadAccessoryButton2Label { get; }
/// <summary>
/// Right-hand keypad button action
/// </summary>
/// <param name="pressRelease">determines if the button command is a press or release action</param>
void KeypadAccessoryButton2(bool pressRelease);
}
/// <summary>
/// Defines the contract for ISetTopBoxNumericKeypad
/// </summary>
public interface ISetTopBoxNumericKeypad : INumericKeypad
{
/// <summary>
/// Dash button action
/// </summary>
/// <param name="pressRelease">determines if the button command is a press or release action</param>
void Dash(bool pressRelease);
/// <summary>
/// Keypad Enter button action
/// </summary>
/// <param name="pressRelease">determines if the button command is a press or release action</param>
void KeypadEnter(bool pressRelease);
}
/// <summary>
///
/// INumericExtensions class
/// </summary>
public static class INumericExtensions
{
@@ -65,9 +147,9 @@ namespace PepperDash.Essentials.Core
trilist.StringInput[111].StringValue = dev.KeypadAccessoryButton2Label;
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <summary>
/// UnlinkButtons method
/// </summary>
public static void UnlinkButtons(this INumericKeypad dev, BasicTriList trilist)
{
trilist.ClearBoolSigAction(110);

View File

@@ -19,10 +19,13 @@ namespace PepperDash.Essentials.Core
/// <summary>
/// Submits the password
/// </summary>
/// <param name="password"></param>
/// <param name="password">The password to submit</param>
void SubmitPassword(string password);
}
/// <summary>
/// PasswordPromptEventArgs class
/// </summary>
public class PasswordPromptEventArgs : EventArgs
{
/// <summary>
@@ -45,6 +48,13 @@ namespace PepperDash.Essentials.Core
/// </summary>
public string Message { get; private set; }
/// <summary>
/// Constructor
/// </summary>
/// <param name="lastAttemptIncorrect">indicates if the last submitted password was incorrect</param>
/// <param name="loginFailed">indicates if the login attempt failed</param>
/// <param name="loginCancelled">indicates if the login attempt was cancelled</param>
/// <param name="message">provides a message related to the password prompt</param>
public PasswordPromptEventArgs(bool lastAttemptIncorrect, bool loginFailed, bool loginCancelled, string message)
{
LastAttemptWasIncorrect = lastAttemptIncorrect;

View File

@@ -19,6 +19,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasPowerControlWithFeedback : IHasPowerControl
{
/// <summary>
/// Feedback indicating whether the device is powered on
/// </summary>
BoolFeedback PowerIsOnFeedback { get; }
}
@@ -27,13 +30,24 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IHasPowerControl
{
/// <summary>
/// Powers the device on
/// </summary>
void PowerOn();
/// <summary>
/// Powers the device off
/// </summary>
void PowerOff();
/// <summary>
/// Toggles the power state of the device
/// </summary>
void PowerToggle();
}
/// <summary>
///
/// IHasPowerControlExtensions class
/// </summary>
public static class IHasPowerControlExtensions
{

View File

@@ -5,26 +5,60 @@ using Newtonsoft.Json.Converters;
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
{
/// <summary>
/// Defines the contract for IProjectorScreenLiftControl
/// </summary>
/// <summary>
/// Defines the contract for IProjectorScreenLiftControl
/// </summary>
public interface IProjectorScreenLiftControl
{
/// <summary>
/// Raises the screen/lift
/// </summary>
void Raise();
/// <summary>
/// Lowers the screen/lift
/// </summary>
void Lower();
/// <summary>
/// Stops the screen/lift
/// </summary>
BoolFeedback IsInUpPosition { get; }
/// <summary>
/// Gets whether the screen/lift is in the up position
/// </summary>
bool InUpPosition { get; }
/// <summary>
/// Gets whether the screen/lift is in the down position
/// </summary>
event EventHandler<EventArgs> PositionChanged;
/// <summary>
/// The device key of the display associated with this screen/lift
/// </summary>
string DisplayDeviceKey { get; }
/// <summary>
/// The type of device
/// </summary>
eScreenLiftControlType Type { get; } // screen/lift
}
/// <summary>
/// Enumeration of eScreenLiftControlType values
/// </summary>
/// <summary>
/// Enumeration of eScreenLiftControlType values
/// </summary>
public enum eScreenLiftControlType
{
/// <summary>
/// Lift type device
/// </summary>
lift,
/// <summary>
/// Screen type device
/// </summary>
screen
}
}

View File

@@ -10,10 +10,20 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface ISelectableItem : IKeyName
{
/// <summary>
/// Raised when the item is updated
/// </summary>
event EventHandler ItemUpdated;
/// <summary>
/// Gets or sets whether the item is selected
/// </summary>
[JsonProperty("isSelected")]
bool IsSelected { get; set; }
/// <summary>
/// Selects the item
/// </summary>
void Select();
}
}

View File

@@ -9,12 +9,25 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface ISelectableItems<TKey, TValue> where TValue : ISelectableItem
{
/// <summary>
/// Raised when the items are updated
/// </summary>
event EventHandler ItemsUpdated;
/// <summary>
/// Raised when the current item changes
/// </summary>
event EventHandler CurrentItemChanged;
/// <summary>
/// Gets or sets the collection of selectable items
/// </summary>
[JsonProperty("items")]
Dictionary<TKey, TValue> Items { get; set; }
/// <summary>
/// Gets or sets the current selected item key
/// </summary>
[JsonProperty("currentItem")]
TKey CurrentItem { get; set; }
@@ -24,9 +37,6 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// Describes a collection of items that can be selected
/// </summary>
/// <typeparam name="TKey">type for the keys in the collection. Probably a string or enum</typeparam>
/// <summary>
/// Defines the contract for ISelectableItems
/// </summary>
public interface ISelectableItems<TKey> : ISelectableItems<TKey, ISelectableItem>
{
}

View File

@@ -5,9 +5,9 @@ using PepperDash.Essentials.Core.SmartObjects;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Defines the contract for ISetTopBoxControls
/// </summary>
/// <summary>
/// Defines the contract for ISetTopBoxControls
/// </summary>
public interface ISetTopBoxControls : IChannel, IColor, IDPad, ISetTopBoxNumericKeypad,
ITransport, IUiDisplayInfo
{
@@ -31,27 +31,51 @@ namespace PepperDash.Essentials.Core
/// </summary>
bool HasDpad { get; }
/// <summary>
/// TV Presets model
/// </summary>
PepperDash.Essentials.Core.Presets.DevicePresetsModel TvPresets { get; }
/// <summary>
/// LoadPresets method
/// </summary>
/// <param name="filePath">path to file that contains the presets</param>
void LoadPresets(string filePath);
/// <summary>
/// DvrList button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void DvrList(bool pressRelease);
/// <summary>
/// Replay button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void Replay(bool pressRelease);
}
/// <summary>
/// ISetTopBoxControlsExtensions class
/// </summary>
public static class ISetTopBoxControlsExtensions
{
/// <summary>
/// LinkButtons method
/// </summary>
/// <summary>
/// LinkButtons method
/// </summary>
/// <param name="dev">The ISetTopBoxControls device</param>
/// <param name="triList">The BasicTriList to link buttons to</param>
public static void LinkButtons(this ISetTopBoxControls dev, BasicTriList triList)
{
triList.SetBoolSigAction(136, dev.DvrList);
triList.SetBoolSigAction(152, dev.Replay);
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <param name="dev">The ISetTopBoxControls device</param>
/// <param name="triList">The BasicTriList to unlink buttons from</param>
public static void UnlinkButtons(this ISetTopBoxControls dev, BasicTriList triList)
{
triList.ClearBoolSigAction(136);

View File

@@ -17,9 +17,15 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
IntFeedback TemperatureFeedback { get; }
/// <summary>
/// The temperature in Celsius format
/// </summary>
BoolFeedback TemperatureInCFeedback { get; }
/// <summary>
/// Sets the temperature format to Celsius or Fahrenheit
/// </summary>
/// <param name="setToC">If true, sets the format to Celsius; otherwise, sets it to Fahrenheit.</param>
void SetTemperatureFormat(bool setToC);
}
}

View File

@@ -7,25 +7,65 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface ITransport
{
/// <summary>
/// Play button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void Play(bool pressRelease);
/// <summary>
/// Pause button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void Pause(bool pressRelease);
/// <summary>
/// Rewind button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void Rewind(bool pressRelease);
/// <summary>
/// Fast Forward button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void FFwd(bool pressRelease);
/// <summary>
/// Chapter Minus button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void ChapMinus(bool pressRelease);
/// <summary>
/// Chapter Plus button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void ChapPlus(bool pressRelease);
/// <summary>
/// Stop button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void Stop(bool pressRelease);
/// <summary>
/// Record button action
/// </summary>
/// <param name="pressRelease">determines if the button action is a press or release</param>
void Record(bool pressRelease);
}
/// <summary>
///
/// ITransportExtensions class
/// </summary>
public static class ITransportExtensions
{
/// <summary>
/// Attaches to trilist joins: Play:145, Pause:146, Stop:147, ChapPlus:148, ChapMinus:149, Rewind:150, Ffwd:151, Record:154
///
/// </summary>
/// <param name="dev">The ITransport device</param>
/// <param name="triList">The BasicTriList to link buttons to</param>
public static void LinkButtons(this ITransport dev, BasicTriList triList)
{
triList.SetBoolSigAction(145, dev.Play);
@@ -38,9 +78,11 @@ namespace PepperDash.Essentials.Core
triList.SetBoolSigAction(154, dev.Record);
}
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <summary>
/// UnlinkButtons method
/// </summary>
/// <param name="dev">The ITransport device</param>
/// <param name="triList">The BasicTriList to unlink buttons from</param>
public static void UnlinkButtons(this ITransport dev, BasicTriList triList)
{
triList.ClearBoolSigAction(145);

View File

@@ -7,6 +7,9 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
/// </summary>
public interface ITvPresetsProvider
{
/// <summary>
/// The TV presets model
/// </summary>
DevicePresetsModel TvPresets { get; }
}
}

View File

@@ -2,11 +2,14 @@
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Defines the contract for IUiDisplayInfo
/// </summary>
/// <summary>
/// Defines the contract for IUiDisplayInfo
/// </summary>
public interface IUiDisplayInfo : IKeyed
{
/// <summary>
/// Display UI Type
/// </summary>
uint DisplayUiType { get; }
}
}

View File

@@ -11,7 +11,14 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IWarmingCooling
{
/// <summary>
/// Feedback indicating whether the device is warming up
/// </summary>
BoolFeedback IsWarmingUpFeedback { get; }
/// <summary>
/// Feedback indicating whether the device is cooling down
/// </summary>
BoolFeedback IsCoolingDownFeedback { get; }
}
}

View File

@@ -1,10 +1,28 @@
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Volume level units
/// </summary>
public enum eVolumeLevelUnits
{
/// <summary>
/// Decibels
/// </summary>
Decibels,
/// <summary>
/// Percent
/// </summary>
Percent,
/// <summary>
/// Relative
/// </summary>
Relative,
/// <summary>
/// Absolute
/// </summary>
Absolute
}
}