mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 20:54:55 +00:00
Merge pull request #876 from PepperDash/feature/zoom-bridge-updates
Feature/zoom bridge updates
This commit is contained in:
@@ -147,6 +147,24 @@ namespace PepperDash.Essentials.Room.Config
|
|||||||
[JsonProperty("helpMessage")]
|
[JsonProperty("helpMessage")]
|
||||||
public string HelpMessage { get; set; }
|
public string HelpMessage { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Read this value to get the help message. It checks for the old and new config format.
|
||||||
|
/// </summary>
|
||||||
|
public string HelpMessageForDisplay
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if(Help != null && !string.IsNullOrEmpty(Help.Message))
|
||||||
|
{
|
||||||
|
return Help.Message;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return HelpMessage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[JsonProperty("environment")]
|
[JsonProperty("environment")]
|
||||||
public EssentialsEnvironmentPropertiesConfig Environment { get; set; }
|
public EssentialsEnvironmentPropertiesConfig Environment { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -202,11 +202,28 @@ namespace PepperDash.Essentials
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetupEnvironmentalControlDevices();
|
||||||
|
|
||||||
SetSourceListKey();
|
SetSourceListKey();
|
||||||
|
|
||||||
EnablePowerOnToLastSource = true;
|
EnablePowerOnToLastSource = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetupEnvironmentalControlDevices()
|
||||||
|
{
|
||||||
|
if (PropertiesConfig.Environment != null)
|
||||||
|
{
|
||||||
|
if (PropertiesConfig.Environment.Enabled)
|
||||||
|
{
|
||||||
|
foreach (var d in PropertiesConfig.Environment.DeviceKeys)
|
||||||
|
{
|
||||||
|
var envDevice = DeviceManager.GetDeviceForKey(d) as EssentialsDevice;
|
||||||
|
EnvironmentalControlDevices.Add(envDevice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void SetSourceListKey()
|
private void SetSourceListKey()
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(PropertiesConfig.SourceListKey))
|
if (!string.IsNullOrEmpty(PropertiesConfig.SourceListKey))
|
||||||
|
|||||||
@@ -334,6 +334,8 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
CallTypeFeedback = new IntFeedback(() => 0);
|
CallTypeFeedback = new IntFeedback(() => 0);
|
||||||
|
|
||||||
|
SetupEnvironmentalControlDevices();
|
||||||
|
|
||||||
SetSourceListKey();
|
SetSourceListKey();
|
||||||
|
|
||||||
EnablePowerOnToLastSource = true;
|
EnablePowerOnToLastSource = true;
|
||||||
@@ -344,6 +346,21 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetupEnvironmentalControlDevices()
|
||||||
|
{
|
||||||
|
if (PropertiesConfig.Environment != null)
|
||||||
|
{
|
||||||
|
if (PropertiesConfig.Environment.Enabled)
|
||||||
|
{
|
||||||
|
foreach (var d in PropertiesConfig.Environment.DeviceKeys)
|
||||||
|
{
|
||||||
|
var envDevice = DeviceManager.GetDeviceForKey(d) as EssentialsDevice;
|
||||||
|
EnvironmentalControlDevices.Add(envDevice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SetSourceListKey()
|
private void SetSourceListKey()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -375,7 +375,7 @@ Params: {2}"
|
|||||||
{
|
{
|
||||||
bridge.AddJoinMap(Key, joinMap);
|
bridge.AddJoinMap(Key, joinMap);
|
||||||
}
|
}
|
||||||
uint i;
|
|
||||||
if (_config.IsPrimary)
|
if (_config.IsPrimary)
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Linking Primary system Tuner Preset Mirroring");
|
Debug.Console(1, this, "Linking Primary system Tuner Preset Mirroring");
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ using PepperDash.Essentials.Core.Config;
|
|||||||
using PepperDash.Essentials.Core.Devices;
|
using PepperDash.Essentials.Core.Devices;
|
||||||
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
|
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
namespace PepperDash.Essentials.Core
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -18,6 +20,8 @@ namespace PepperDash.Essentials.Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class EssentialsRoomBase : ReconfigurableDevice, IEssentialsRoom
|
public abstract class EssentialsRoomBase : ReconfigurableDevice, IEssentialsRoom
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,6 +39,16 @@ namespace PepperDash.Essentials.Core
|
|||||||
|
|
||||||
public bool OccupancyStatusProviderIsRemote { get; private set; }
|
public bool OccupancyStatusProviderIsRemote { get; private set; }
|
||||||
|
|
||||||
|
public List<EssentialsDevice> EnvironmentalControlDevices { get; protected set; }
|
||||||
|
|
||||||
|
public bool HasEnvironmentalControlDevices
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return EnvironmentalControlDevices != null && EnvironmentalControlDevices.Count > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract Func<bool> IsWarmingFeedbackFunc { get; }
|
protected abstract Func<bool> IsWarmingFeedbackFunc { get; }
|
||||||
protected abstract Func<bool> IsCoolingFeedbackFunc { get; }
|
protected abstract Func<bool> IsCoolingFeedbackFunc { get; }
|
||||||
|
|
||||||
@@ -119,6 +133,8 @@ namespace PepperDash.Essentials.Core
|
|||||||
public EssentialsRoomBase(DeviceConfig config)
|
public EssentialsRoomBase(DeviceConfig config)
|
||||||
: base(config)
|
: base(config)
|
||||||
{
|
{
|
||||||
|
EnvironmentalControlDevices = new List<EssentialsDevice>();
|
||||||
|
|
||||||
// Setup the ShutdownPromptTimer
|
// Setup the ShutdownPromptTimer
|
||||||
ShutdownPromptTimer = new SecondsCountdownTimer(Key + "-offTimer");
|
ShutdownPromptTimer = new SecondsCountdownTimer(Key + "-offTimer");
|
||||||
ShutdownPromptTimer.IsRunningFeedback.OutputChange += (o, a) =>
|
ShutdownPromptTimer.IsRunningFeedback.OutputChange += (o, a) =>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace PepperDash.Essentials.Core
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Describes the basic functionality of an EssentialsRoom
|
/// Describes the basic functionality of an EssentialsRoom
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IEssentialsRoom : IKeyName, IReconfigurableDevice, IRunDefaultPresentRoute
|
public interface IEssentialsRoom : IKeyName, IReconfigurableDevice, IRunDefaultPresentRoute, IEnvironmentalControls
|
||||||
{
|
{
|
||||||
BoolFeedback OnFeedback { get; }
|
BoolFeedback OnFeedback { get; }
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
namespace PepperDash.Essentials.Core
|
||||||
{
|
{
|
||||||
@@ -66,6 +68,14 @@ namespace PepperDash.Essentials.Core
|
|||||||
bool RunDefaultCallRoute();
|
bool RunDefaultCallRoute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Describes environmental controls available on a room such as lighting, shades, temperature, etc.
|
||||||
|
/// </summary>
|
||||||
|
public interface IEnvironmentalControls
|
||||||
|
{
|
||||||
|
List<EssentialsDevice> EnvironmentalControlDevices { get; }
|
||||||
|
|
||||||
|
bool HasEnvironmentalControlDevices { get; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,7 @@ namespace PepperDash.Essentials.Core.Shades
|
|||||||
public interface IShadesOpenCloseStop : IShadesOpenClose
|
public interface IShadesOpenCloseStop : IShadesOpenClose
|
||||||
{
|
{
|
||||||
void StopOrPreset();
|
void StopOrPreset();
|
||||||
|
string StopOrPresetButtonLabel { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -121,6 +121,8 @@
|
|||||||
<Compile Include="Cameras\CameraControl.cs" />
|
<Compile Include="Cameras\CameraControl.cs" />
|
||||||
<Compile Include="Display\PanasonicThDisplay.cs" />
|
<Compile Include="Display\PanasonicThDisplay.cs" />
|
||||||
<Compile Include="VideoCodec\Interfaces\IHasMeetingInfo.cs" />
|
<Compile Include="VideoCodec\Interfaces\IHasMeetingInfo.cs" />
|
||||||
|
<Compile Include="VideoCodec\Interfaces\IHasMeetingLock.cs" />
|
||||||
|
<Compile Include="VideoCodec\Interfaces\IHasMeetingRecording.cs" />
|
||||||
<Compile Include="VideoCodec\Interfaces\IHasParticipants.cs" />
|
<Compile Include="VideoCodec\Interfaces\IHasParticipants.cs" />
|
||||||
<Compile Include="VideoCodec\Interfaces\IHasPresentationOnlyMeeting.cs" />
|
<Compile Include="VideoCodec\Interfaces\IHasPresentationOnlyMeeting.cs" />
|
||||||
<Compile Include="VideoCodec\Interfaces\IHasSelfviewPosition.cs" />
|
<Compile Include="VideoCodec\Interfaces\IHasSelfviewPosition.cs" />
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ using Crestron.SimplSharp;
|
|||||||
|
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -25,7 +27,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IHasZoomRoomLayouts : IHasCodecLayouts
|
public interface IHasZoomRoomLayouts : IHasCodecLayouts
|
||||||
{
|
{
|
||||||
event EventHandler<LayoutInfoChangedEventArgs> AvailableLayoutsChanged;
|
event EventHandler<LayoutInfoChangedEventArgs> LayoutInfoChanged;
|
||||||
|
|
||||||
BoolFeedback LayoutViewIsOnFirstPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func
|
BoolFeedback LayoutViewIsOnFirstPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func
|
||||||
BoolFeedback LayoutViewIsOnLastPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func
|
BoolFeedback LayoutViewIsOnLastPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func
|
||||||
@@ -45,6 +47,17 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
|
|
||||||
public class LayoutInfoChangedEventArgs : EventArgs
|
public class LayoutInfoChangedEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
|
[JsonProperty("availableLayouts", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public ZoomRoom.zConfiguration.eLayoutStyle AvailableLayouts { get; set; }
|
public ZoomRoom.zConfiguration.eLayoutStyle AvailableLayouts { get; set; }
|
||||||
|
[JsonProperty("currentSelectedLayout", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public ZoomRoom.zConfiguration.eLayoutStyle CurrentSelectedLayout { get; set; }
|
||||||
|
[JsonProperty("canSwapContentWithThumbnail", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public bool CanSwapContentWithThumbnail { get; set; }
|
||||||
|
[JsonProperty("contentSwappedWithThumbnail", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public bool ContentSwappedWithThumbnail { get; set; }
|
||||||
|
[JsonProperty("layoutViewIsOnFirstPage", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public bool LayoutViewIsOnFirstPage { get; set; }
|
||||||
|
[JsonProperty("layoutViewIsOnLastPage", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public bool LayoutViewIsOnLastPage { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,24 +24,27 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class MeetingInfo
|
public class MeetingInfo
|
||||||
{
|
{
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Id { get; private set; }
|
public string Id { get; private set; }
|
||||||
[JsonProperty("name")]
|
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Name { get; private set; }
|
public string Name { get; private set; }
|
||||||
[JsonProperty("host")]
|
[JsonProperty("host", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Host { get; private set; }
|
public string Host { get; private set; }
|
||||||
[JsonProperty("password")]
|
[JsonProperty("password", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Password { get; private set; }
|
public string Password { get; private set; }
|
||||||
[JsonProperty("shareStatus")]
|
[JsonProperty("shareStatus", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string ShareStatus { get; private set; }
|
public string ShareStatus { get; private set; }
|
||||||
[JsonProperty("isHost")]
|
[JsonProperty("isHost", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public Boolean IsHost { get; private set; }
|
public Boolean IsHost { get; private set; }
|
||||||
[JsonProperty("isSharingMeeting")]
|
[JsonProperty("isSharingMeeting", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public Boolean IsSharingMeeting { get; private set; }
|
public Boolean IsSharingMeeting { get; private set; }
|
||||||
[JsonProperty("waitingForHost")]
|
[JsonProperty("waitingForHost", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public Boolean WaitingForHost { get; private set; }
|
public Boolean WaitingForHost { get; private set; }
|
||||||
|
[JsonProperty("isLocked", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public Boolean IsLocked { get; private set; }
|
||||||
|
|
||||||
public MeetingInfo(string id, string name, string host, string password, string shareStatus, bool isHost, bool isSharingMeeting, bool waitingForHost)
|
|
||||||
|
public MeetingInfo(string id, string name, string host, string password, string shareStatus, bool isHost, bool isSharingMeeting, bool waitingForHost, bool isLocked)
|
||||||
{
|
{
|
||||||
Id = id;
|
Id = id;
|
||||||
Name = name;
|
Name = name;
|
||||||
@@ -51,6 +54,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
|||||||
IsHost = isHost;
|
IsHost = isHost;
|
||||||
IsSharingMeeting = isSharingMeeting;
|
IsSharingMeeting = isSharingMeeting;
|
||||||
WaitingForHost = waitingForHost;
|
WaitingForHost = waitingForHost;
|
||||||
|
IsLocked = isLocked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||||
|
{
|
||||||
|
public interface IHasMeetingLock
|
||||||
|
{
|
||||||
|
BoolFeedback MeetingIsLockedFeedback { get; }
|
||||||
|
|
||||||
|
void LockMeeting();
|
||||||
|
void UnLockMeeting();
|
||||||
|
void ToggleMeetingLock();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||||
|
{
|
||||||
|
public interface IHasMeetingRecording
|
||||||
|
{
|
||||||
|
BoolFeedback MeetingIsRecordingFeedback { get; }
|
||||||
|
|
||||||
|
void StartRecording();
|
||||||
|
void StopRecording();
|
||||||
|
void ToggleRecording();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
|||||||
public interface IHasParticipants
|
public interface IHasParticipants
|
||||||
{
|
{
|
||||||
CodecParticipants Participants { get; }
|
CodecParticipants Participants { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the participant from the meeting
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="participant"></param>
|
||||||
|
void RemoveParticipant(int userId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the participant as the new host
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="participant"></param>
|
||||||
|
void SetParticipantAsHost(int userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -29,6 +41,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IHasParticipantAudioMute : IHasParticipantVideoMute
|
public interface IHasParticipantAudioMute : IHasParticipantVideoMute
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Mute audio of all participants
|
||||||
|
/// </summary>
|
||||||
|
void MuteAudioForAllParticipants();
|
||||||
|
|
||||||
void MuteAudioForParticipant(int userId);
|
void MuteAudioForParticipant(int userId);
|
||||||
void UnmuteAudioForParticipant(int userId);
|
void UnmuteAudioForParticipant(int userId);
|
||||||
void ToggleAudioForParticipant(int userId);
|
void ToggleAudioForParticipant(int userId);
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Devices.Common.Codec
|
namespace PepperDash.Essentials.Devices.Common.Codec
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -19,12 +21,19 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class VideoCodecInfo
|
public abstract class VideoCodecInfo
|
||||||
{
|
{
|
||||||
|
[JsonProperty("multiSiteOptionIsEnabled", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract bool MultiSiteOptionIsEnabled { get; }
|
public abstract bool MultiSiteOptionIsEnabled { get; }
|
||||||
|
[JsonProperty("ipAddress", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract string IpAddress { get; }
|
public abstract string IpAddress { get; }
|
||||||
|
[JsonProperty("sipPhoneNumber", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract string SipPhoneNumber { get; }
|
public abstract string SipPhoneNumber { get; }
|
||||||
|
[JsonProperty("e164Alias", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract string E164Alias { get; }
|
public abstract string E164Alias { get; }
|
||||||
|
[JsonProperty("h323Id", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract string H323Id { get; }
|
public abstract string H323Id { get; }
|
||||||
|
[JsonProperty("sipUri", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract string SipUri { get; }
|
public abstract string SipUri { get; }
|
||||||
|
[JsonProperty("autoAnswerEnabled", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public abstract bool AutoAnswerEnabled { get; }
|
public abstract bool AutoAnswerEnabled { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -302,8 +302,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
trilist.OnlineStatusChange += (device, args) =>
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
{
|
{
|
||||||
if (!args.DeviceOnLine) return;
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
trilist.SetString(joinMap.Schedule.JoinNumber, "\xFC");
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -553,6 +551,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
|
|
||||||
UpdateParticipantsXSig(codec, trilist, joinMap);
|
UpdateParticipantsXSig(codec, trilist, joinMap);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
|
{
|
||||||
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
trilist.SetString(joinMap.CurrentParticipants.JoinNumber, "\xFC");
|
||||||
|
UpdateParticipantsXSig(codec, trilist, joinMap);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateParticipantsXSig(IHasParticipants codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
|
private void UpdateParticipantsXSig(IHasParticipants codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
|
||||||
@@ -784,7 +791,16 @@ ScreenIndexIsPinnedTo: {8} (a{17})
|
|||||||
UpdateMeetingsList(codec, trilist, joinMap);
|
UpdateMeetingsList(codec, trilist, joinMap);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
|
{
|
||||||
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
trilist.SetString(joinMap.Schedule.JoinNumber, "\xFC");
|
||||||
|
UpdateMeetingsList(codec, trilist, joinMap);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateMeetingsList(IHasScheduleAwareness codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
|
private void UpdateMeetingsList(IHasScheduleAwareness codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
|
||||||
{
|
{
|
||||||
@@ -805,6 +821,15 @@ ScreenIndexIsPinnedTo: {8} (a{17})
|
|||||||
var meetingsData = UpdateMeetingsListXSig(_currentMeetings);
|
var meetingsData = UpdateMeetingsListXSig(_currentMeetings);
|
||||||
trilist.SetString(joinMap.Schedule.JoinNumber, meetingsData);
|
trilist.SetString(joinMap.Schedule.JoinNumber, meetingsData);
|
||||||
trilist.SetUshort(joinMap.MeetingCount.JoinNumber, (ushort)_currentMeetings.Count);
|
trilist.SetUshort(joinMap.MeetingCount.JoinNumber, (ushort)_currentMeetings.Count);
|
||||||
|
|
||||||
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
|
{
|
||||||
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
trilist.SetString(joinMap.Schedule.JoinNumber, "\xFC");
|
||||||
|
UpdateMeetingsListXSig(_currentMeetings);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private string UpdateMeetingsListXSig(List<Meeting> meetings)
|
private string UpdateMeetingsListXSig(List<Meeting> meetings)
|
||||||
@@ -918,6 +943,16 @@ ScreenIndexIsPinnedTo: {8} (a{17})
|
|||||||
|
|
||||||
trilist.SetString(joinMap.DirectoryEntries.JoinNumber, directoryXSig);
|
trilist.SetString(joinMap.DirectoryEntries.JoinNumber, directoryXSig);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
|
{
|
||||||
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
trilist.SetString(joinMap.DirectoryEntries.JoinNumber, "\xFC");
|
||||||
|
UpdateDirectoryXSig(codec.CurrentDirectoryResult,
|
||||||
|
!codec.CurrentDirectoryResultIsNotDirectoryRoot.BoolValue);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SelectDirectoryEntry(IHasDirectory codec, ushort i)
|
private void SelectDirectoryEntry(IHasDirectory codec, ushort i)
|
||||||
@@ -999,6 +1034,15 @@ ScreenIndexIsPinnedTo: {8} (a{17})
|
|||||||
|
|
||||||
trilist.SetString(joinMap.CurrentCallData.JoinNumber, UpdateCallStatusXSig());
|
trilist.SetString(joinMap.CurrentCallData.JoinNumber, UpdateCallStatusXSig());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
|
{
|
||||||
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
trilist.SetString(joinMap.CurrentCallData.JoinNumber, "\xFC");
|
||||||
|
UpdateCallStatusXSig();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private string UpdateCallStatusXSig()
|
private string UpdateCallStatusXSig()
|
||||||
@@ -1266,6 +1310,15 @@ ScreenIndexIsPinnedTo: {8} (a{17})
|
|||||||
trilist.UShortOutput[joinMap.CameraPresetSelect.JoinNumber].UShortValue, String.Empty);
|
trilist.UShortOutput[joinMap.CameraPresetSelect.JoinNumber].UShortValue, String.Empty);
|
||||||
trilist.PulseBool(joinMap.CameraPresetSave.JoinNumber, 3000);
|
trilist.PulseBool(joinMap.CameraPresetSave.JoinNumber, 3000);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
|
{
|
||||||
|
if (!args.DeviceOnLine) return;
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
trilist.SetString(joinMap.CameraPresetNames.JoinNumber, "\xFC");
|
||||||
|
SetCameraPresetNames(presetCodec.NearEndPresets);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private string SetCameraPresetNames(IEnumerable<CodecRoomPreset> presets)
|
private string SetCameraPresetNames(IEnumerable<CodecRoomPreset> presets)
|
||||||
|
|||||||
@@ -618,13 +618,31 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
private bool _can_Switch_Speaker_View;
|
private bool _can_Switch_Speaker_View;
|
||||||
private bool _can_Switch_Wall_View;
|
private bool _can_Switch_Wall_View;
|
||||||
private bool _can_Switch_Share_On_All_Screens;
|
private bool _can_Switch_Share_On_All_Screens;
|
||||||
|
private bool _can_Switch_Floating_Share_Content;
|
||||||
private bool _is_In_First_Page;
|
private bool _is_In_First_Page;
|
||||||
private bool _is_In_Last_Page;
|
private bool _is_In_Last_Page;
|
||||||
private string _video_type;
|
private string _video_type;
|
||||||
|
|
||||||
|
|
||||||
public bool can_Adjust_Floating_Video { get; set; }
|
public bool can_Adjust_Floating_Video { get; set; }
|
||||||
public bool can_Switch_Floating_Share_Content { get; set; }
|
|
||||||
|
|
||||||
|
public bool can_Switch_Floating_Share_Content
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _can_Switch_Floating_Share_Content;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != _can_Switch_Floating_Share_Content)
|
||||||
|
{
|
||||||
|
_can_Switch_Floating_Share_Content = value;
|
||||||
|
NotifyPropertyChanged("can_Switch_Floating_Share_Content");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// [on/off] // Set to On if it is possible to invoke zConfiguration Call Layout Style: ShareAll, to switch to the ShareAll mode, where the content sharing is shown full screen on all monitors.
|
/// [on/off] // Set to On if it is possible to invoke zConfiguration Call Layout Style: ShareAll, to switch to the ShareAll mode, where the content sharing is shown full screen on all monitors.
|
||||||
@@ -744,12 +762,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CallRecordInfo
|
public class CallRecordInfo : NotifiableObject
|
||||||
{
|
{
|
||||||
|
private bool _meetingIsBeingRecorded;
|
||||||
|
|
||||||
public bool canRecord { get; set; }
|
public bool canRecord { get; set; }
|
||||||
public bool emailRequired { get; set; }
|
public bool emailRequired { get; set; }
|
||||||
public bool amIRecording { get; set; }
|
public bool amIRecording { get; set; }
|
||||||
public bool meetingIsBeingRecorded { get; set; }
|
|
||||||
|
public bool meetingIsBeingRecorded
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _meetingIsBeingRecorded;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != _meetingIsBeingRecorded)
|
||||||
|
{
|
||||||
|
_meetingIsBeingRecorded = value;
|
||||||
|
NotifyPropertyChanged("meetingIsBeingRecorded");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1123,9 +1158,25 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Lock
|
public class Lock : NotifiableObject
|
||||||
{
|
{
|
||||||
public bool Enable { get; set; }
|
private bool _enable;
|
||||||
|
|
||||||
|
public bool Enable
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _enable;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != _enable)
|
||||||
|
{
|
||||||
|
_enable = value;
|
||||||
|
NotifyPropertyChanged("Enable");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ClosedCaption
|
public class ClosedCaption
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
IRouting,
|
IRouting,
|
||||||
IHasScheduleAwareness, IHasCodecCameras, IHasParticipants, IHasCameraOff, IHasCameraMute, IHasCameraAutoMode,
|
IHasScheduleAwareness, IHasCodecCameras, IHasParticipants, IHasCameraOff, IHasCameraMute, IHasCameraAutoMode,
|
||||||
IHasFarEndContentStatus, IHasSelfviewPosition, IHasPhoneDialing, IHasZoomRoomLayouts, IHasParticipantPinUnpin,
|
IHasFarEndContentStatus, IHasSelfviewPosition, IHasPhoneDialing, IHasZoomRoomLayouts, IHasParticipantPinUnpin,
|
||||||
IHasParticipantAudioMute, IHasSelfviewSize, IPasswordPrompt, IHasStartMeeting, IHasMeetingInfo, IHasPresentationOnlyMeeting
|
IHasParticipantAudioMute, IHasSelfviewSize, IPasswordPrompt, IHasStartMeeting, IHasMeetingInfo, IHasPresentationOnlyMeeting,
|
||||||
|
IHasMeetingLock, IHasMeetingRecording
|
||||||
{
|
{
|
||||||
private const long MeetingRefreshTimer = 60000;
|
private const long MeetingRefreshTimer = 60000;
|
||||||
public uint DefaultMeetingDurationMin { get; private set; }
|
public uint DefaultMeetingDurationMin { get; private set; }
|
||||||
@@ -147,6 +148,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
ContentSwappedWithThumbnailFeedback = new BoolFeedback(ContentSwappedWithThumbnailFeedbackFunc);
|
ContentSwappedWithThumbnailFeedback = new BoolFeedback(ContentSwappedWithThumbnailFeedbackFunc);
|
||||||
|
|
||||||
NumberOfScreensFeedback = new IntFeedback(NumberOfScreensFeedbackFunc);
|
NumberOfScreensFeedback = new IntFeedback(NumberOfScreensFeedbackFunc);
|
||||||
|
|
||||||
|
MeetingIsLockedFeedback = new BoolFeedback(() => Configuration.Call.Lock.Enable );
|
||||||
|
|
||||||
|
MeetingIsRecordingFeedback = new BoolFeedback(() => Status.Call.CallRecordInfo.meetingIsBeingRecorded );
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommunicationGather PortGather { get; private set; }
|
public CommunicationGather PortGather { get; private set; }
|
||||||
@@ -499,19 +504,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
{
|
{
|
||||||
var sharingStatus = GetSharingStatus();
|
var sharingStatus = GetSharingStatus();
|
||||||
|
|
||||||
MeetingInfo = new MeetingInfo("", "", "", "", sharingStatus, GetIsHostMyself(), true, false);
|
MeetingInfo = new MeetingInfo("", "", "", "", sharingStatus, GetIsHostMyself(), true, false, MeetingIsLockedFeedback.BoolValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var meetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, Participants.Host != null ? Participants.Host.Name : "None",
|
var meetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, Participants.Host != null ? Participants.Host.Name : "None",
|
||||||
MeetingInfo.Password, GetSharingStatus(), GetIsHostMyself(), MeetingInfo.IsSharingMeeting, MeetingInfo.WaitingForHost);
|
MeetingInfo.Password, GetSharingStatus(), GetIsHostMyself(), MeetingInfo.IsSharingMeeting, MeetingInfo.WaitingForHost, MeetingIsLockedFeedback.BoolValue);
|
||||||
MeetingInfo = meetingInfo;
|
MeetingInfo = meetingInfo;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Error processing state property update. {0}", e.Message);
|
Debug.Console(1, this, "Error processing state property update. {0}", e.Message);
|
||||||
Debug.Console(2, this, e.StackTrace);
|
Debug.Console(2, this, e.StackTrace);
|
||||||
MeetingInfo = new MeetingInfo("", "", "", "", "None", false, false, false);
|
MeetingInfo = new MeetingInfo("", "", "", "", "None", false, false, false, MeetingIsLockedFeedback.BoolValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -578,11 +583,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
case "ShareThumb":
|
case "ShareThumb":
|
||||||
{
|
{
|
||||||
ContentSwappedWithThumbnailFeedback.FireUpdate();
|
ContentSwappedWithThumbnailFeedback.FireUpdate();
|
||||||
|
OnLayoutInfoChanged();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "Style":
|
case "Style":
|
||||||
{
|
{
|
||||||
LocalLayoutFeedback.FireUpdate();
|
LocalLayoutFeedback.FireUpdate();
|
||||||
|
OnLayoutInfoChanged();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "Size":
|
case "Size":
|
||||||
@@ -597,6 +604,26 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Configuration.Call.Lock.PropertyChanged += (o, a) =>
|
||||||
|
{
|
||||||
|
if (a.PropertyName == "Enable")
|
||||||
|
{
|
||||||
|
MeetingIsLockedFeedback.FireUpdate();
|
||||||
|
MeetingInfo = new MeetingInfo
|
||||||
|
(
|
||||||
|
MeetingInfo.Id,
|
||||||
|
MeetingInfo.Name,
|
||||||
|
MeetingInfo.Host,
|
||||||
|
MeetingInfo.Password,
|
||||||
|
GetSharingStatus(),
|
||||||
|
MeetingInfo.IsHost,
|
||||||
|
MeetingInfo.IsSharingMeeting,
|
||||||
|
MeetingInfo.WaitingForHost,
|
||||||
|
MeetingIsLockedFeedback.BoolValue
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// This is to deal with incorrect object structure coming back from the Zoom Room on v 5.6.3
|
// This is to deal with incorrect object structure coming back from the Zoom Room on v 5.6.3
|
||||||
Configuration.Client.Call.Layout.PropertyChanged += (o, a) =>
|
Configuration.Client.Call.Layout.PropertyChanged += (o, a) =>
|
||||||
{
|
{
|
||||||
@@ -613,11 +640,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
case "ShareThumb":
|
case "ShareThumb":
|
||||||
{
|
{
|
||||||
ContentSwappedWithThumbnailFeedback.FireUpdate();
|
ContentSwappedWithThumbnailFeedback.FireUpdate();
|
||||||
|
OnLayoutInfoChanged();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "Style":
|
case "Style":
|
||||||
{
|
{
|
||||||
LocalLayoutFeedback.FireUpdate();
|
LocalLayoutFeedback.FireUpdate();
|
||||||
|
OnLayoutInfoChanged();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -634,13 +663,31 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
Status.Call.PropertyChanged += (o, a) =>
|
Status.Call.PropertyChanged += (o, a) =>
|
||||||
{
|
{
|
||||||
if (a.PropertyName == "Info")
|
switch(a.PropertyName)
|
||||||
|
{
|
||||||
|
case "Info":
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Updating Call Status");
|
Debug.Console(1, this, "Updating Call Status");
|
||||||
UpdateCallStatus();
|
UpdateCallStatus();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case "Status":
|
||||||
|
{
|
||||||
|
UpdateCallStatus();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Status.Call.CallRecordInfo.PropertyChanged += (o, a) =>
|
||||||
|
{
|
||||||
|
if (a.PropertyName == "meetingIsBeingRecorded")
|
||||||
|
{
|
||||||
|
MeetingIsRecordingFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Status.Sharing.PropertyChanged += (o, a) =>
|
Status.Sharing.PropertyChanged += (o, a) =>
|
||||||
{
|
{
|
||||||
switch (a.PropertyName)
|
switch (a.PropertyName)
|
||||||
@@ -663,7 +710,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Update the share status of the meeting info
|
// Update the share status of the meeting info
|
||||||
var meetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, MeetingInfo.Host, MeetingInfo.Password, GetSharingStatus(), GetIsHostMyself(), MeetingInfo.IsSharingMeeting, MeetingInfo.WaitingForHost);
|
var meetingInfo = new MeetingInfo(MeetingInfo.Id,
|
||||||
|
MeetingInfo.Name,
|
||||||
|
MeetingInfo.Host,
|
||||||
|
MeetingInfo.Password,
|
||||||
|
GetSharingStatus(),
|
||||||
|
GetIsHostMyself(),
|
||||||
|
MeetingInfo.IsSharingMeeting,
|
||||||
|
MeetingInfo.WaitingForHost,
|
||||||
|
MeetingIsLockedFeedback.BoolValue);
|
||||||
MeetingInfo = meetingInfo;
|
MeetingInfo = meetingInfo;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -714,13 +769,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
LayoutViewIsOnLastPageFeedback.FireUpdate();
|
LayoutViewIsOnLastPageFeedback.FireUpdate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//case "video_type":
|
case "can_Switch_Floating_Share_Content":
|
||||||
// {
|
{
|
||||||
// It appears as though the actual value we want to watch is Configuration.Call.Layout.Style
|
CanSwapContentWithThumbnailFeedback.FireUpdate();
|
||||||
// LocalLayoutFeedback.FireUpdate();
|
break;
|
||||||
// break;
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
OnLayoutInfoChanged();
|
||||||
};
|
};
|
||||||
|
|
||||||
Status.NumberOfScreens.PropertyChanged += (o, a) =>
|
Status.NumberOfScreens.PropertyChanged += (o, a) =>
|
||||||
@@ -1244,7 +1299,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
Participants.CurrentParticipants = participants;
|
Participants.CurrentParticipants = participants;
|
||||||
|
|
||||||
// Update the share status of the meeting info
|
// Update the share status of the meeting info
|
||||||
var meetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, Participants.Host.Name, MeetingInfo.Password, MeetingInfo.ShareStatus, GetIsHostMyself(), MeetingInfo.IsSharingMeeting, MeetingInfo.WaitingForHost);
|
var meetingInfo = new MeetingInfo(
|
||||||
|
MeetingInfo.Id,
|
||||||
|
MeetingInfo.Name,
|
||||||
|
Participants.Host.Name,
|
||||||
|
MeetingInfo.Password,
|
||||||
|
MeetingInfo.ShareStatus,
|
||||||
|
GetIsHostMyself(),
|
||||||
|
MeetingInfo.IsSharingMeeting,
|
||||||
|
MeetingInfo.WaitingForHost,
|
||||||
|
MeetingIsLockedFeedback.BoolValue);
|
||||||
MeetingInfo = meetingInfo;
|
MeetingInfo = meetingInfo;
|
||||||
|
|
||||||
PrintCurrentCallParticipants();
|
PrintCurrentCallParticipants();
|
||||||
@@ -1446,21 +1510,21 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
{
|
{
|
||||||
Status.NeedWaitForHost = JsonConvert.DeserializeObject<zEvent.NeedWaitForHost>(responseObj.ToString());
|
Status.NeedWaitForHost = JsonConvert.DeserializeObject<zEvent.NeedWaitForHost>(responseObj.ToString());
|
||||||
|
|
||||||
Debug.Console(1, this, "NeedWaitForHost: {0}", Status.NeedWaitForHost.Wait);
|
Debug.Console(1, this, "WaitingForHost: {0}", Status.NeedWaitForHost.Wait);
|
||||||
|
|
||||||
if (Status.NeedWaitForHost.Wait)
|
if (Status.NeedWaitForHost.Wait)
|
||||||
{
|
{
|
||||||
if (MeetingInfo == null)
|
if (MeetingInfo == null)
|
||||||
{
|
{
|
||||||
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
||||||
GetSharingStatus(), false, false, true);
|
GetSharingStatus(), false, false, true, MeetingIsLockedFeedback.BoolValue);
|
||||||
|
|
||||||
UpdateCallStatus();
|
UpdateCallStatus();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
||||||
GetSharingStatus(), false, false, true);
|
GetSharingStatus(), false, false, true, MeetingIsLockedFeedback.BoolValue);
|
||||||
|
|
||||||
UpdateCallStatus();
|
UpdateCallStatus();
|
||||||
|
|
||||||
@@ -1470,12 +1534,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
if (MeetingInfo == null)
|
if (MeetingInfo == null)
|
||||||
{
|
{
|
||||||
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
||||||
GetSharingStatus(), false, false, false);
|
GetSharingStatus(), false, false, false, MeetingIsLockedFeedback.BoolValue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, MeetingInfo.Host, MeetingInfo.Password,
|
MeetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, MeetingInfo.Host, MeetingInfo.Password,
|
||||||
GetSharingStatus(), GetIsHostMyself(), false, false);
|
GetSharingStatus(), GetIsHostMyself(), false, false, MeetingIsLockedFeedback.BoolValue);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1559,7 +1623,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
if (result.Success)
|
if (result.Success)
|
||||||
{
|
{
|
||||||
MeetingInfo = new MeetingInfo("", "", "", "", "", true, true, MeetingInfo.WaitingForHost);
|
MeetingInfo = new MeetingInfo("", "", "", "", "", true, true, MeetingInfo.WaitingForHost, MeetingIsLockedFeedback.BoolValue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1904,6 +1968,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
GetSharingStatus(),
|
GetSharingStatus(),
|
||||||
GetIsHostMyself(),
|
GetIsHostMyself(),
|
||||||
!String.Equals(Status.Call.Info.meeting_type,"NORMAL"),
|
!String.Equals(Status.Call.Info.meeting_type,"NORMAL"),
|
||||||
|
false,
|
||||||
|
MeetingIsLockedFeedback.BoolValue
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
else if (item.Status == eCodecCallStatus.Disconnected)
|
||||||
|
{
|
||||||
|
MeetingInfo = new MeetingInfo(
|
||||||
|
string.Empty,
|
||||||
|
string.Empty,
|
||||||
|
string.Empty,
|
||||||
|
string.Empty,
|
||||||
|
string.Empty,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -2132,16 +2212,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
var layoutsCodec = this as IHasZoomRoomLayouts;
|
var layoutsCodec = this as IHasZoomRoomLayouts;
|
||||||
if (layoutsCodec != null)
|
if (layoutsCodec != null)
|
||||||
{
|
{
|
||||||
layoutsCodec.AvailableLayoutsChanged += (o, a) =>
|
layoutsCodec.LayoutInfoChanged += (o, a) =>
|
||||||
{
|
{
|
||||||
trilist.SetBool(joinMap.LayoutGalleryIsAvailable.JoinNumber, zConfiguration.eLayoutStyle.Gallery
|
trilist.SetBool(joinMap.LayoutGalleryIsAvailable.JoinNumber,
|
||||||
==
|
zConfiguration.eLayoutStyle.Gallery == (a.AvailableLayouts & zConfiguration.eLayoutStyle.Gallery));
|
||||||
(a.AvailableLayouts &
|
|
||||||
zConfiguration.eLayoutStyle.Gallery));
|
trilist.SetBool(joinMap.LayoutSpeakerIsAvailable.JoinNumber,
|
||||||
trilist.SetBool(joinMap.LayoutSpeakerIsAvailable.JoinNumber, zConfiguration.eLayoutStyle.Speaker
|
zConfiguration.eLayoutStyle.Speaker == (a.AvailableLayouts & zConfiguration.eLayoutStyle.Speaker));
|
||||||
==
|
|
||||||
(a.AvailableLayouts &
|
|
||||||
zConfiguration.eLayoutStyle.Speaker));
|
|
||||||
trilist.SetBool(joinMap.LayoutStripIsAvailable.JoinNumber, zConfiguration.eLayoutStyle.Strip
|
trilist.SetBool(joinMap.LayoutStripIsAvailable.JoinNumber, zConfiguration.eLayoutStyle.Strip
|
||||||
==
|
==
|
||||||
(a.AvailableLayouts & zConfiguration.eLayoutStyle.Strip));
|
(a.AvailableLayouts & zConfiguration.eLayoutStyle.Strip));
|
||||||
@@ -2196,7 +2276,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
trilist.SetUShortSigAction(joinMap.ScreenIndexToPinUserTo.JoinNumber, (u) => ScreenIndexToPinUserTo = u);
|
trilist.SetUShortSigAction(joinMap.ScreenIndexToPinUserTo.JoinNumber, (u) => ScreenIndexToPinUserTo = u);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: #714 [ ] LinkZoomRoomToApi >> layoutSizeCoodec
|
|
||||||
var layoutSizeCodec = this as IHasSelfviewSize;
|
var layoutSizeCodec = this as IHasSelfviewSize;
|
||||||
if (layoutSizeCodec != null)
|
if (layoutSizeCodec != null)
|
||||||
{
|
{
|
||||||
@@ -2218,6 +2297,75 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
layoutSizeCodec.SelfviewPipSizeFeedback.LinkInputSig(trilist.StringInput[joinMap.GetSetSelfviewPipSize.JoinNumber]);
|
layoutSizeCodec.SelfviewPipSizeFeedback.LinkInputSig(trilist.StringInput[joinMap.GetSetSelfviewPipSize.JoinNumber]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PasswordRequired += (device, args) =>
|
||||||
|
{
|
||||||
|
if (args.LoginAttemptCancelled)
|
||||||
|
{
|
||||||
|
trilist.SetBool(joinMap.ShowPasswordPrompt.JoinNumber, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(args.Message))
|
||||||
|
{
|
||||||
|
trilist.SetString(joinMap.PasswordPromptMessage.JoinNumber, args.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.LoginAttemptFailed)
|
||||||
|
{
|
||||||
|
trilist.SetBool(joinMap.PasswordLoginFailed.JoinNumber, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
trilist.SetBool(joinMap.ShowPasswordPrompt.JoinNumber, true);
|
||||||
|
};
|
||||||
|
|
||||||
|
MeetingInfoChanged += (device, args) =>
|
||||||
|
{
|
||||||
|
trilist.SetString(joinMap.MeetingInfoId.JoinNumber, args.Info.Id);
|
||||||
|
trilist.SetString(joinMap.MeetingInfoHost.JoinNumber, args.Info.Host);
|
||||||
|
trilist.SetString(joinMap.MeetingInfoPassword.JoinNumber, args.Info.Password);
|
||||||
|
trilist.SetBool(joinMap.IsHost.JoinNumber, args.Info.IsHost);
|
||||||
|
trilist.SetBool(joinMap.ShareOnlyMeeting.JoinNumber, args.Info.IsSharingMeeting);
|
||||||
|
trilist.SetBool(joinMap.WaitingForHost.JoinNumber, args.Info.WaitingForHost);
|
||||||
|
//trilist.SetString(joinMap.CurrentSource.JoinNumber, args.Info.ShareStatus);
|
||||||
|
};
|
||||||
|
|
||||||
|
trilist.SetSigTrueAction(joinMap.StartMeetingNow.JoinNumber, () => StartMeeting(0));
|
||||||
|
trilist.SetSigTrueAction(joinMap.ShareOnlyMeeting.JoinNumber, StartSharingOnlyMeeting);
|
||||||
|
trilist.SetSigTrueAction(joinMap.StartNormalMeetingFromSharingOnlyMeeting.JoinNumber, StartNormalMeetingFromSharingOnlyMeeting);
|
||||||
|
|
||||||
|
// not sure if this would be needed here, should be handled by VideoCodecBase.cs LinkToApi methods
|
||||||
|
//DirectoryResultReturned += (device, args) =>
|
||||||
|
//{
|
||||||
|
// // add logic here if necessary when event fires
|
||||||
|
|
||||||
|
//};
|
||||||
|
|
||||||
|
|
||||||
|
trilist.SetStringSigAction(joinMap.SubmitPassword.JoinNumber, SubmitPassword);
|
||||||
|
PasswordRequired += (devices, args) =>
|
||||||
|
{
|
||||||
|
if (args.LoginAttemptCancelled)
|
||||||
|
{
|
||||||
|
trilist.SetBool(joinMap.ShowPasswordPrompt.JoinNumber, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(args.Message))
|
||||||
|
{
|
||||||
|
trilist.SetString(joinMap.PasswordPromptMessage.JoinNumber, args.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.LoginAttemptFailed)
|
||||||
|
{
|
||||||
|
// login attempt failed
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
trilist.SetBool(joinMap.PasswordIncorrect.JoinNumber, args.LastAttemptWasIncorrect);
|
||||||
|
trilist.SetBool(joinMap.ShowPasswordPrompt.JoinNumber, true);
|
||||||
|
};
|
||||||
|
|
||||||
trilist.OnlineStatusChange += (device, args) =>
|
trilist.OnlineStatusChange += (device, args) =>
|
||||||
{
|
{
|
||||||
if (!args.DeviceOnLine) return;
|
if (!args.DeviceOnLine) return;
|
||||||
@@ -2334,6 +2482,56 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invites contacts to a new meeting for a specified duration
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="contacts"></param>
|
||||||
|
/// <param name="duration"></param>
|
||||||
|
public void InviteContactsToNewMeeting(List<InvitableDirectoryContact> contacts, uint duration)
|
||||||
|
{
|
||||||
|
if(duration == 0)
|
||||||
|
{
|
||||||
|
duration = DefaultMeetingDurationMin;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder message = new StringBuilder();
|
||||||
|
|
||||||
|
// Add the prefix
|
||||||
|
message.Append(string.Format("zCommand Invite Duration: {0}", duration));
|
||||||
|
|
||||||
|
// Add each invitee
|
||||||
|
foreach (var contact in contacts)
|
||||||
|
{
|
||||||
|
var invitee = string.Format(" user: {0}", contact.ContactId);
|
||||||
|
|
||||||
|
message.Append(invitee);
|
||||||
|
}
|
||||||
|
|
||||||
|
SendText(message.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invites contacts to an existing meeting
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="contacts"></param>
|
||||||
|
public void InviteContactsToExistingMeeting(List<InvitableDirectoryContact> contacts)
|
||||||
|
{
|
||||||
|
StringBuilder message = new StringBuilder();
|
||||||
|
|
||||||
|
// Add the prefix
|
||||||
|
message.Append(string.Format("zCommand Call Invite"));
|
||||||
|
|
||||||
|
// Add each invitee
|
||||||
|
foreach (var contact in contacts)
|
||||||
|
{
|
||||||
|
var invitee = string.Format(" user: {0}", contact.ContactId);
|
||||||
|
|
||||||
|
message.Append(invitee);
|
||||||
|
}
|
||||||
|
|
||||||
|
SendText(message.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Starts a PMI Meeting for the specified duration (or default meeting duration if 0 is specified)
|
/// Starts a PMI Meeting for the specified duration (or default meeting duration if 0 is specified)
|
||||||
@@ -2469,10 +2667,25 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
public CodecParticipants Participants { get; private set; }
|
public CodecParticipants Participants { get; private set; }
|
||||||
|
|
||||||
|
public void RemoveParticipant(int userId)
|
||||||
|
{
|
||||||
|
SendText(string.Format("zCommand Call Expel Id: {0}", userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetParticipantAsHost(int userId)
|
||||||
|
{
|
||||||
|
SendText(string.Format("zCommand Call HostChange Id: {0}", userId));
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IHasParticipantAudioMute Members
|
#region IHasParticipantAudioMute Members
|
||||||
|
|
||||||
|
public void MuteAudioForAllParticipants()
|
||||||
|
{
|
||||||
|
SendText(string.Format("zCommand Call MuteAll Mute: on"));
|
||||||
|
}
|
||||||
|
|
||||||
public void MuteAudioForParticipant(int userId)
|
public void MuteAudioForParticipant(int userId)
|
||||||
{
|
{
|
||||||
SendText(string.Format("zCommand Call MuteParticipant Mute: on Id: {0}", userId));
|
SendText(string.Format("zCommand Call MuteParticipant Mute: on Id: {0}", userId));
|
||||||
@@ -2770,7 +2983,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
#region IHasZoomRoomLayouts Members
|
#region IHasZoomRoomLayouts Members
|
||||||
|
|
||||||
public event EventHandler<LayoutInfoChangedEventArgs> AvailableLayoutsChanged;
|
public event EventHandler<LayoutInfoChangedEventArgs> LayoutInfoChanged;
|
||||||
|
|
||||||
private Func<bool> LayoutViewIsOnFirstPageFeedbackFunc
|
private Func<bool> LayoutViewIsOnFirstPageFeedbackFunc
|
||||||
{
|
{
|
||||||
@@ -2836,15 +3049,26 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
Debug.Console(1, this, "availablelayouts: {0}", availableLayouts);
|
Debug.Console(1, this, "availablelayouts: {0}", availableLayouts);
|
||||||
|
|
||||||
var handler = AvailableLayoutsChanged;
|
|
||||||
if (handler != null)
|
|
||||||
{
|
|
||||||
handler(this, new LayoutInfoChangedEventArgs() {AvailableLayouts = availableLayouts});
|
|
||||||
}
|
|
||||||
|
|
||||||
AvailableLayouts = availableLayouts;
|
AvailableLayouts = availableLayouts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnLayoutInfoChanged()
|
||||||
|
{
|
||||||
|
var handler = LayoutInfoChanged;
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
handler(this, new LayoutInfoChangedEventArgs()
|
||||||
|
{
|
||||||
|
AvailableLayouts = AvailableLayouts,
|
||||||
|
CurrentSelectedLayout = (zConfiguration.eLayoutStyle)Enum.Parse(typeof(zConfiguration.eLayoutStyle),LocalLayoutFeedback.StringValue, true),
|
||||||
|
LayoutViewIsOnFirstPage = LayoutViewIsOnFirstPageFeedback.BoolValue,
|
||||||
|
LayoutViewIsOnLastPage = LayoutViewIsOnLastPageFeedback.BoolValue,
|
||||||
|
CanSwapContentWithThumbnail = CanSwapContentWithThumbnailFeedback.BoolValue,
|
||||||
|
ContentSwappedWithThumbnail = ContentSwappedWithThumbnailFeedback.BoolValue,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void GetAvailableLayouts()
|
public void GetAvailableLayouts()
|
||||||
{
|
{
|
||||||
SendText("zStatus Call Layout");
|
SendText("zStatus Call Layout");
|
||||||
@@ -3034,7 +3258,63 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
|
||||||
|
#region IHasMeetingLock Members
|
||||||
|
|
||||||
|
public BoolFeedback MeetingIsLockedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public void LockMeeting()
|
||||||
|
{
|
||||||
|
SendText(string.Format("zConfiguration Call Lock Enable: on"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnLockMeeting()
|
||||||
|
{
|
||||||
|
SendText(string.Format("zConfiguration Call Lock Enable: off"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ToggleMeetingLock()
|
||||||
|
{
|
||||||
|
if (MeetingIsLockedFeedback.BoolValue)
|
||||||
|
{
|
||||||
|
UnLockMeeting();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LockMeeting();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IHasMeetingRecording Members
|
||||||
|
|
||||||
|
public BoolFeedback MeetingIsRecordingFeedback { get; private set; }
|
||||||
|
|
||||||
|
public void StartRecording()
|
||||||
|
{
|
||||||
|
SendText(string.Format("Command Call Record Enable: on"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopRecording()
|
||||||
|
{
|
||||||
|
SendText(string.Format("Command Call Record Enable: off"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ToggleRecording()
|
||||||
|
{
|
||||||
|
if (MeetingIsRecordingFeedback.BoolValue)
|
||||||
|
{
|
||||||
|
StopRecording();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartRecording();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Zoom Room specific info object
|
/// Zoom Room specific info object
|
||||||
@@ -3047,8 +3327,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
Configuration = configuration;
|
Configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public ZoomRoomStatus Status { get; private set; }
|
public ZoomRoomStatus Status { get; private set; }
|
||||||
public ZoomRoomConfiguration Configuration { get; private set; }
|
[JsonIgnore]
|
||||||
|
public ZoomRoomConfiguration Configuration { get; private set; }
|
||||||
|
|
||||||
public override bool AutoAnswerEnabled
|
public override bool AutoAnswerEnabled
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,6 +8,126 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
{
|
{
|
||||||
#region Digital
|
#region Digital
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("ShowPasswordPrompt")]
|
||||||
|
public JoinDataComplete ShowPasswordPrompt = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 6,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "FB Indicates to show the password prompt",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("PasswordIncorrect")]
|
||||||
|
public JoinDataComplete PasswordIncorrect = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 7,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "FB Indicates the password entered is incorrect",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("PassowrdLoginFailed")]
|
||||||
|
public JoinDataComplete PasswordLoginFailed = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 8,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "FB Indicates the password entered is incorrect",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("WaitingForHost")]
|
||||||
|
public JoinDataComplete WaitingForHost = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 9,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "FB Indicates system is waiting for host",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("IsHost")]
|
||||||
|
public JoinDataComplete IsHost = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 10,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "FB Indicates system is the host",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("StartMeetingNow")]
|
||||||
|
public JoinDataComplete StartMeetingNow = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 25,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "FB Indicates the password prompt is active",
|
||||||
|
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("ShareOnlyMeeting")]
|
||||||
|
public JoinDataComplete ShareOnlyMeeting = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 26,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Triggers a share only meeting, feedback indicates the current meeting is share only",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToFromSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("StartNormalMeetingFromSharingOnlyMeeting")]
|
||||||
|
public JoinDataComplete StartNormalMeetingFromSharingOnlyMeeting = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 27,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Starts a normal meeting from a share only meeting",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToFromSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
[JoinName("CanSwapContentWithThumbnail")]
|
[JoinName("CanSwapContentWithThumbnail")]
|
||||||
public JoinDataComplete CanSwapContentWithThumbnail = new JoinDataComplete(
|
public JoinDataComplete CanSwapContentWithThumbnail = new JoinDataComplete(
|
||||||
new JoinData
|
new JoinData
|
||||||
@@ -257,6 +377,81 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
#region Serials
|
#region Serials
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("SubmitPassword")]
|
||||||
|
public JoinDataComplete SubmitPassword = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 6,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Submit password text",
|
||||||
|
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||||
|
JoinType = eJoinType.Serial
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("PasswordPromptMessage")]
|
||||||
|
public JoinDataComplete PasswordPromptMessage = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 6,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Password prompt message",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Serial
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("MeetingInfoId")]
|
||||||
|
public JoinDataComplete MeetingInfoId = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 11,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Meeting info ID text feedback",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Serial
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("MeetingInfoHostt")]
|
||||||
|
public JoinDataComplete MeetingInfoHost = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 12,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Meeting info Host text feedback",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Serial
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO [ ] Issue #868
|
||||||
|
[JoinName("MeetingInfoPassword")]
|
||||||
|
public JoinDataComplete MeetingInfoPassword = new JoinDataComplete(
|
||||||
|
new JoinData
|
||||||
|
{
|
||||||
|
JoinNumber = 13,
|
||||||
|
JoinSpan = 1
|
||||||
|
},
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = "Meeting info Password text feedback",
|
||||||
|
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||||
|
JoinType = eJoinType.Serial
|
||||||
|
});
|
||||||
|
|
||||||
[JoinName("GetSetCurrentLayout")]
|
[JoinName("GetSetCurrentLayout")]
|
||||||
public JoinDataComplete GetSetCurrentLayout = new JoinDataComplete(
|
public JoinDataComplete GetSetCurrentLayout = new JoinDataComplete(
|
||||||
new JoinData
|
new JoinData
|
||||||
|
|||||||
Reference in New Issue
Block a user