feat(essentials): #801 Adds IHasStartMeeting interface and implments on ZoomRoom

This commit is contained in:
Neil Dorin
2021-08-19 15:19:19 -06:00
parent f922b871a1
commit 0014dd7a14
2 changed files with 45 additions and 2 deletions

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
{
/// <summary>
/// Describes the ability to start an ad-hoc meeting
/// </summary>
public interface IHasStartMeeting
{
/// <summary>
/// The default meeting duration in minutes
/// </summary>
uint DefaultMeetingDurationMin { get; }
/// <summary>
/// Start an ad-hoc meeting for the specified duration
/// </summary>
/// <param name="duration"></param>
void StartMeeting(uint duration);
}
}

View File

@@ -25,10 +25,11 @@ 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 IHasParticipantAudioMute, IHasSelfviewSize, IPasswordPrompt, IHasStartMeeting
{ {
private const long MeetingRefreshTimer = 60000; private const long MeetingRefreshTimer = 60000;
private const uint DefaultMeetingDurationMin = 30; public uint DefaultMeetingDurationMin { get; private set; }
private const string Delimiter = "\x0D\x0A"; private const string Delimiter = "\x0D\x0A";
private readonly GenericQueue _receiveQueue; private readonly GenericQueue _receiveQueue;
@@ -52,6 +53,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public ZoomRoom(DeviceConfig config, IBasicCommunication comm) public ZoomRoom(DeviceConfig config, IBasicCommunication comm)
: base(config) : base(config)
{ {
DefaultMeetingDurationMin = 30;
_props = JsonConvert.DeserializeObject<ZoomRoomPropertiesConfig>(config.Properties.ToString()); _props = JsonConvert.DeserializeObject<ZoomRoomPropertiesConfig>(config.Properties.ToString());
_receiveQueue = new GenericQueue(Key + "-rxQueue", Thread.eThreadPriority.MediumPriority, 512); _receiveQueue = new GenericQueue(Key + "-rxQueue", Thread.eThreadPriority.MediumPriority, 512);
@@ -2095,6 +2098,21 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
} }
} }
/// <summary>
/// Starts a PMI Meeting for the specified duration (or default meeting duration if 0 is specified)
/// </summary>
/// <param name="duration">duration of meeting</param>
public void StartMeeting(uint duration)
{
uint dur = DefaultMeetingDurationMin;
if (duration > 0)
dur = duration;
SendText(string.Format("zCommand Dial StartPmi Duration: {0}", dur);
}
public override void EndCall(CodecActiveCallItem call) public override void EndCall(CodecActiveCallItem call)
{ {
SendText("zCommand Call Disconnect"); SendText("zCommand Call Disconnect");