mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-07 08:45:06 +00:00
fix(essentials): adds cancel method for password prompt and adds wireless share instructions
This commit is contained in:
@@ -20,7 +20,12 @@ namespace PepperDash.Essentials.Core
|
||||
/// Submits the password
|
||||
/// </summary>
|
||||
/// <param name="password"></param>
|
||||
void SubmitPassword(string password);
|
||||
void SubmitPassword(string password);
|
||||
|
||||
/// <summary>
|
||||
/// Cancels the password submission
|
||||
/// </summary>
|
||||
void CancelPasswordPrompt();
|
||||
}
|
||||
|
||||
public class PasswordPromptEventArgs : EventArgs
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
using PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
{
|
||||
public class ShareInfoEventArgs : EventArgs
|
||||
{
|
||||
public zStatus.Sharing SharingStatus { get; private set; }
|
||||
|
||||
public ShareInfoEventArgs(zStatus.Sharing status)
|
||||
{
|
||||
SharingStatus = status;
|
||||
}
|
||||
}
|
||||
|
||||
public interface IZoomWirelessShareInstructions
|
||||
{
|
||||
event EventHandler<ShareInfoEventArgs> ShareInfoChanged;
|
||||
|
||||
zStatus.Sharing SharingState { get; }
|
||||
}
|
||||
}
|
||||
@@ -434,9 +434,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
public bool supports_Web_Settings_Push { get; set; }
|
||||
}
|
||||
|
||||
public enum eDisplayState
|
||||
{
|
||||
None,
|
||||
Laptop,
|
||||
IOS,
|
||||
}
|
||||
|
||||
public class Sharing : NotifiableObject
|
||||
{
|
||||
private string _dispState;
|
||||
private eDisplayState _dispState;
|
||||
private string _password;
|
||||
private bool _isAirHostClientConnected;
|
||||
private bool _isSharingBlackMagic;
|
||||
@@ -448,7 +455,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
/// Laptop client sharing key
|
||||
/// </summary>
|
||||
public string directPresentationSharingKey { get; set; }
|
||||
public string dispState
|
||||
public eDisplayState dispState
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -506,8 +513,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// IOS Airplay code
|
||||
/// </summary>
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
IHasScheduleAwareness, IHasCodecCameras, IHasParticipants, IHasCameraOff, IHasCameraMuteWithUnmuteReqeust, IHasCameraAutoMode,
|
||||
IHasFarEndContentStatus, IHasSelfviewPosition, IHasPhoneDialing, IHasZoomRoomLayouts, IHasParticipantPinUnpin,
|
||||
IHasParticipantAudioMute, IHasSelfviewSize, IPasswordPrompt, IHasStartMeeting, IHasMeetingInfo, IHasPresentationOnlyMeeting,
|
||||
IHasMeetingLock, IHasMeetingRecordingWithPrompt
|
||||
IHasMeetingLock, IHasMeetingRecordingWithPrompt, IZoomWirelessShareInstructions
|
||||
{
|
||||
public event EventHandler VideoUnmuteRequested;
|
||||
|
||||
@@ -47,12 +47,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
private const string JsonDelimiter = "\x0D\x0A\x7D\x0D\x0A";
|
||||
|
||||
private string[] Delimiters = new string[] { EchoDelimiter, JsonDelimiter, "OK\x0D\x0A", "end\x0D\x0A" };
|
||||
//"echo off\x0D\x0A\x0A\x0D\x0A"
|
||||
private readonly GenericQueue _receiveQueue;
|
||||
//private readonly CrestronQueue<string> _receiveQueue;
|
||||
|
||||
|
||||
//private readonly Thread _receiveThread;
|
||||
|
||||
private readonly ZoomRoomSyncState _syncState;
|
||||
public bool CommDebuggingIsOn;
|
||||
@@ -64,6 +59,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
private CameraBase _selectedCamera;
|
||||
private string _lastDialedMeetingNumber;
|
||||
|
||||
|
||||
private readonly ZoomRoomPropertiesConfig _props;
|
||||
|
||||
public ZoomRoom(DeviceConfig config, IBasicCommunication comm)
|
||||
@@ -754,6 +750,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
Status.Sharing.PropertyChanged += (o, a) =>
|
||||
{
|
||||
OnShareInfoChanged(Status.Sharing);
|
||||
SharingSourceFeedback.FireUpdate();
|
||||
switch (a.PropertyName)
|
||||
{
|
||||
@@ -2523,8 +2520,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
};
|
||||
|
||||
trilist.SetSigFalseAction(joinMap.CancelPasswordPrompt.JoinNumber, () => CancelPasswordPrompt());
|
||||
|
||||
PasswordRequired += (devices, args) =>
|
||||
{
|
||||
Debug.Console(0, this, "***********************************PaswordRequired. Message: {0} Cancelled: {1} Last Incorrect: {2} Failed: {3}", args.Message, args.LoginAttemptCancelled, args.LastAttemptWasIncorrect, args.LoginAttemptFailed);
|
||||
|
||||
if (args.LoginAttemptCancelled)
|
||||
{
|
||||
trilist.SetBool(joinMap.ShowPasswordPrompt.JoinNumber, false);
|
||||
@@ -2559,8 +2560,31 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
pinCodec.NumberOfScreensFeedback.FireUpdate();
|
||||
layoutSizeCodec.SelfviewPipSizeFeedback.FireUpdate();
|
||||
};
|
||||
|
||||
var wirelessInfoCodec = this as IZoomWirelessShareInstructions;
|
||||
if (wirelessInfoCodec != null)
|
||||
{
|
||||
SetSharingStateJoins(Status.Sharing, trilist, joinMap);
|
||||
|
||||
wirelessInfoCodec.ShareInfoChanged += (o, a) =>
|
||||
{
|
||||
SetSharingStateJoins(a.SharingStatus, trilist, joinMap);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
void SetSharingStateJoins(zStatus.Sharing state, BasicTriList trilist, ZoomRoomJoinMap joinMap)
|
||||
{
|
||||
trilist.SetBool(joinMap.IsSharingAirplay.JoinNumber, state.isAirHostClientConnected);
|
||||
trilist.SetBool(joinMap.IsSharingHdmi.JoinNumber, state.isBlackMagicConnected || state.isDirectPresentationConnected);
|
||||
|
||||
trilist.SetString(joinMap.DisplayState.JoinNumber, state.dispState.ToString());
|
||||
trilist.SetString(joinMap.AirplayShareCode.JoinNumber, state.password);
|
||||
trilist.SetString(joinMap.LaptopShareKey.JoinNumber, state.directPresentationSharingKey);
|
||||
trilist.SetString(joinMap.WifiName.JoinNumber, state.wifiName);
|
||||
trilist.SetString(joinMap.ServerName.JoinNumber, state.serverName);
|
||||
}
|
||||
|
||||
public override void ExecuteSwitch(object selector)
|
||||
{
|
||||
var action = selector as Action;
|
||||
@@ -3388,6 +3412,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
//OnPasswordRequired(false, false, true, "");
|
||||
}
|
||||
|
||||
public void CancelPasswordPrompt()
|
||||
{
|
||||
OnPasswordRequired(false, false, true, "Login Cancelled");
|
||||
}
|
||||
|
||||
void OnPasswordRequired(bool lastAttemptIncorrect, bool loginFailed, bool loginCancelled, string message)
|
||||
{
|
||||
var handler = PasswordRequired;
|
||||
@@ -3521,6 +3550,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IZoomWirelessShareInstructions Members
|
||||
|
||||
public event EventHandler<ShareInfoEventArgs> ShareInfoChanged;
|
||||
|
||||
public zStatus.Sharing SharingState
|
||||
{
|
||||
get
|
||||
{
|
||||
return Status.Sharing;
|
||||
}
|
||||
}
|
||||
|
||||
void OnShareInfoChanged(zStatus.Sharing status)
|
||||
{
|
||||
var handler = ShareInfoChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new ShareInfoEventArgs(status));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -8,7 +8,20 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
{
|
||||
#region Digital
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("CancelPasswordPrompt")]
|
||||
public JoinDataComplete CancelPasswordPrompt = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 5,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Pulse to hide the password prompt",
|
||||
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("ShowPasswordPrompt")]
|
||||
public JoinDataComplete ShowPasswordPrompt = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -23,7 +36,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("PasswordIncorrect")]
|
||||
public JoinDataComplete PasswordIncorrect = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -38,8 +50,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("PassowrdLoginFailed")]
|
||||
[JoinName("PasswordLoginFailed")]
|
||||
public JoinDataComplete PasswordLoginFailed = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
@@ -53,7 +64,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("WaitingForHost")]
|
||||
public JoinDataComplete WaitingForHost = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -68,7 +78,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("IsHost")]
|
||||
public JoinDataComplete IsHost = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -83,7 +92,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("StartMeetingNow")]
|
||||
public JoinDataComplete StartMeetingNow = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -98,7 +106,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("ShareOnlyMeeting")]
|
||||
public JoinDataComplete ShareOnlyMeeting = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -113,7 +120,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
// TODO [ ] Issue #868
|
||||
[JoinName("StartNormalMeetingFromSharingOnlyMeeting")]
|
||||
public JoinDataComplete StartNormalMeetingFromSharingOnlyMeeting = new JoinDataComplete(
|
||||
new JoinData
|
||||
@@ -367,6 +373,40 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
|
||||
#region Sharing Status
|
||||
|
||||
[JoinName("IsSharingAirplay")]
|
||||
public JoinDataComplete IsSharingAirplay = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 250,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Indicates an Airplay source is sharing",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
[JoinName("IsSharingHdmi")]
|
||||
public JoinDataComplete IsSharingHdmi = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 251,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Indicates an HDMI source is sharing",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Digital
|
||||
});
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
//[JoinName("ParticipantAudioMuteToggleStart")]
|
||||
//public JoinDataComplete ParticipantAudioMuteToggleStart = new JoinDataComplete(
|
||||
// new JoinData
|
||||
@@ -551,6 +591,92 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
JoinType = eJoinType.DigitalSerial
|
||||
});
|
||||
|
||||
[JoinName("DisplayState")]
|
||||
public JoinDataComplete DisplayState = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 250,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Reports the instructions the ZoomRoom is displaying on the monitor. <None | Laptop | IOS>",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
[JoinName("AirplayShareCode")]
|
||||
public JoinDataComplete AirplayShareCode = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 251,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Reports the current code for Airplay Sharing.",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
[JoinName("LaptopShareKey")]
|
||||
public JoinDataComplete LaptopShareKey = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 252,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "The alpha-only sharing key that users type into a laptop client to share with the Zoom Room.",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
[JoinName("LaptopSharePairingCode")]
|
||||
public JoinDataComplete LaptopSharePairingCode = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 253,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "This is the paring code that is broadcast via an ultrasonic signal from the ZRC. It is different than the user-supplied paring code. The ZRC uses a Zoom-proprietary method of advertizing the ultrasonic pairing code, so it\'s not possible to advertize it using commonly available libraries.",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
[JoinName("WifiName")]
|
||||
public JoinDataComplete WifiName = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 254,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Reports the Wifi SSID used by the ZoomRoom.",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
[JoinName("ServerName")]
|
||||
public JoinDataComplete ServerName = new JoinDataComplete(
|
||||
new JoinData
|
||||
{
|
||||
JoinNumber = 255,
|
||||
JoinSpan = 1
|
||||
},
|
||||
new JoinMetadata
|
||||
{
|
||||
Description = "Reports the namne of the the ZoomRoom.",
|
||||
JoinCapabilities = eJoinCapabilities.ToSIMPL,
|
||||
JoinType = eJoinType.Serial
|
||||
});
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
public ZoomRoomJoinMap(uint joinStart)
|
||||
|
||||
Reference in New Issue
Block a user