mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-31 05:14:51 +00:00
docs: XML comments for Devices.Common
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core.Presets;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
@@ -38,19 +36,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
/// <param name="preset"></param>
|
||||
/// <param name="description"></param>
|
||||
void CodecRoomPresetStore(int preset, string description);
|
||||
void CodecRoomPresetStore(int preset, string description);
|
||||
|
||||
/// <summary>
|
||||
/// Selects a far end preset by its ID. This is typically used to recall a preset that has been defined on the far end codec.
|
||||
/// </summary>
|
||||
/// <param name="preset"></param>
|
||||
void SelectFarEndPreset(int preset);
|
||||
void SelectFarEndPreset(int preset);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Static class for converting non-generic RoomPresets to generic CameraPresets.
|
||||
/// </summary>
|
||||
public static class RoomPresets
|
||||
public static class RoomPresets
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts non-generic RoomPresets to generic CameraPresets
|
||||
|
||||
@@ -3,5 +3,23 @@
|
||||
/// <summary>
|
||||
/// Enumeration of eExternalSourceMode values
|
||||
/// </summary>
|
||||
public enum eExternalSourceMode {Ready, NotReady, Hidden, Error}
|
||||
public enum eExternalSourceMode
|
||||
{
|
||||
/// <summary>
|
||||
/// Ready state
|
||||
/// </summary>
|
||||
Ready,
|
||||
/// <summary>
|
||||
/// Not ready state
|
||||
/// </summary>
|
||||
NotReady,
|
||||
/// <summary>
|
||||
/// Hidden state
|
||||
/// </summary>
|
||||
Hidden,
|
||||
/// <summary>
|
||||
/// Error state
|
||||
/// </summary>
|
||||
Error
|
||||
}
|
||||
}
|
||||
@@ -3,5 +3,35 @@
|
||||
/// <summary>
|
||||
/// Enumeration of eExternalSourceType values
|
||||
/// </summary>
|
||||
public enum eExternalSourceType {camera, desktop, document_camera, mediaplayer, PC, whiteboard, other}
|
||||
public enum eExternalSourceType
|
||||
{
|
||||
/// <summary>
|
||||
/// Camera source type
|
||||
/// </summary>
|
||||
camera,
|
||||
/// <summary>
|
||||
/// Desktop source type
|
||||
/// </summary>
|
||||
desktop,
|
||||
/// <summary>
|
||||
/// Document camera source type
|
||||
/// </summary>
|
||||
document_camera,
|
||||
/// <summary>
|
||||
/// Media player source type
|
||||
/// </summary>
|
||||
mediaplayer,
|
||||
/// <summary>
|
||||
/// PC source type
|
||||
/// </summary>
|
||||
PC,
|
||||
/// <summary>
|
||||
/// Whiteboard source type
|
||||
/// </summary>
|
||||
whiteboard,
|
||||
/// <summary>
|
||||
/// Other source type
|
||||
/// </summary>
|
||||
other
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
/// <summary>
|
||||
/// 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; }
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for <see cref="CodecCommandWithLabel"/>
|
||||
/// </summary>
|
||||
/// <param name="command">Command string</param>
|
||||
/// <param name="label">Label string</param>
|
||||
public CodecCommandWithLabel(string command, string label)
|
||||
{
|
||||
Command = command;
|
||||
Label = label;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
using System;
|
||||
using PepperDash.Core;
|
||||
using Serilog.Events;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a CodecPhonebookSyncState
|
||||
/// </summary>
|
||||
public class CodecPhonebookSyncState : IKeyed
|
||||
{
|
||||
private bool _InitialSyncComplete;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for CodecPhonebookSyncState
|
||||
/// </summary>
|
||||
/// <param name="key">Key for the codec phonebook sync state</param>
|
||||
public CodecPhonebookSyncState(string key)
|
||||
{
|
||||
Key = key;
|
||||
|
||||
CodecDisconnected();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the InitialSyncComplete
|
||||
/// </summary>
|
||||
public bool InitialSyncComplete
|
||||
{
|
||||
get { return _InitialSyncComplete; }
|
||||
private set
|
||||
{
|
||||
if (value == true)
|
||||
{
|
||||
InitialSyncCompleted?.Invoke(this, new EventArgs());
|
||||
}
|
||||
_InitialSyncComplete = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <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
|
||||
|
||||
/// <summary>
|
||||
/// Event InitialSyncCompleted
|
||||
/// </summary>
|
||||
public event EventHandler<EventArgs> InitialSyncCompleted;
|
||||
|
||||
/// <summary>
|
||||
/// InitialPhonebookFoldersReceived method
|
||||
/// </summary>
|
||||
public void InitialPhonebookFoldersReceived()
|
||||
{
|
||||
InitialPhonebookFoldersWasReceived = true;
|
||||
|
||||
CheckSyncStatus();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PhonebookRootEntriesReceived method
|
||||
/// </summary>
|
||||
public void PhonebookRootEntriesReceived()
|
||||
{
|
||||
PhonebookRootEntriesWasRecieved = true;
|
||||
|
||||
CheckSyncStatus();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SetPhonebookHasFolders method
|
||||
/// </summary>
|
||||
public void SetPhonebookHasFolders(bool value)
|
||||
{
|
||||
PhonebookHasFolders = value;
|
||||
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "Phonebook has folders: {0}", PhonebookHasFolders);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SetNumberOfContacts method
|
||||
/// </summary>
|
||||
public void SetNumberOfContacts(int contacts)
|
||||
{
|
||||
NumberOfContacts = contacts;
|
||||
NumberOfContactsWasReceived = true;
|
||||
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "Phonebook contains {0} contacts.", NumberOfContacts);
|
||||
|
||||
CheckSyncStatus();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CodecDisconnected method
|
||||
/// </summary>
|
||||
public void CodecDisconnected()
|
||||
{
|
||||
InitialPhonebookFoldersWasReceived = false;
|
||||
PhonebookHasFolders = false;
|
||||
NumberOfContacts = 0;
|
||||
NumberOfContactsWasReceived = false;
|
||||
}
|
||||
|
||||
private void CheckSyncStatus()
|
||||
{
|
||||
if (InitialPhonebookFoldersWasReceived && NumberOfContactsWasReceived && PhonebookRootEntriesWasRecieved)
|
||||
{
|
||||
InitialSyncComplete = true;
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "Initial Phonebook Sync Complete!");
|
||||
}
|
||||
else
|
||||
{
|
||||
InitialSyncComplete = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -2,8 +2,15 @@
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
/// <summary>
|
||||
/// Base class for presets that can be converted to PresetBase
|
||||
/// </summary>
|
||||
public abstract class ConvertiblePreset
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts the preset to a PresetBase
|
||||
/// </summary>
|
||||
/// <returns><see cref="PresetBase"/></returns>
|
||||
public abstract PresetBase ConvertCodecPreset();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a CodecParticipants
|
||||
/// </summary>
|
||||
public class CodecParticipants
|
||||
{
|
||||
private List<Participant> _currentParticipants;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the CurrentParticipants
|
||||
/// </summary>
|
||||
public List<Participant> CurrentParticipants
|
||||
{
|
||||
get { return _currentParticipants; }
|
||||
set
|
||||
{
|
||||
_currentParticipants = value;
|
||||
OnParticipantsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Host participant
|
||||
/// </summary>
|
||||
public Participant Host
|
||||
{
|
||||
get
|
||||
{
|
||||
return _currentParticipants.FirstOrDefault(p => p.IsHost);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event fired when the participants list has changed
|
||||
/// </summary>
|
||||
public event EventHandler<EventArgs> ParticipantsListHasChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the CodecParticipants class
|
||||
/// </summary>
|
||||
public CodecParticipants()
|
||||
{
|
||||
_currentParticipants = new List<Participant>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OnParticipantsChanged method
|
||||
/// </summary>
|
||||
public void OnParticipantsChanged()
|
||||
{
|
||||
var handler = ParticipantsListHasChanged;
|
||||
|
||||
if (handler == null) return;
|
||||
|
||||
handler(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,4 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
@@ -17,10 +7,24 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public interface IHasCodecLayouts
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates the current layout on the local display
|
||||
/// </summary>
|
||||
StringFeedback LocalLayoutFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Toggles the local layout
|
||||
/// </summary>
|
||||
void LocalLayoutToggle();
|
||||
void LocalLayoutToggleSingleProminent();
|
||||
void MinMaxLayoutToggle();
|
||||
|
||||
/// <summary>
|
||||
/// Toggles the local layout to single prominent
|
||||
/// </summary>
|
||||
void LocalLayoutToggleSingleProminent();
|
||||
|
||||
/// <summary>
|
||||
/// Toggle the MinMax layout
|
||||
/// </summary>
|
||||
void MinMaxLayoutToggle();
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
@@ -13,14 +7,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public interface IHasCodecSelfView
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether Selfview is on
|
||||
/// </summary>
|
||||
BoolFeedback SelfviewIsOnFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Setting that indicates whether the device shows selfview by default
|
||||
/// </summary>
|
||||
bool ShowSelfViewByDefault { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Turns selfview on
|
||||
/// </summary>
|
||||
void SelfViewModeOn();
|
||||
|
||||
/// <summary>
|
||||
/// Turns selfview off
|
||||
/// </summary>
|
||||
void SelfViewModeOff();
|
||||
|
||||
/// <summary>
|
||||
/// Toggles selfview mode
|
||||
/// </summary>
|
||||
void SelfViewModeToggle();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,6 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
@@ -15,94 +9,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
/// </summary>
|
||||
public interface IHasMeetingInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Raised when meeting info changes
|
||||
/// </summary>
|
||||
event EventHandler<MeetingInfoEventArgs> MeetingInfoChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current meeting information
|
||||
/// </summary>
|
||||
MeetingInfo MeetingInfo { get; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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; }
|
||||
[JsonProperty("host", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Host { get; private set; }
|
||||
[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; }
|
||||
|
||||
|
||||
public MeetingInfo(string id, string name, string host, string password, string shareStatus, bool isHost, bool isSharingMeeting, bool waitingForHost, bool isLocked, bool isRecording, bool canRecord)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
Host = host;
|
||||
Password = password;
|
||||
ShareStatus = shareStatus;
|
||||
IsHost = isHost;
|
||||
IsSharingMeeting = isSharingMeeting;
|
||||
WaitingForHost = waitingForHost;
|
||||
IsLocked = isLocked;
|
||||
IsRecording = isRecording;
|
||||
CanRecord = CanRecord;
|
||||
}
|
||||
}
|
||||
|
||||
/// <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)
|
||||
{
|
||||
Info = info;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
@@ -12,10 +7,24 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
/// </summary>
|
||||
public interface IHasMeetingLock
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether the meeting is locked
|
||||
/// </summary>
|
||||
BoolFeedback MeetingIsLockedFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Locks the meeting
|
||||
/// </summary>
|
||||
void LockMeeting();
|
||||
|
||||
/// <summary>
|
||||
/// Unlocks the meeting
|
||||
/// </summary>
|
||||
void UnLockMeeting();
|
||||
|
||||
/// <summary>
|
||||
/// Toggles the meeting lock state
|
||||
/// </summary>
|
||||
void ToggleMeetingLock();
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
@@ -12,24 +7,24 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
/// </summary>
|
||||
public interface IHasMeetingRecording
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether the meeting is being recorded
|
||||
/// </summary>
|
||||
BoolFeedback MeetingIsRecordingFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Starts recording the meeting
|
||||
/// </summary>
|
||||
void StartRecording();
|
||||
void StopRecording();
|
||||
void ToggleRecording();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasMeetingRecordingWithPrompt
|
||||
/// </summary>
|
||||
public interface IHasMeetingRecordingWithPrompt : IHasMeetingRecording
|
||||
{
|
||||
BoolFeedback RecordConsentPromptIsVisible { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Used to agree or disagree to the meeting being recorded when prompted
|
||||
/// Stops recording the meeting
|
||||
/// </summary>
|
||||
/// <param name="agree"></param>
|
||||
void RecordingPromptAcknowledgement(bool agree);
|
||||
void StopRecording();
|
||||
|
||||
/// <summary>
|
||||
/// Toggles recording the meeting
|
||||
/// </summary>
|
||||
void ToggleRecording();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasMeetingRecordingWithPrompt
|
||||
/// </summary>
|
||||
public interface IHasMeetingRecordingWithPrompt : IHasMeetingRecording
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether the recording consent prompt is visible
|
||||
/// </summary>
|
||||
BoolFeedback RecordConsentPromptIsVisible { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Used to agree or disagree to the meeting being recorded when prompted
|
||||
/// </summary>
|
||||
/// <param name="agree"></param>
|
||||
void RecordingPromptAcknowledgement(bool agree);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasParticipantAudioMute
|
||||
/// </summary>
|
||||
public interface IHasParticipantAudioMute : IHasParticipantVideoMute
|
||||
{
|
||||
/// <summary>
|
||||
/// Mute audio of all participants
|
||||
/// </summary>
|
||||
void MuteAudioForAllParticipants();
|
||||
|
||||
/// <summary>
|
||||
/// Mute audio for participant
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to mute</param>
|
||||
void MuteAudioForParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Unmute audio for participant
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to unmute</param>
|
||||
void UnmuteAudioForParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Toggles audio for participant
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to toggle</param>
|
||||
void ToggleAudioForParticipant(int userId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasParticipantPinUnpin
|
||||
/// </summary>
|
||||
public interface IHasParticipantPinUnpin : IHasParticipants
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates the number of screens available for pinning participants
|
||||
/// </summary>
|
||||
IntFeedback NumberOfScreensFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the screen index to pin the user to
|
||||
/// </summary>
|
||||
int ScreenIndexToPinUserTo { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Pins a participant to a screen
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to pin</param>
|
||||
/// <param name="screenIndex">The screen index to pin the user to</param>
|
||||
void PinParticipant(int userId, int screenIndex);
|
||||
|
||||
/// <summary>
|
||||
/// Unpins a participant
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to unpin</param>
|
||||
void UnPinParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Toggles the pin state of a participant
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to toggle</param>
|
||||
/// <param name="screenIndex">The screen index to pin the user to</param>
|
||||
void ToggleParticipantPinState(int userId, int screenIndex);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes the ability to mute and unmute a participant's video in a meeting
|
||||
/// </summary>
|
||||
public interface IHasParticipantVideoMute : IHasParticipants
|
||||
{
|
||||
/// <summary>
|
||||
/// Mute video of all participants
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to mute</param>
|
||||
void MuteVideoForParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Unmute video of all participants
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to unmute</param>
|
||||
void UnmuteVideoForParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Toggles video of a participant
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID of the participant to toggle</param>
|
||||
void ToggleVideoForParticipant(int userId);
|
||||
}
|
||||
}
|
||||
@@ -1,156 +1,31 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes a device that has call participants
|
||||
/// </summary>
|
||||
public interface IHasParticipants
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the collection of participants
|
||||
/// </summary>
|
||||
CodecParticipants Participants { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Removes the participant from the meeting
|
||||
/// </summary>
|
||||
/// <param name="participant"></param>
|
||||
void RemoveParticipant(int userId);
|
||||
/// <summary>
|
||||
/// Removes the participant from the meeting
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
void RemoveParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Sets the participant as the new host
|
||||
/// </summary>
|
||||
/// <param name="participant"></param>
|
||||
void SetParticipantAsHost(int userId);
|
||||
/// <summary>
|
||||
/// Sets the participant as the new host
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
void SetParticipantAsHost(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Admits a participant from the waiting room
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
void AdmitParticipantFromWaitingRoom(int userId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Describes the ability to mute and unmute a participant's video in a meeting
|
||||
/// </summary>
|
||||
public interface IHasParticipantVideoMute : IHasParticipants
|
||||
{
|
||||
void MuteVideoForParticipant(int userId);
|
||||
void UnmuteVideoForParticipant(int userId);
|
||||
void ToggleVideoForParticipant(int userId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasParticipantAudioMute
|
||||
/// </summary>
|
||||
public interface IHasParticipantAudioMute : IHasParticipantVideoMute
|
||||
{
|
||||
/// <summary>
|
||||
/// Mute audio of all participants
|
||||
/// </summary>
|
||||
void MuteAudioForAllParticipants();
|
||||
|
||||
void MuteAudioForParticipant(int userId);
|
||||
void UnmuteAudioForParticipant(int userId);
|
||||
void ToggleAudioForParticipant(int userId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasParticipantPinUnpin
|
||||
/// </summary>
|
||||
public interface IHasParticipantPinUnpin : IHasParticipants
|
||||
{
|
||||
IntFeedback NumberOfScreensFeedback { get; }
|
||||
int ScreenIndexToPinUserTo { get; }
|
||||
|
||||
void PinParticipant(int userId, int screenIndex);
|
||||
void UnPinParticipant(int userId);
|
||||
void ToggleParticipantPinState(int userId, int screenIndex);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents a CodecParticipants
|
||||
/// </summary>
|
||||
public class CodecParticipants
|
||||
{
|
||||
private List<Participant> _currentParticipants;
|
||||
|
||||
public List<Participant> CurrentParticipants
|
||||
{
|
||||
get { return _currentParticipants; }
|
||||
set
|
||||
{
|
||||
_currentParticipants = value;
|
||||
OnParticipantsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public Participant Host
|
||||
{
|
||||
get
|
||||
{
|
||||
return _currentParticipants.FirstOrDefault(p => p.IsHost);
|
||||
}
|
||||
}
|
||||
|
||||
public event EventHandler<EventArgs> ParticipantsListHasChanged;
|
||||
|
||||
public CodecParticipants()
|
||||
{
|
||||
_currentParticipants = new List<Participant>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OnParticipantsChanged method
|
||||
/// </summary>
|
||||
public void OnParticipantsChanged()
|
||||
{
|
||||
var handler = ParticipantsListHasChanged;
|
||||
|
||||
if (handler == null) return;
|
||||
|
||||
handler(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
|
||||
/// <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; }
|
||||
public bool CanMuteVideo { get; set; }
|
||||
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()
|
||||
{
|
||||
// Initialize to -1 (no screen)
|
||||
ScreenIndexIsPinnedToFb = -1;
|
||||
}
|
||||
/// <summary>
|
||||
/// Admits a participant from the waiting room
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
void AdmitParticipantFromWaitingRoom(int userId);
|
||||
}
|
||||
}
|
||||
@@ -5,10 +5,35 @@
|
||||
/// </summary>
|
||||
public interface IHasPresentationOnlyMeeting
|
||||
{
|
||||
/// <summary>
|
||||
/// Starts a presentation only meeting
|
||||
/// </summary>
|
||||
void StartSharingOnlyMeeting();
|
||||
|
||||
/// <summary>
|
||||
/// Starts a presentation only meeting with specified display mode
|
||||
/// </summary>
|
||||
/// <param name="displayMode">The display mode for the meeting</param>
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode displayMode);
|
||||
|
||||
/// <summary>
|
||||
/// Starts a presentation only meeting with specified display mode and duration
|
||||
/// </summary>
|
||||
/// <param name="displayMode">The display mode for the meeting</param>
|
||||
/// <param name="duration">The duration for the meeting</param>
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode displayMode, uint duration);
|
||||
|
||||
/// <summary>
|
||||
/// Starts a presentation only meeting with specified display mode, duration, and password
|
||||
/// </summary>
|
||||
/// <param name="displayMode">The display mode for the meeting</param>
|
||||
/// <param name="duration">The duration for the meeting</param>
|
||||
/// <param name="password">The password for the meeting</param>
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode displayMode, uint duration, string password);
|
||||
|
||||
/// <summary>
|
||||
/// Starts a normal meeting from a sharing only meeting
|
||||
/// </summary>
|
||||
void StartNormalMeetingFromSharingOnlyMeeting();
|
||||
}
|
||||
|
||||
@@ -17,8 +42,17 @@
|
||||
/// </summary>
|
||||
public enum eSharingMeetingMode
|
||||
{
|
||||
/// <summary>
|
||||
/// No specific sharing mode
|
||||
/// </summary>
|
||||
None,
|
||||
/// <summary>
|
||||
/// Laptop sharing mode
|
||||
/// </summary>
|
||||
Laptop,
|
||||
/// <summary>
|
||||
/// iOS sharing mode
|
||||
/// </summary>
|
||||
Ios,
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Devices.Common.VideoCodec;
|
||||
using PepperDash.Essentials.Devices.Common.VideoCodec;
|
||||
|
||||
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
|
||||
{
|
||||
@@ -8,10 +7,19 @@ namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
|
||||
/// </summary>
|
||||
public interface IHasSelfviewPosition
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the SelfviewPipPositionFeedback
|
||||
/// </summary>
|
||||
StringFeedback SelfviewPipPositionFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Sets the selfview position
|
||||
/// </summary>
|
||||
void SelfviewPipPositionSet(CodecCommandWithLabel position);
|
||||
|
||||
/// <summary>
|
||||
/// Toggles the selfview position
|
||||
/// </summary>
|
||||
void SelfviewPipPositionToggle();
|
||||
}
|
||||
}
|
||||
@@ -2,15 +2,25 @@
|
||||
|
||||
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasSelfviewSize
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// Defines the contract for IHasSelfviewSize
|
||||
/// </summary>
|
||||
public interface IHasSelfviewSize
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the SelfviewPipSizeFeedback
|
||||
/// </summary>
|
||||
StringFeedback SelfviewPipSizeFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Sets the selfview size
|
||||
/// </summary>
|
||||
/// <param name="size">The new selfview size</param>
|
||||
void SelfviewPipSizeSet(CodecCommandWithLabel size);
|
||||
|
||||
/// <summary>
|
||||
/// Toggles the selfview size
|
||||
/// </summary>
|
||||
void SelfviewPipSizeToggle();
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
@@ -13,10 +7,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public interface IHasStandbyMode
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether Standby Mode is on
|
||||
/// </summary>
|
||||
BoolFeedback StandbyIsOnFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Activates Standby Mode
|
||||
/// </summary>
|
||||
void StandbyActivate();
|
||||
|
||||
/// <summary>
|
||||
/// Deactivates Standby Mode
|
||||
/// </summary>
|
||||
void StandbyDeactivate();
|
||||
}
|
||||
|
||||
@@ -25,10 +28,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public interface IHasHalfWakeMode : IHasStandbyMode
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether Half Wake Mode is on
|
||||
/// </summary>
|
||||
BoolFeedback HalfWakeModeIsOnFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Feedback that indicates whether the device is entering Standby Mode
|
||||
/// </summary>
|
||||
BoolFeedback EnteringStandbyModeFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Activates Half Wake Mode
|
||||
/// </summary>
|
||||
void HalfwakeActivate();
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes the ability to start an ad-hoc meeting
|
||||
|
||||
@@ -1,25 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
/// <summary>
|
||||
/// For rooms that have video codec
|
||||
/// </summary>
|
||||
public interface IHasVideoCodec:IHasInCallFeedback,IPrivacy
|
||||
public interface IHasVideoCodec : IHasInCallFeedback, IPrivacy
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the VideoCodecBase instance
|
||||
/// </summary>
|
||||
VideoCodecBase VideoCodec { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Make this more specific
|
||||
/// </summary>
|
||||
//List<PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem> ActiveCalls { get; }
|
||||
|
||||
/// <summary>
|
||||
/// States: 0 for on hook, 1 for video, 2 for audio, 3 for telekenesis
|
||||
/// </summary>
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Devices.Common.Codec;
|
||||
using PepperDash.Essentials.Devices.Common.Codec;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
@@ -13,7 +7,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public interface IJoinCalls
|
||||
{
|
||||
/// <summary>
|
||||
/// Joins a call
|
||||
/// </summary>
|
||||
/// <param name="activeCall">The active call to join</param>
|
||||
void JoinCall(CodecActiveCallItem activeCall);
|
||||
|
||||
/// <summary>
|
||||
/// Joins all calls
|
||||
/// </summary>
|
||||
void JoinAllCalls();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a MeetingInfo
|
||||
/// </summary>
|
||||
public class MeetingInfo
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Id
|
||||
/// </summary>
|
||||
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Id { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Name
|
||||
/// </summary>
|
||||
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Name { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Host
|
||||
/// </summary>
|
||||
[JsonProperty("host", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Host { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Password
|
||||
/// </summary>
|
||||
[JsonProperty("password", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Password { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the ShareStatus
|
||||
/// </summary>
|
||||
[JsonProperty("shareStatus", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string ShareStatus { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the IsHost
|
||||
/// </summary>
|
||||
[JsonProperty("isHost", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool IsHost { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the IsSharingMeeting
|
||||
/// </summary>
|
||||
[JsonProperty("isSharingMeeting", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool IsSharingMeeting { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the WaitingForHost
|
||||
/// </summary>
|
||||
[JsonProperty("waitingForHost", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool WaitingForHost { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the IsLocked
|
||||
/// </summary>
|
||||
[JsonProperty("isLocked", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool IsLocked { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the IsRecording
|
||||
/// </summary>
|
||||
[JsonProperty("isRecording", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool IsRecording { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the CanRecord
|
||||
/// </summary>
|
||||
[JsonProperty("canRecord", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool CanRecord { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for MeetingInfo
|
||||
/// </summary>
|
||||
/// <param name="id">The unique identifier for the meeting</param>
|
||||
/// <param name="name">The name of the meeting</param>
|
||||
/// <param name="host">The host of the meeting</param>
|
||||
/// <param name="password">The password for the meeting</param>
|
||||
/// <param name="shareStatus">The share status of the meeting</param>
|
||||
/// <param name="isHost">Indicates whether the current user is the host</param>
|
||||
/// <param name="isSharingMeeting">Indicates whether the meeting is currently being shared</param>
|
||||
/// <param name="waitingForHost">Indicates whether the meeting is waiting for the host to join</param>
|
||||
/// <param name="isLocked">Indicates whether the meeting is locked</param>
|
||||
/// <param name="isRecording">Indicates whether the meeting is being recorded</param>
|
||||
/// <param name="canRecord">Indicates whether the meeting can be recorded</param>
|
||||
public MeetingInfo(string id, string name, string host, string password, string shareStatus, bool isHost, bool isSharingMeeting, bool waitingForHost, bool isLocked, bool isRecording, bool canRecord)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
Host = host;
|
||||
Password = password;
|
||||
ShareStatus = shareStatus;
|
||||
IsHost = isHost;
|
||||
IsSharingMeeting = isSharingMeeting;
|
||||
WaitingForHost = waitingForHost;
|
||||
IsLocked = isLocked;
|
||||
IsRecording = isRecording;
|
||||
CanRecord = CanRecord;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
|
||||
|
||||
using System;
|
||||
|
||||
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; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MeetingInfoEventArgs"/> class.
|
||||
/// </summary>
|
||||
/// <param name="info">The meeting information.</param>
|
||||
public MeetingInfoEventArgs(MeetingInfo info)
|
||||
{
|
||||
Info = info;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
/// <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; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the IsMyself
|
||||
/// </summary>
|
||||
public bool IsMyself { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Name
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Email
|
||||
/// </summary>
|
||||
public bool CanMuteVideo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the CanUnmuteVideo
|
||||
/// </summary>
|
||||
public bool CanUnmuteVideo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the CanMuteAudio
|
||||
/// </summary>
|
||||
public bool VideoMuteFb { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the AudioMuteFb
|
||||
/// </summary>
|
||||
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; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Participant"/> class
|
||||
/// </summary>
|
||||
public Participant()
|
||||
{
|
||||
// Initialize to -1 (no screen)
|
||||
ScreenIndexIsPinnedToFb = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,4 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.Codec
|
||||
{
|
||||
@@ -15,6 +7,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
||||
/// </summary>
|
||||
public interface iVideoCodecInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the codec information
|
||||
/// </summary>
|
||||
VideoCodecInfo CodecInfo { get; }
|
||||
}
|
||||
|
||||
@@ -23,18 +18,39 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
||||
/// </summary>
|
||||
public abstract class VideoCodecInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether the multi-site option is enabled
|
||||
/// </summary>
|
||||
[JsonProperty("multiSiteOptionIsEnabled", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract bool MultiSiteOptionIsEnabled { get; }
|
||||
/// <summary>
|
||||
/// Gets the IP address of the codec
|
||||
/// </summary>
|
||||
[JsonProperty("ipAddress", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string IpAddress { get; }
|
||||
/// <summary>
|
||||
/// Gets the SIP phone number for the codec
|
||||
/// </summary>
|
||||
[JsonProperty("sipPhoneNumber", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string SipPhoneNumber { get; }
|
||||
/// <summary>
|
||||
/// Gets the E164 alias for the codec
|
||||
/// </summary>
|
||||
[JsonProperty("e164Alias", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string E164Alias { get; }
|
||||
/// <summary>
|
||||
/// Gets the H323 ID for the codec
|
||||
/// </summary>
|
||||
[JsonProperty("h323Id", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string H323Id { get; }
|
||||
/// <summary>
|
||||
/// Gets the SIP URI for the codec
|
||||
/// </summary>
|
||||
[JsonProperty("sipUri", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string SipUri { get; }
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether auto-answer is enabled
|
||||
/// </summary>
|
||||
[JsonProperty("autoAnswerEnabled", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract bool AutoAnswerEnabled { get; }
|
||||
}
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using System.Collections.Generic;
|
||||
using PepperDash.Essentials.Devices.Common.Codec;
|
||||
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
/// <summary>
|
||||
/// Mock video codec directory structure
|
||||
/// </summary>
|
||||
public static class MockVideoCodecDirectory
|
||||
{
|
||||
/// <summary>
|
||||
@@ -18,13 +14,37 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public enum eFolderId
|
||||
{
|
||||
/// <summary>
|
||||
/// The United States folder
|
||||
/// </summary>
|
||||
UnitedStates,
|
||||
/// <summary>
|
||||
/// The Canada folder
|
||||
/// </summary>
|
||||
Canada,
|
||||
/// <summary>
|
||||
/// The New York folder
|
||||
/// </summary>
|
||||
NewYork,
|
||||
/// <summary>
|
||||
/// The Boston folder
|
||||
/// </summary>
|
||||
Boston,
|
||||
/// <summary>
|
||||
/// The San Francisco folder
|
||||
/// </summary>
|
||||
SanFrancisco,
|
||||
/// <summary>
|
||||
/// The Denver folder
|
||||
/// </summary>
|
||||
Denver,
|
||||
/// <summary>
|
||||
/// The Austin folder
|
||||
/// </summary>
|
||||
Austin,
|
||||
/// <summary>
|
||||
/// The Calgary folder
|
||||
/// </summary>
|
||||
Calgary
|
||||
}
|
||||
|
||||
@@ -51,16 +71,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
}
|
||||
|
||||
public static CodecDirectory DirectoryRoot
|
||||
/// <summary>
|
||||
/// The root of the directory structure
|
||||
/// </summary>
|
||||
public static CodecDirectory DirectoryRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
|
||||
directory.AddFoldersToDirectory
|
||||
(
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
{
|
||||
new DirectoryFolder()
|
||||
{
|
||||
FolderId = eFolderId.UnitedStates.ToString(),
|
||||
@@ -77,7 +100,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
@@ -97,23 +120,27 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the United States folder
|
||||
/// </summary>
|
||||
public static CodecDirectory UnitedStatesFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.UnitedStates.ToString();
|
||||
directory.AddFoldersToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.UnitedStates.ToString()
|
||||
};
|
||||
directory.AddFoldersToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryFolder()
|
||||
{
|
||||
FolderId = eFolderId.NewYork.ToString(),
|
||||
@@ -149,24 +176,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
ParentFolderId = eFolderId.UnitedStates.ToString(),
|
||||
Contacts = null
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the New York folder
|
||||
/// </summary>
|
||||
public static CodecDirectory NewYorkFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.NewYork.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.NewYork.ToString()
|
||||
};
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryContact()
|
||||
{
|
||||
ContactId = "nyc_1",
|
||||
@@ -215,24 +246,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the Boston folder
|
||||
/// </summary>
|
||||
public static CodecDirectory BostonFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.Boston.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.Boston.ToString()
|
||||
};
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryContact()
|
||||
{
|
||||
ContactId = "bos_1",
|
||||
@@ -249,24 +284,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the San Francisco folder
|
||||
/// </summary>
|
||||
public static CodecDirectory SanFranciscoFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.SanFrancisco.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.SanFrancisco.ToString()
|
||||
};
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryContact()
|
||||
{
|
||||
ContactId = "sfo_1",
|
||||
@@ -282,25 +321,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
CallType = eContactMethodCallType.Video
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the Denver folder
|
||||
/// </summary>
|
||||
public static CodecDirectory DenverFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.Denver.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.Denver.ToString()
|
||||
};
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryContact()
|
||||
{
|
||||
ContactId = "den_1",
|
||||
@@ -316,25 +359,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
CallType = eContactMethodCallType.Video
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the Austin folder
|
||||
/// </summary>
|
||||
public static CodecDirectory AustinFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.Austin.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.Austin.ToString()
|
||||
};
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryContact()
|
||||
{
|
||||
ContactId = "atx_1",
|
||||
@@ -350,25 +397,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
CallType = eContactMethodCallType.Video
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the Canada folder
|
||||
/// </summary>
|
||||
public static CodecDirectory CanadaFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.Canada.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.Canada.ToString()
|
||||
};
|
||||
directory.AddFoldersToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryFolder()
|
||||
{
|
||||
FolderId = eFolderId.Calgary.ToString(),
|
||||
@@ -376,24 +427,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
ParentFolderId = eFolderId.Canada.ToString(),
|
||||
Contacts = null
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contents of the Calgary folder
|
||||
/// </summary>
|
||||
public static CodecDirectory CalgaryFolderContents
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new CodecDirectory();
|
||||
|
||||
directory.ResultsFolderId = eFolderId.Calgary.ToString();
|
||||
var directory = new CodecDirectory
|
||||
{
|
||||
ResultsFolderId = eFolderId.Calgary.ToString()
|
||||
};
|
||||
directory.AddContactsToDirectory
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
(
|
||||
new List<DirectoryItem>()
|
||||
{
|
||||
new DirectoryContact()
|
||||
{
|
||||
ContactId = "cdn_1",
|
||||
@@ -409,14 +464,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
CallType = eContactMethodCallType.Video
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return directory;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,19 +3,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
using PepperDash.Essentials.Devices.Common.Codec;
|
||||
using PepperDash.Essentials.Devices.Common.Cameras;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using PepperDash.Essentials.Devices.Common.Codec;
|
||||
using Serilog.Events;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
@@ -47,10 +45,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public RoutingOutputPort HdmiOut { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the CallFavorites
|
||||
/// </summary>
|
||||
public CodecCallFavorites CallFavorites { get; private set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the CallFavorites
|
||||
/// </summary>
|
||||
public CodecCallFavorites CallFavorites { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
@@ -62,22 +60,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
CodecInfo = new MockCodecInfo();
|
||||
|
||||
// Get favoritesw
|
||||
// Get favoritesw
|
||||
if (PropertiesConfig.Favorites != null)
|
||||
{
|
||||
CallFavorites = new CodecCallFavorites();
|
||||
CallFavorites.Favorites = PropertiesConfig.Favorites;
|
||||
}
|
||||
{
|
||||
CallFavorites = new CodecCallFavorites();
|
||||
CallFavorites.Favorites = PropertiesConfig.Favorites;
|
||||
}
|
||||
|
||||
DirectoryBrowseHistory = new List<CodecDirectory>();
|
||||
|
||||
// Debug helpers
|
||||
MuteFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Debug, this, "Mute={0}", _IsMuted);
|
||||
PrivacyModeIsOnFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Debug, this, "Privacy={0}", _PrivacyModeIsOn);
|
||||
SharingSourceFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Debug, this, "SharingSource={0}", _SharingSource);
|
||||
SharingSourceFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Debug, this, "SharingSource={0}", _SharingSource);
|
||||
VolumeLevelFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Debug, this, "Volume={0}", _VolumeLevel);
|
||||
|
||||
CurrentDirectoryResultIsNotDirectoryRoot = new BoolFeedback(() => DirectoryBrowseHistory.Count > 0);
|
||||
CurrentDirectoryResultIsNotDirectoryRoot = new BoolFeedback("currentDirectoryResultIsNotDirectoryRoot", () => DirectoryBrowseHistory.Count > 0);
|
||||
|
||||
CurrentDirectoryResultIsNotDirectoryRoot.FireUpdate();
|
||||
|
||||
@@ -105,38 +103,44 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
CreateOsdSource();
|
||||
|
||||
SetIsReady();
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Func<bool> MuteFeedbackFunc
|
||||
{
|
||||
get { return () => _IsMuted; }
|
||||
}
|
||||
bool _IsMuted;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Func<bool> PrivacyModeIsOnFeedbackFunc
|
||||
{
|
||||
get { return () => _PrivacyModeIsOn; }
|
||||
}
|
||||
bool _PrivacyModeIsOn;
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Func<string> SharingSourceFeedbackFunc
|
||||
{
|
||||
get { return () => _SharingSource; }
|
||||
}
|
||||
string _SharingSource;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Func<bool> SharingContentIsOnFeedbackFunc
|
||||
{
|
||||
get { return () => _SharingIsOn; }
|
||||
}
|
||||
bool _SharingIsOn;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Func<int> VolumeLevelFeedbackFunc
|
||||
{
|
||||
get { return () => _VolumeLevel; }
|
||||
}
|
||||
int _VolumeLevel;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Func<bool> StandbyIsOnFeedbackFunc
|
||||
{
|
||||
get { return () => _StandbyIsOn; }
|
||||
@@ -157,9 +161,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
//foreach(var input in Status.Video.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dial method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void Dial(string number)
|
||||
{
|
||||
@@ -177,9 +178,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dial method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void Dial(Meeting meeting)
|
||||
{
|
||||
@@ -199,9 +197,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EndCall method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void EndCall(CodecActiveCallItem call)
|
||||
{
|
||||
@@ -211,14 +206,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
//ActiveCallCountFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EndAllCalls method
|
||||
/// </summary>
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void EndAllCalls()
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "EndAllCalls");
|
||||
for(int i = ActiveCalls.Count - 1; i >= 0; i--)
|
||||
for (int i = ActiveCalls.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var call = ActiveCalls[i];
|
||||
ActiveCalls.Remove(call);
|
||||
@@ -227,9 +220,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
//ActiveCallCountFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AcceptCall method
|
||||
/// </summary>
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void AcceptCall(CodecActiveCallItem call)
|
||||
{
|
||||
@@ -239,9 +230,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
// should already be in active list
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// RejectCall method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void RejectCall(CodecActiveCallItem call)
|
||||
{
|
||||
@@ -251,65 +239,44 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
//ActiveCallCountFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Makes horrible tones go out on the wire!
|
||||
/// </summary>
|
||||
/// <param name="s"></param>
|
||||
/// <summary>
|
||||
/// SendDtmf method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void SendDtmf(string s)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "SendDTMF: {0}", s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void StartSharing()
|
||||
{
|
||||
_SharingIsOn = true;
|
||||
SharingContentIsOnFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void StopSharing()
|
||||
{
|
||||
_SharingIsOn = false;
|
||||
SharingContentIsOnFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void StandbyActivate()
|
||||
{
|
||||
_StandbyIsOn = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// StandbyDeactivate method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void StandbyDeactivate()
|
||||
{
|
||||
_StandbyIsOn = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LinkToApi method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called by routing to make it happen
|
||||
/// </summary>
|
||||
/// <param name="selector"></param>
|
||||
/// <summary>
|
||||
/// ExecuteSwitch method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void ExecuteSwitch(object selector)
|
||||
{
|
||||
@@ -317,40 +284,27 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
_SharingSource = selector.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void MuteOff()
|
||||
{
|
||||
_IsMuted = false;
|
||||
MuteFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void MuteOn()
|
||||
{
|
||||
_IsMuted = true;
|
||||
MuteFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void MuteToggle()
|
||||
{
|
||||
_IsMuted = !_IsMuted;
|
||||
MuteFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="level"></param>
|
||||
/// <summary>
|
||||
/// SetVolume method
|
||||
/// </summary>
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void SetVolume(ushort level)
|
||||
{
|
||||
@@ -358,29 +312,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
VolumeLevelFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="pressRelease"></param>
|
||||
/// <summary>
|
||||
/// VolumeDown method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void VolumeDown(bool pressRelease)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="pressRelease"></param>
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void VolumeUp(bool pressRelease)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override void PrivacyModeOn()
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "PrivacyMuteOn");
|
||||
@@ -390,9 +333,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
PrivacyModeIsOnFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PrivacyModeOff method
|
||||
/// </summary>
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void PrivacyModeOff()
|
||||
{
|
||||
@@ -403,45 +344,37 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
PrivacyModeIsOnFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PrivacyModeToggle method
|
||||
/// </summary>
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void PrivacyModeToggle()
|
||||
{
|
||||
_PrivacyModeIsOn = !_PrivacyModeIsOn;
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "PrivacyMuteToggle: {0}", _PrivacyModeIsOn);
|
||||
PrivacyModeIsOnFeedback.FireUpdate();
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "PrivacyMuteToggle: {0}", _PrivacyModeIsOn);
|
||||
PrivacyModeIsOnFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
//********************************************************
|
||||
// SIMULATION METHODS
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <summary>
|
||||
/// TestIncomingVideoCall method
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
public void TestIncomingVideoCall(string url)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "TestIncomingVideoCall from {0}", url);
|
||||
var call = new CodecActiveCallItem() { Name = url, Id = url, Number = url, Type= eCodecCallType.Video, Direction = eCodecCallDirection.Incoming };
|
||||
var call = new CodecActiveCallItem() { Name = url, Id = url, Number = url, Type = eCodecCallType.Video, Direction = eCodecCallDirection.Incoming };
|
||||
ActiveCalls.Add(call);
|
||||
SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Ringing, call);
|
||||
|
||||
//OnCallStatusChange(eCodecCallStatus.Unknown, eCodecCallStatus.Ringing, call);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <summary>
|
||||
/// TestIncomingAudioCall method
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
public void TestIncomingAudioCall(string url)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "TestIncomingAudioCall from {0}", url);
|
||||
@@ -451,7 +384,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
//OnCallStatusChange(eCodecCallStatus.Unknown, eCodecCallStatus.Ringing, call);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// TestFarEndHangup method
|
||||
/// </summary>
|
||||
@@ -464,6 +397,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
#region IHasCallHistory Members
|
||||
|
||||
/// <summary>
|
||||
/// CallHistory property
|
||||
/// </summary>
|
||||
public CodecCallHistory CallHistory { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
@@ -471,12 +407,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public void RemoveCallHistoryEntry(CodecCallHistory.CallHistoryEntry entry)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IHasScheduleAwareness Members
|
||||
#region IHasScheduleAwareness Members
|
||||
|
||||
/// <summary>
|
||||
/// GetSchedule method
|
||||
@@ -486,47 +422,59 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
}
|
||||
|
||||
public CodecScheduleAwareness CodecSchedule
|
||||
{
|
||||
get {
|
||||
// if the last meeting has past, generate a new list
|
||||
if (_CodecSchedule == null || _CodecSchedule.Meetings.Count == 0
|
||||
|| _CodecSchedule.Meetings[_CodecSchedule.Meetings.Count - 1].StartTime < DateTime.Now)
|
||||
{
|
||||
_CodecSchedule = new CodecScheduleAwareness(1000);
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var m = new Meeting();
|
||||
/// <summary>
|
||||
/// CodecSchedule property
|
||||
/// </summary>
|
||||
public CodecScheduleAwareness CodecSchedule
|
||||
{
|
||||
get
|
||||
{
|
||||
// if the last meeting has past, generate a new list
|
||||
if (_CodecSchedule == null || _CodecSchedule.Meetings.Count == 0
|
||||
|| _CodecSchedule.Meetings[_CodecSchedule.Meetings.Count - 1].StartTime < DateTime.Now)
|
||||
{
|
||||
_CodecSchedule = new CodecScheduleAwareness(1000);
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var m = new Meeting();
|
||||
m.MinutesBeforeMeeting = 5;
|
||||
m.Id = i.ToString();
|
||||
m.Organizer = "Employee " + 1;
|
||||
m.StartTime = DateTime.Now.AddMinutes(5).AddHours(i);
|
||||
m.EndTime = DateTime.Now.AddHours(i).AddMinutes(50);
|
||||
m.Title = "Meeting " + i;
|
||||
m.Calls.Add(new Call() { Number = i + "meeting@fake.com"});
|
||||
_CodecSchedule.Meetings.Add(m);
|
||||
}
|
||||
}
|
||||
return _CodecSchedule;
|
||||
}
|
||||
}
|
||||
CodecScheduleAwareness _CodecSchedule;
|
||||
m.StartTime = DateTime.Now.AddMinutes(5).AddHours(i);
|
||||
m.EndTime = DateTime.Now.AddHours(i).AddMinutes(50);
|
||||
m.Title = "Meeting " + i;
|
||||
m.Calls.Add(new Call() { Number = i + "meeting@fake.com" });
|
||||
_CodecSchedule.Meetings.Add(m);
|
||||
}
|
||||
}
|
||||
return _CodecSchedule;
|
||||
}
|
||||
}
|
||||
CodecScheduleAwareness _CodecSchedule;
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region IHasDirectory Members
|
||||
|
||||
/// <summary>
|
||||
/// DirectoryResultReturned event. Fired when the directory result changes
|
||||
/// </summary>
|
||||
public event EventHandler<DirectoryEventArgs> DirectoryResultReturned;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// DirectoryRoot property. The root of the directory
|
||||
/// </summary>
|
||||
public CodecDirectory DirectoryRoot
|
||||
{
|
||||
get
|
||||
get
|
||||
{
|
||||
return MockVideoCodecDirectory.DirectoryRoot;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CurrentDirectoryResult property. The current directory result
|
||||
/// </summary>
|
||||
public CodecDirectory CurrentDirectoryResult
|
||||
{
|
||||
get
|
||||
@@ -538,9 +486,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PhonebookSyncState property. The current state of the phonebook synchronization
|
||||
/// </summary>
|
||||
public CodecPhonebookSyncState PhonebookSyncState
|
||||
{
|
||||
get
|
||||
get
|
||||
{
|
||||
var syncState = new CodecPhonebookSyncState(Key + "PhonebookSync");
|
||||
|
||||
@@ -554,8 +505,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SearchDirectory method
|
||||
/// Search the directory for contacts that contain the search string
|
||||
/// </summary>
|
||||
/// <param name="searchString">The search string to use</param>
|
||||
public void SearchDirectory(string searchString)
|
||||
{
|
||||
var searchResults = new CodecDirectory();
|
||||
@@ -577,8 +529,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetDirectoryFolderContents method
|
||||
/// Get the contents of the specified folder
|
||||
/// </summary>
|
||||
/// <param name="folderId">The ID of the folder to get the contents of</param>
|
||||
public void GetDirectoryFolderContents(string folderId)
|
||||
{
|
||||
var folderDirectory = new CodecDirectory();
|
||||
@@ -606,7 +559,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SetCurrentDirectoryToRoot method
|
||||
/// Set the current directory to the root
|
||||
/// </summary>
|
||||
public void SetCurrentDirectoryToRoot()
|
||||
{
|
||||
@@ -616,7 +569,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetDirectoryParentFolderContents method
|
||||
/// Get the contents of the parent folder
|
||||
/// </summary>
|
||||
public void GetDirectoryParentFolderContents()
|
||||
{
|
||||
@@ -656,16 +609,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
public void OnDirectoryResultReturned(CodecDirectory result)
|
||||
{
|
||||
CurrentDirectoryResultIsNotDirectoryRoot.FireUpdate();
|
||||
|
||||
var handler = DirectoryResultReturned;
|
||||
if (handler != null)
|
||||
DirectoryResultReturned?.Invoke(this, new DirectoryEventArgs()
|
||||
{
|
||||
handler(this, new DirectoryEventArgs()
|
||||
{
|
||||
Directory = result,
|
||||
DirectoryIsOnRoot = !CurrentDirectoryResultIsNotDirectoryRoot.BoolValue
|
||||
});
|
||||
}
|
||||
Directory = result,
|
||||
DirectoryIsOnRoot = !CurrentDirectoryResultIsNotDirectoryRoot.BoolValue
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -686,11 +634,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
Cameras.Add(farEndCamera);
|
||||
|
||||
SelectedCameraFeedback = new StringFeedback(() => SelectedCamera.Key);
|
||||
SelectedCameraFeedback = new StringFeedback("selectedCamera", () => SelectedCamera.Key);
|
||||
|
||||
ControllingFarEndCameraFeedback = new BoolFeedback(() => SelectedCamera is IAmFarEndCamera);
|
||||
ControllingFarEndCameraFeedback = new BoolFeedback("controllingFarEndCamera", () => SelectedCamera is IAmFarEndCamera);
|
||||
|
||||
CameraAutoModeIsOnFeedback = new BoolFeedback(() => _CameraAutoModeIsOn);
|
||||
CameraAutoModeIsOnFeedback = new BoolFeedback("cameraAutoModeIsOn", () => _CameraAutoModeIsOn);
|
||||
|
||||
SupportsCameraAutoMode = true;
|
||||
|
||||
@@ -728,10 +676,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
#region IHasCameras Members
|
||||
|
||||
/// <summary>
|
||||
/// CameraSelected event. Fired when a camera is selected
|
||||
/// </summary>
|
||||
public event EventHandler<CameraSelectedEventArgs> CameraSelected;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Cameras
|
||||
/// Gets the list of cameras associated with this codec
|
||||
/// </summary>
|
||||
public List<CameraBase> Cameras { get; private set; }
|
||||
|
||||
@@ -751,12 +702,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
_selectedCamera = value;
|
||||
SelectedCameraFeedback.FireUpdate();
|
||||
ControllingFarEndCameraFeedback.FireUpdate();
|
||||
|
||||
var handler = CameraSelected;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new CameraSelectedEventArgs(SelectedCamera));
|
||||
}
|
||||
CameraSelected?.Invoke(this, new CameraSelectedEventArgs(SelectedCamera));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -788,7 +734,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// Gets or sets the FarEndCamera
|
||||
/// </summary>
|
||||
public CameraBase FarEndCamera { get; private set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the ControllingFarEndCameraFeedback
|
||||
/// </summary>
|
||||
@@ -823,7 +769,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public void CameraAutoModeToggle()
|
||||
{
|
||||
if(_CameraAutoModeIsOn)
|
||||
if (_CameraAutoModeIsOn)
|
||||
_CameraAutoModeIsOn = false;
|
||||
else
|
||||
_CameraAutoModeIsOn = true;
|
||||
@@ -835,12 +781,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// <summary>
|
||||
/// Gets or sets the CameraAutoModeIsOnFeedback
|
||||
/// </summary>
|
||||
public BoolFeedback CameraAutoModeIsOnFeedback {get; private set;}
|
||||
public BoolFeedback CameraAutoModeIsOnFeedback { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region IHasCameraPresets Members
|
||||
|
||||
/// <summary>
|
||||
/// CodecRoomPresetsListHasChanged event. Fired when the presets list changes
|
||||
/// </summary>
|
||||
public event EventHandler<EventArgs> CodecRoomPresetsListHasChanged;
|
||||
|
||||
/// <summary>
|
||||
@@ -883,11 +832,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
else
|
||||
NearEndPresets.Add(new CodecRoomPreset(preset, description, true, true));
|
||||
|
||||
var handler = CodecRoomPresetsListHasChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new EventArgs());
|
||||
}
|
||||
CodecRoomPresetsListHasChanged?.Invoke(this, new EventArgs());
|
||||
|
||||
// Update the config
|
||||
SetConfig(Config);
|
||||
@@ -903,6 +848,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
#endregion
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void CustomSetConfig(DeviceConfig config)
|
||||
{
|
||||
PropertiesConfig.Presets = NearEndPresets;
|
||||
@@ -920,11 +866,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
public class MockCodecInfo : VideoCodecInfo
|
||||
{
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool MultiSiteOptionIsEnabled
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string E164Alias
|
||||
{
|
||||
get { return "someE164alias"; }
|
||||
@@ -975,14 +923,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public class MockVCFactory : EssentialsDeviceFactory<MockVC>
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public MockVCFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "mockvc" };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// BuildDevice method
|
||||
/// </summary>
|
||||
/// <inheritdoc />
|
||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||
{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash.Essentials.Devices.Common.VideoCodec;
|
||||
@@ -16,9 +11,17 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
||||
/// </summary>
|
||||
public class MockVCCamera : CameraBase, IHasCameraPtzControl, IHasCameraFocusControl, IBridgeAdvanced
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the parent video codec
|
||||
/// </summary>
|
||||
protected VideoCodecBase ParentCodec { get; private set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the MockVCCamera class
|
||||
/// </summary>
|
||||
/// <param name="key">The device key</param>
|
||||
/// <param name="name">The device name</param>
|
||||
/// <param name="codec">The parent video codec</param>
|
||||
public MockVCCamera(string key, string name, VideoCodecBase codec)
|
||||
: base(key, name)
|
||||
{
|
||||
@@ -173,9 +176,17 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
||||
/// </summary>
|
||||
public class MockFarEndVCCamera : CameraBase, IHasCameraPtzControl, IAmFarEndCamera, IBridgeAdvanced
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the parent video codec
|
||||
/// </summary>
|
||||
protected VideoCodecBase ParentCodec { get; private set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the MockFarEndVCCamera class
|
||||
/// </summary>
|
||||
/// <param name="key">The device key</param>
|
||||
/// <param name="name">The device name</param>
|
||||
/// <param name="codec">The parent video codec</param>
|
||||
public MockFarEndVCCamera(string key, string name, VideoCodecBase codec)
|
||||
: base(key, name)
|
||||
{
|
||||
|
||||
@@ -1,14 +1,5 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Devices.Common.Codec;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
@@ -18,18 +9,21 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public class MockVcPropertiesConfig
|
||||
{
|
||||
[JsonProperty("favorites")]
|
||||
/// <summary>
|
||||
/// Gets or sets the Favorites
|
||||
/// </summary>
|
||||
[JsonProperty("favorites")]
|
||||
public List<CodecActiveCallItem> Favorites { get; set; }
|
||||
|
||||
[JsonProperty("presets")]
|
||||
/// <summary>
|
||||
/// Gets or sets the Presets
|
||||
/// </summary>
|
||||
[JsonProperty("presets")]
|
||||
public List<CodecRoomPreset> Presets { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MockVcPropertiesConfig"/> class.
|
||||
/// </summary>
|
||||
public MockVcPropertiesConfig()
|
||||
{
|
||||
Favorites = new List<CodecActiveCallItem>();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user