mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-12 03:05:01 +00:00
Compare commits
27 Commits
1.11.1-hot
...
1.12.1-hot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c136943c3a | ||
|
|
c6495577e7 | ||
|
|
5359604098 | ||
|
|
6715a680cc | ||
|
|
f3fc0f2b26 | ||
|
|
26b968463b | ||
|
|
d33b89f232 | ||
|
|
10d77ac006 | ||
|
|
c19ab76a4c | ||
|
|
040c57b5e1 | ||
|
|
d6864bf214 | ||
|
|
62275890cb | ||
|
|
2a6b845fde | ||
|
|
4fb2d6d755 | ||
|
|
5994704fbd | ||
|
|
ca1cbb6e05 | ||
|
|
f82b7f8f12 | ||
|
|
dbd77f5f9f | ||
|
|
55031d16af | ||
|
|
4938071f70 | ||
|
|
3670bde7cf | ||
|
|
4deb9a0828 | ||
|
|
93435b60b5 | ||
|
|
b67eb6325b | ||
|
|
38cb86218c | ||
|
|
c0c67f6c15 | ||
|
|
eb3922aa43 |
@@ -97,10 +97,10 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 1, ShadeDevice.Open);
|
||||
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 2, (ShadeDevice as IShadesOpenCloseStop).StopOrPreset);
|
||||
|
||||
if(ShadeDevice is RelayControlledShade)
|
||||
TriList.SetString(StringJoinBase + 2, (ShadeDevice as RelayControlledShade).StopOrPresetButtonLabel);
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 2, (ShadeDevice as IShadesOpenCloseStop).Stop);
|
||||
|
||||
if (ShadeDevice is IShadesOpenCloseStop)
|
||||
TriList.SetString(StringJoinBase + 2, "Stop");
|
||||
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 3, ShadeDevice.Close);
|
||||
}
|
||||
|
||||
@@ -283,9 +283,10 @@ namespace PepperDash.Essentials.Core
|
||||
foreach (var join in joins)
|
||||
{
|
||||
Debug.Console(0,
|
||||
@"Join Number: {0} | JoinSpan: '{1}' | Description: '{2}' | Type: '{3}' | Capabilities: '{4}'",
|
||||
@"Join Number: {0} | JoinSpan: '{1}' | JoinName: {2} | Description: '{3}' | Type: '{4}' | Capabilities: '{5}'",
|
||||
join.Value.JoinNumber,
|
||||
join.Value.JoinSpan,
|
||||
join.Key,
|
||||
String.IsNullOrEmpty(join.Value.AttributeName) ? join.Value.Metadata.Label : join.Value.AttributeName,
|
||||
join.Value.Metadata.JoinType.ToString(),
|
||||
join.Value.Metadata.JoinCapabilities.ToString());
|
||||
|
||||
@@ -19,6 +19,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Requirements for a device that implements basic Open/Close shade control
|
||||
/// </summary>
|
||||
[Obsolete("Please use IShadesOpenCloseStop instead")]
|
||||
public interface IShadesOpenClose
|
||||
{
|
||||
void Open();
|
||||
@@ -28,15 +29,26 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Requirements for a device that implements basic Open/Close/Stop shade control (Uses 3 relays)
|
||||
/// </summary>
|
||||
public interface IShadesOpenCloseStop : IShadesOpenClose
|
||||
{
|
||||
void StopOrPreset();
|
||||
string StopOrPresetButtonLabel { get; }
|
||||
public interface IShadesOpenCloseStop
|
||||
{
|
||||
void Open();
|
||||
void Close();
|
||||
void Stop();
|
||||
}
|
||||
|
||||
public interface IShadesOpenClosePreset : IShadesOpenCloseStop
|
||||
{
|
||||
void RecallPreset(uint presetNumber);
|
||||
void SavePreset(uint presetNumber);
|
||||
string StopOrPresetButtonLabel { get; }
|
||||
|
||||
event EventHandler PresetSaved;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Requirements for a shade that implements press/hold raise/lower functions
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
[Obsolete("Please use IShadesOpenCloseStop instead")]
|
||||
public interface IShadesRaiseLower
|
||||
{
|
||||
void Raise(bool state);
|
||||
@@ -55,7 +67,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Requirements for a shade/scene that is open or closed
|
||||
/// </summary>
|
||||
public interface IShadesOpenClosedFeedback: IShadesOpenClose
|
||||
public interface IShadesOpenClosedFeedback: IShadesOpenCloseStop
|
||||
{
|
||||
BoolFeedback ShadeIsOpenFeedback { get; }
|
||||
BoolFeedback ShadeIsClosedFeedback { get; }
|
||||
@@ -63,15 +75,16 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public interface IShadesStop
|
||||
/// </summary>
|
||||
[Obsolete("Please use IShadesOpenCloseStop instead")]
|
||||
public interface IShadesStop
|
||||
{
|
||||
void Stop();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// Used to implement raise/stop/lower/stop from single button
|
||||
/// </summary>
|
||||
public interface IShadesStopOrMove
|
||||
{
|
||||
void OpenOrStop();
|
||||
@@ -82,7 +95,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Basic feedback for shades/scene stopped
|
||||
/// </summary>
|
||||
public interface IShadesStopFeedback
|
||||
public interface IShadesStopFeedback : IShadesOpenCloseStop
|
||||
{
|
||||
BoolFeedback IsStoppedFeedback { get; }
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Base class for a shade device
|
||||
/// </summary>
|
||||
public abstract class ShadeBase : EssentialsDevice, IShadesOpenClose
|
||||
public abstract class ShadeBase : EssentialsDevice, IShadesOpenCloseStop
|
||||
{
|
||||
public ShadeBase(string key, string name)
|
||||
: base(key, name)
|
||||
@@ -23,7 +23,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
#region iShadesOpenClose Members
|
||||
|
||||
public abstract void Open();
|
||||
public abstract void StopOrPreset();
|
||||
public abstract void Stop();
|
||||
public abstract void Close();
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -56,9 +56,9 @@ namespace PepperDash.Essentials.Devices.Common.Environment.Somfy
|
||||
PulseOutput(OpenRelay, RelayPulseTime);
|
||||
}
|
||||
|
||||
public override void StopOrPreset()
|
||||
public override void Stop()
|
||||
{
|
||||
Debug.Console(1, this, "Stopping or recalling preset on Shade: '{0}'", this.Name);
|
||||
Debug.Console(1, this, "Stopping Shade: '{0}'", this.Name);
|
||||
|
||||
PulseOutput(StopOrPresetRelay, RelayPulseTime);
|
||||
}
|
||||
|
||||
@@ -43,10 +43,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
[JsonProperty("isLocked", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public Boolean IsLocked { get; private set; }
|
||||
[JsonProperty("isRecording", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public Boolean IsRecording { get; private set; }
|
||||
public Boolean IsRecording { get; private set; }
|
||||
[JsonProperty("canRecord", NullValueHandling = NullValueHandling.Ignore)]
|
||||
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)
|
||||
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;
|
||||
@@ -57,7 +59,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
IsSharingMeeting = isSharingMeeting;
|
||||
WaitingForHost = waitingForHost;
|
||||
IsLocked = isLocked;
|
||||
IsRecording = isRecording;
|
||||
IsRecording = isRecording;
|
||||
CanRecord = CanRecord;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
public interface IHasPresentationOnlyMeeting
|
||||
{
|
||||
void StartSharingOnlyMeeting();
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode mode);
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode mode, ushort duration);
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode mode, ushort duration, string password);
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode displayMode);
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode displayMode, uint duration);
|
||||
void StartSharingOnlyMeeting(eSharingMeetingMode displayMode, uint duration, string password);
|
||||
void StartNormalMeetingFromSharingOnlyMeeting();
|
||||
}
|
||||
|
||||
|
||||
@@ -1393,11 +1393,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, call.IsOnHold);
|
||||
|
||||
//serials
|
||||
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 1, call.Name ?? String.Empty);
|
||||
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 2, call.Number ?? String.Empty);
|
||||
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 3, call.Direction.ToString());
|
||||
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 4, call.Type.ToString());
|
||||
tokenArray[arrayIndex + 5] = new XSigSerialToken(stringIndex + 5, call.Status.ToString());
|
||||
tokenArray[arrayIndex] = new XSigSerialToken(stringIndex + 1, call.Name ?? String.Empty);
|
||||
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 2, call.Number ?? String.Empty);
|
||||
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 3, call.Direction.ToString());
|
||||
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 4, call.Type.ToString());
|
||||
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 5, call.Status.ToString());
|
||||
if(call.Duration != null)
|
||||
{
|
||||
// May need to verify correct string format here
|
||||
@@ -1407,9 +1407,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
arrayIndex += offset;
|
||||
stringIndex += maxStrings;
|
||||
digitalIndex++;
|
||||
digitalIndex += maxDigitals;
|
||||
}
|
||||
while (digitalIndex < maxCalls)
|
||||
while (arrayIndex < maxCalls * offset)
|
||||
{
|
||||
//digitals
|
||||
tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, false);
|
||||
@@ -1417,16 +1417,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
|
||||
//serials
|
||||
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 1, String.Empty);
|
||||
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 2, String.Empty);
|
||||
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 3, String.Empty);
|
||||
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 4, String.Empty);
|
||||
tokenArray[arrayIndex + 5] = new XSigSerialToken(stringIndex + 5, String.Empty);
|
||||
tokenArray[arrayIndex + 6] = new XSigSerialToken(stringIndex + 6, String.Empty);
|
||||
tokenArray[arrayIndex] = new XSigSerialToken(stringIndex + 1, String.Empty);
|
||||
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 2, String.Empty);
|
||||
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 3, String.Empty);
|
||||
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 4, String.Empty);
|
||||
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 5, String.Empty);
|
||||
tokenArray[arrayIndex + 5] = new XSigSerialToken(stringIndex + 6, String.Empty);
|
||||
|
||||
arrayIndex += offset;
|
||||
stringIndex += maxStrings;
|
||||
digitalIndex++;
|
||||
digitalIndex += maxDigitals;
|
||||
}
|
||||
|
||||
return GetXSigString(tokenArray);
|
||||
|
||||
@@ -448,6 +448,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
private bool _isAirHostClientConnected;
|
||||
private bool _isSharingBlackMagic;
|
||||
private bool _isDirectPresentationConnected;
|
||||
private bool _isBlackMagicConnected;
|
||||
|
||||
|
||||
public string directPresentationPairingCode { get; set; }
|
||||
@@ -484,7 +485,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
public bool isBlackMagicConnected { get; set; }
|
||||
public bool isBlackMagicConnected
|
||||
{
|
||||
get { return _isBlackMagicConnected; }
|
||||
set
|
||||
{
|
||||
if (value != _isBlackMagicConnected)
|
||||
{
|
||||
_isBlackMagicConnected = value;
|
||||
NotifyPropertyChanged("isBlackMagicConnected");
|
||||
}
|
||||
}
|
||||
}
|
||||
public bool isBlackMagicDataAvailable { get; set; }
|
||||
|
||||
public bool isDirectPresentationConnected
|
||||
@@ -793,11 +805,43 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
public class CallRecordInfo : NotifiableObject
|
||||
{
|
||||
private bool _meetingIsBeingRecorded;
|
||||
private bool _canRecord;
|
||||
private bool _emailRequired;
|
||||
|
||||
public bool canRecord { get; set; }
|
||||
public bool emailRequired { get; set; }
|
||||
public bool amIRecording { get; set; }
|
||||
|
||||
public bool canRecord
|
||||
{
|
||||
get
|
||||
{
|
||||
return _canRecord;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _canRecord)
|
||||
{
|
||||
_canRecord = value;
|
||||
NotifyPropertyChanged("canRecord");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool emailRequired
|
||||
{
|
||||
get
|
||||
{
|
||||
return _emailRequired;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _emailRequired)
|
||||
{
|
||||
_emailRequired = value;
|
||||
NotifyPropertyChanged("emailRequired");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool meetingIsBeingRecorded
|
||||
{
|
||||
get
|
||||
@@ -816,6 +860,17 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicates if recording is allowed (when meeting capable and and email is not required to be entered by the user)
|
||||
/// </summary>
|
||||
public bool AllowRecord
|
||||
{
|
||||
get
|
||||
{
|
||||
return canRecord && !emailRequired;
|
||||
}
|
||||
}
|
||||
|
||||
public CallRecordInfo()
|
||||
{
|
||||
Debug.Console(2, Debug.ErrorLogLevel.Notice, "********************************************* CallRecordInfo() ******************************************");
|
||||
|
||||
@@ -62,6 +62,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
private readonly ZoomRoomPropertiesConfig _props;
|
||||
|
||||
private bool _meetingPasswordRequired;
|
||||
|
||||
public void Poll(string pollString)
|
||||
{
|
||||
if(_meetingPasswordRequired) return;
|
||||
|
||||
SendText(string.Format("{0}{1}", pollString, SendDelimiter));
|
||||
}
|
||||
|
||||
public ZoomRoom(DeviceConfig config, IBasicCommunication comm)
|
||||
: base(config)
|
||||
{
|
||||
@@ -75,13 +84,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
if (_props.CommunicationMonitorProperties != null)
|
||||
{
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication,
|
||||
_props.CommunicationMonitorProperties);
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, _props.CommunicationMonitorProperties.PollInterval, _props.CommunicationMonitorProperties.TimeToWarning, _props.CommunicationMonitorProperties.TimeToError,
|
||||
() => Poll(_props.CommunicationMonitorProperties.PollString));
|
||||
}
|
||||
else
|
||||
{
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000,
|
||||
"zStatus SystemUnit" + SendDelimiter);
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000, () => Poll("zStatus SystemUnit"));
|
||||
}
|
||||
|
||||
DeviceManager.AddDevice(CommunicationMonitor);
|
||||
@@ -252,7 +260,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
protected override Func<bool> SharingContentIsOnFeedbackFunc
|
||||
{
|
||||
get { return () => Status.Call.Sharing.IsSharing; }
|
||||
get { return () => Status.Sharing.isAirHostClientConnected || Status.Sharing.isDirectPresentationConnected || Status.Sharing.isSharingBlackMagic; }
|
||||
}
|
||||
|
||||
protected Func<bool> FarEndIsSharingContentFeedbackFunc
|
||||
@@ -529,6 +537,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
/// </summary>
|
||||
private void SetUpCallFeedbackActions()
|
||||
{
|
||||
Status.Sharing.PropertyChanged -= HandleSharingStateUpdate;
|
||||
Status.Sharing.PropertyChanged += HandleSharingStateUpdate;
|
||||
|
||||
Status.Call.Sharing.PropertyChanged -= HandleSharingStateUpdate;
|
||||
Status.Call.Sharing.PropertyChanged += HandleSharingStateUpdate;
|
||||
|
||||
@@ -541,7 +552,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
private void HandleCallRecordInfoStateUpdate(object sender, PropertyChangedEventArgs a)
|
||||
{
|
||||
if (a.PropertyName == "meetingIsBeingRecorded")
|
||||
if (a.PropertyName == "meetingIsBeingRecorded" || a.PropertyName == "emailRequired" || a.PropertyName == "canRecord")
|
||||
{
|
||||
MeetingIsRecordingFeedback.FireUpdate();
|
||||
|
||||
@@ -554,7 +565,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
MeetingInfo.IsSharingMeeting,
|
||||
MeetingInfo.WaitingForHost,
|
||||
MeetingIsLockedFeedback.BoolValue,
|
||||
MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
MeetingInfo = meetingInfo;
|
||||
}
|
||||
}
|
||||
@@ -580,10 +591,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
private void HandleSharingStateUpdate(object sender, PropertyChangedEventArgs a)
|
||||
{
|
||||
if (a.PropertyName != "State")
|
||||
{
|
||||
return;
|
||||
}
|
||||
//if (a.PropertyName != "State")
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
|
||||
SharingContentIsOnFeedback.FireUpdate();
|
||||
ReceivingContent.FireUpdate();
|
||||
@@ -593,21 +604,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
// Update the share status of the meeting info
|
||||
if (MeetingInfo == null)
|
||||
{
|
||||
var sharingStatus = GetSharingStatus();
|
||||
|
||||
MeetingInfo = new MeetingInfo("", "", "", "", sharingStatus, GetIsHostMyself(), true, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingInfo = new MeetingInfo("", "", "", "", GetSharingStatus(), GetIsHostMyself(), true, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
return;
|
||||
}
|
||||
|
||||
var meetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, Participants.Host != null ? Participants.Host.Name : "None",
|
||||
MeetingInfo.Password, GetSharingStatus(), GetIsHostMyself(), MeetingInfo.IsSharingMeeting, MeetingInfo.WaitingForHost, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingInfo.Password, GetSharingStatus(), GetIsHostMyself(), MeetingInfo.IsSharingMeeting, MeetingInfo.WaitingForHost, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
MeetingInfo = meetingInfo;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Console(1, this, "Error processing state property update. {0}", e.Message);
|
||||
Debug.Console(2, this, e.StackTrace);
|
||||
MeetingInfo = new MeetingInfo("", "", "", "", "None", false, false, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingInfo = new MeetingInfo("", "", "", "", "None", false, false, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -714,7 +723,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
MeetingInfo.IsSharingMeeting,
|
||||
MeetingInfo.WaitingForHost,
|
||||
MeetingIsLockedFeedback.BoolValue,
|
||||
MeetingIsRecordingFeedback.BoolValue
|
||||
MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -776,7 +785,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
MeetingInfo.IsSharingMeeting,
|
||||
MeetingInfo.WaitingForHost,
|
||||
MeetingIsLockedFeedback.BoolValue,
|
||||
MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
MeetingInfo = meetingInfo;
|
||||
break;
|
||||
}
|
||||
@@ -1470,13 +1479,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
MeetingInfo.Id,
|
||||
MeetingInfo.Name,
|
||||
Participants.Host.Name,
|
||||
MeetingInfo.Password,
|
||||
MeetingInfo.ShareStatus,
|
||||
MeetingInfo.Password,
|
||||
GetSharingStatus(),
|
||||
GetIsHostMyself(),
|
||||
MeetingInfo.IsSharingMeeting,
|
||||
MeetingInfo.WaitingForHost,
|
||||
MeetingIsLockedFeedback.BoolValue,
|
||||
MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingIsRecordingFeedback.BoolValue,
|
||||
Status.Call.CallRecordInfo.AllowRecord
|
||||
);
|
||||
MeetingInfo = meetingInfo;
|
||||
|
||||
PrintCurrentCallParticipants();
|
||||
@@ -1691,14 +1702,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
if (MeetingInfo == null)
|
||||
{
|
||||
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
||||
GetSharingStatus(), false, false, true, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
GetSharingStatus(), false, false, true, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
|
||||
UpdateCallStatus();
|
||||
break;
|
||||
}
|
||||
|
||||
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
||||
GetSharingStatus(), false, false, true, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
GetSharingStatus(), false, false, true, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
|
||||
UpdateCallStatus();
|
||||
|
||||
@@ -1708,12 +1719,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
if (MeetingInfo == null)
|
||||
{
|
||||
MeetingInfo = new MeetingInfo("Waiting For Host", "Waiting For Host", "Waiting For Host", "",
|
||||
GetSharingStatus(), false, false, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
GetSharingStatus(), false, false, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
break;
|
||||
}
|
||||
|
||||
MeetingInfo = new MeetingInfo(MeetingInfo.Id, MeetingInfo.Name, MeetingInfo.Host, MeetingInfo.Password,
|
||||
GetSharingStatus(), GetIsHostMyself(), false, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
GetSharingStatus(), GetIsHostMyself(), false, false, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1803,7 +1814,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
if (result.Success)
|
||||
{
|
||||
MeetingInfo = new MeetingInfo("", "", "", "", "", true, true, MeetingInfo.WaitingForHost, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue);
|
||||
MeetingInfo = new MeetingInfo("", "", "", "", GetSharingStatus(), true, true, MeetingInfo.WaitingForHost, MeetingIsLockedFeedback.BoolValue, MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1989,6 +2000,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
/// </summary>
|
||||
private void GetBookings()
|
||||
{
|
||||
if (_meetingPasswordRequired) return;
|
||||
|
||||
SendText("zCommand Bookings List");
|
||||
}
|
||||
|
||||
@@ -2154,7 +2167,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
!String.Equals(Status.Call.Info.meeting_type,"NORMAL"),
|
||||
false,
|
||||
MeetingIsLockedFeedback.BoolValue,
|
||||
MeetingIsRecordingFeedback.BoolValue
|
||||
MeetingIsRecordingFeedback.BoolValue, Status.Call.CallRecordInfo.AllowRecord
|
||||
);
|
||||
|
||||
SetDefaultLayout();
|
||||
@@ -2172,10 +2185,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
false, Status.Call.CallRecordInfo.AllowRecord
|
||||
);
|
||||
}
|
||||
|
||||
_meetingPasswordRequired = false;
|
||||
base.OnCallStatusChange(item);
|
||||
|
||||
Debug.Console(1, this, "[OnCallStatusChange] Current Call Status: {0}",
|
||||
@@ -2247,6 +2261,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starts sharing HDMI source
|
||||
/// </summary>
|
||||
public override void StartSharing()
|
||||
{
|
||||
SendText("zCommand Call Sharing HDMI Start");
|
||||
@@ -2392,6 +2409,20 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
/// <param name="joinMap"></param>
|
||||
public void LinkZoomRoomToApi(BasicTriList trilist, ZoomRoomJoinMap joinMap)
|
||||
{
|
||||
var meetingInfoCodec = this as IHasMeetingInfo;
|
||||
if (meetingInfoCodec != null)
|
||||
{
|
||||
if (meetingInfoCodec.MeetingInfo != null)
|
||||
{
|
||||
trilist.SetBool(joinMap.MeetingCanRecord.JoinNumber, meetingInfoCodec.MeetingInfo.CanRecord);
|
||||
}
|
||||
|
||||
meetingInfoCodec.MeetingInfoChanged += (o, a) =>
|
||||
{
|
||||
trilist.SetBool(joinMap.MeetingCanRecord.JoinNumber, a.Info.CanRecord);
|
||||
};
|
||||
}
|
||||
|
||||
var recordingCodec = this as IHasMeetingRecordingWithPrompt;
|
||||
if (recordingCodec != null)
|
||||
{
|
||||
@@ -2506,13 +2537,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
//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);
|
||||
trilist.SetSigFalseAction(joinMap.StartMeetingNow.JoinNumber, () => StartMeeting(0));
|
||||
trilist.SetSigFalseAction(joinMap.ShareOnlyMeeting.JoinNumber, StartSharingOnlyMeeting);
|
||||
trilist.SetSigFalseAction(joinMap.StartNormalMeetingFromSharingOnlyMeeting.JoinNumber, StartNormalMeetingFromSharingOnlyMeeting);
|
||||
|
||||
trilist.SetStringSigAction(joinMap.SubmitPassword.JoinNumber, SubmitPassword);
|
||||
//trilist.SetSigFalseAction(joinMap.CancelPasswordPrompt.JoinNumber, () =>
|
||||
// OnPasswordRequired(false, false, true, ""));
|
||||
|
||||
// Subscribe to call status to clear ShowPasswordPrompt when in meeting
|
||||
this.CallStatusChange += (o, a) =>
|
||||
@@ -2571,7 +2600,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
var wirelessInfoCodec = this as IZoomWirelessShareInstructions;
|
||||
if (wirelessInfoCodec != null)
|
||||
{
|
||||
SetSharingStateJoins(Status.Sharing, trilist, joinMap);
|
||||
if (Status != null && Status.Sharing != null)
|
||||
{
|
||||
SetSharingStateJoins(Status.Sharing, trilist, joinMap);
|
||||
}
|
||||
|
||||
wirelessInfoCodec.ShareInfoChanged += (o, a) =>
|
||||
{
|
||||
@@ -3429,6 +3461,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
var handler = PasswordRequired;
|
||||
if (handler != null)
|
||||
{
|
||||
if(!loginFailed || !loginCancelled)
|
||||
_meetingPasswordRequired = true;
|
||||
|
||||
handler(this, new PasswordPromptEventArgs(lastAttemptIncorrect, loginFailed, loginCancelled, message));
|
||||
}
|
||||
}
|
||||
@@ -3468,19 +3503,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
StartSharingOnlyMeeting(eSharingMeetingMode.None, 30, String.Empty);
|
||||
}
|
||||
|
||||
public void StartSharingOnlyMeeting(eSharingMeetingMode mode)
|
||||
public void StartSharingOnlyMeeting(eSharingMeetingMode displayMode)
|
||||
{
|
||||
StartSharingOnlyMeeting(mode, 30, String.Empty);
|
||||
StartSharingOnlyMeeting(displayMode, DefaultMeetingDurationMin, String.Empty);
|
||||
}
|
||||
|
||||
public void StartSharingOnlyMeeting(eSharingMeetingMode mode, ushort duration)
|
||||
public void StartSharingOnlyMeeting(eSharingMeetingMode displayMode, uint duration)
|
||||
{
|
||||
StartSharingOnlyMeeting(mode, duration, String.Empty);
|
||||
StartSharingOnlyMeeting(displayMode, duration, String.Empty);
|
||||
}
|
||||
|
||||
public void StartSharingOnlyMeeting(eSharingMeetingMode mode, ushort duration, string password)
|
||||
public void StartSharingOnlyMeeting(eSharingMeetingMode displayMode, uint duration, string password)
|
||||
{
|
||||
SendText(String.Format("zCommand Dial Sharing Duration: {0} DisplayState: {1} Password: {2}", duration, mode, password));
|
||||
SendText(String.Format("zCommand Dial Sharing Duration: {0} DisplayState: {1} Password: {2}", duration, displayMode, password));
|
||||
}
|
||||
|
||||
public void StartNormalMeetingFromSharingOnlyMeeting()
|
||||
@@ -3572,6 +3607,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
void OnShareInfoChanged(zStatus.Sharing status)
|
||||
{
|
||||
Debug.Console(2, this,
|
||||
@"ShareInfoChanged:
|
||||
isSharingHDMI: {0}
|
||||
isSharingAirplay: {1}
|
||||
AirplayPassword: {2}
|
||||
OSD Display State: {3}
|
||||
",
|
||||
status.isSharingBlackMagic,
|
||||
status.isAirHostClientConnected,
|
||||
status.password,
|
||||
status.dispState);
|
||||
|
||||
var handler = ShareInfoChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
|
||||
@@ -101,7 +101,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "FB Indicates the password prompt is active",
|
||||
Description = "Pulse to start an ad-hoc meeting with the default duration",
|
||||
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
@@ -373,6 +373,20 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("MeetingCanRecord")]
|
||||
public JoinDataComplete MeetingCanRecord = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 246,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "When high, indicated that the current meeting can be recorded",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
|
||||
#region Sharing Status
|
||||
|
||||
|
||||
Reference in New Issue
Block a user