fix(essentials): reworks logic for setting up cameras to wait until codec communication sync has finished

This commit is contained in:
Neil Dorin
2021-11-17 12:24:58 -07:00
parent cdafaf1bcb
commit c685608f67
2 changed files with 21 additions and 9 deletions

View File

@@ -32,6 +32,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
IHasExternalSourceSwitching, IHasBranding, IHasCameraOff, IHasCameraMute, IHasDoNotDisturbMode,
IHasHalfWakeMode, IHasCallHold, IJoinCalls
{
private CiscoSparkCodecPropertiesConfig _config;
private bool _externalSourceChangeRequested;
public event EventHandler<DirectoryEventArgs> DirectoryResultReturned;
@@ -314,6 +316,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
{
var props = JsonConvert.DeserializeObject<Codec.CiscoSparkCodecPropertiesConfig>(config.Properties.ToString());
_config = props;
// Use the configured phonebook results limit if present
if (props.PhonebookResultsLimit > 0)
{
@@ -417,9 +421,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
InputPorts.Add(HdmiIn2);
InputPorts.Add(HdmiIn3);
OutputPorts.Add(HdmiOut1);
SetUpCameras(props.CameraInfo);
CreateOsdSource();
ExternalSourceListEnabled = props.ExternalSourceListEnabled;
@@ -638,6 +639,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
/// <param name="e"></param>
void SyncState_InitialSyncCompleted(object sender, EventArgs e)
{
SetUpCameras(_config.CameraInfo);
// Fire the ready event
SetIsReady();
//CommDebuggingIsOn = false;
@@ -1912,9 +1915,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
{
var internalCamera = new CiscoSparkCamera(Key + "-camera1", "Near End", this, 1);
if (CodecStatus.Status.Cameras.Camera[0] != null && CodecStatus.Status.Cameras.Camera[0].Capabilities != null)
if (camCount > 0)
{
internalCamera.SetCapabilites(CodecStatus.Status.Cameras.Camera[0].Capabilities.Options.Value);
// Try to get the capabilities from the codec
if (CodecStatus.Status.Cameras.Camera[0] != null && CodecStatus.Status.Cameras.Camera[0].Capabilities != null)
{
internalCamera.SetCapabilites(CodecStatus.Status.Cameras.Camera[0].Capabilities.Options.Value);
}
}
Cameras.Add(internalCamera);

View File

@@ -328,15 +328,20 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
LinkVideoCodecVolumeToApi(trilist, joinMap);
// Register for this event to link any functions that require the codec to be ready first
codec.IsReadyChange += (o, a) =>
{
if (codec is IHasCodecCameras)
{
LinkVideoCodecCameraToApi(codec as IHasCodecCameras, trilist, joinMap);
}
};
if (codec is ICommunicationMonitor)
{
LinkVideoCodecCommMonitorToApi(codec as ICommunicationMonitor, trilist, joinMap);
}
if (codec is IHasCodecCameras)
{
LinkVideoCodecCameraToApi(codec as IHasCodecCameras, trilist, joinMap);
}
if (codec is IHasCodecSelfView)
{