mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-07-02 10:38:16 +00:00
fix: update routing logic and enhance logging in Extensions and MockVC classes
closes #1423
This commit is contained in:
parent
469999b6f7
commit
f658fdf363
3 changed files with 15 additions and 9 deletions
|
|
@ -249,7 +249,7 @@ namespace PepperDash.Essentials.Core
|
||||||
}
|
}
|
||||||
// otherwise, audioVideo needs to be handled as two steps.
|
// otherwise, audioVideo needs to be handled as two steps.
|
||||||
|
|
||||||
Debug.LogDebug(destination, "Attempting to build source route from {destinationKey} to {sourceKey} of type {type}", source.Key, signalType);
|
Debug.LogDebug(destination, "Attempting to build source route from {destinationKey} to {sourceKey} of type {type}", destination.Key, source.Key, signalType);
|
||||||
|
|
||||||
RouteDescriptor audioRouteDescriptor;
|
RouteDescriptor audioRouteDescriptor;
|
||||||
|
|
||||||
|
|
@ -374,24 +374,28 @@ namespace PepperDash.Essentials.Core
|
||||||
IndexTieLines();
|
IndexTieLines();
|
||||||
}
|
}
|
||||||
|
|
||||||
var sinks = DeviceManager.AllDevices.OfType<IRoutingInputs>().Where(d => !(d is IRoutingInputsOutputs));
|
var sinks = DeviceManager.AllDevices.OfType<IRoutingInputs>();
|
||||||
var sources = DeviceManager.AllDevices.OfType<IRoutingOutputs>().Where(d => !(d is IRoutingInputsOutputs));
|
var sources = DeviceManager.AllDevices.OfType<IRoutingOutputs>();
|
||||||
|
|
||||||
foreach (var sink in sinks)
|
foreach (var sink in sinks.Where(d => !(d is IRoutingInputsOutputs)))
|
||||||
{
|
{
|
||||||
foreach (var source in sources)
|
foreach (var source in sources.Where(d => !(d is IRoutingInputsOutputs)))
|
||||||
{
|
{
|
||||||
foreach (var inputPort in sink.InputPorts)
|
foreach (var inputPort in sink.InputPorts)
|
||||||
{
|
{
|
||||||
foreach (var outputPort in source.OutputPorts)
|
foreach (var outputPort in source.OutputPorts)
|
||||||
{
|
{
|
||||||
var (audioOrSingleRoute, videoRoute) = sink.GetRouteToSource(source, inputPort.Type, inputPort, outputPort);
|
var (audioOrSingleRoute, videoRoute) = sink.GetRouteToSource(source, outputPort.Type, inputPort, outputPort);
|
||||||
|
|
||||||
if (audioOrSingleRoute == null && videoRoute == null)
|
if (audioOrSingleRoute == null && videoRoute == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.LogVerbose("AudioOrSingleRoute Found: {audioRoute}", audioOrSingleRoute);
|
||||||
|
|
||||||
|
Debug.LogVerbose("VideoRoute Found: {videoRoute}", videoRoute);
|
||||||
|
|
||||||
if (audioOrSingleRoute != null)
|
if (audioOrSingleRoute != null)
|
||||||
{
|
{
|
||||||
// Only add routes that have actual switching steps
|
// Only add routes that have actual switching steps
|
||||||
|
|
@ -646,6 +650,8 @@ namespace PepperDash.Essentials.Core
|
||||||
// Only the ones that are routing devices
|
// Only the ones that are routing devices
|
||||||
var midpointTieLines = destinationTieLines.Where(t => t.SourcePort.ParentDevice is IRoutingInputsOutputs);
|
var midpointTieLines = destinationTieLines.Where(t => t.SourcePort.ParentDevice is IRoutingInputsOutputs);
|
||||||
|
|
||||||
|
Debug.LogVerbose(destination, "Found {tieLineCount} tie lines to walk for {destinationKey}", midpointTieLines.Count(), destination.Key);
|
||||||
|
|
||||||
//Create a list for tracking already checked devices to avoid loops, if it doesn't already exist from previous iteration
|
//Create a list for tracking already checked devices to avoid loops, if it doesn't already exist from previous iteration
|
||||||
if (alreadyCheckedDevices == null)
|
if (alreadyCheckedDevices == null)
|
||||||
alreadyCheckedDevices = new List<IRoutingInputsOutputs>();
|
alreadyCheckedDevices = new List<IRoutingInputsOutputs>();
|
||||||
|
|
@ -685,7 +691,7 @@ namespace PepperDash.Essentials.Core
|
||||||
|
|
||||||
if (goodInputPort == null)
|
if (goodInputPort == null)
|
||||||
{
|
{
|
||||||
Debug.LogVerbose(destination, "No route found to {0}", source.Key);
|
Debug.LogVerbose(destination, "No route found to {0} from destination {1} for type {2}", source.Key, destination.Key, signalType);
|
||||||
|
|
||||||
// Cache this as an impossible route
|
// Cache this as an impossible route
|
||||||
_impossibleRoutes.TryAdd(routeKey, 0);
|
_impossibleRoutes.TryAdd(routeKey, 0);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a MockVC
|
/// Represents a MockVC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MockVC : VideoCodecBase, IRoutingSource, IHasCallHistory, IHasScheduleAwareness, IHasCallFavorites, IHasDirectory, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets
|
public class MockVC : VideoCodecBase, IRoutingSource, IHasCallHistory, IHasScheduleAwareness, IHasCallFavorites, IHasDirectory, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets, IRoutingInputs
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the PropertiesConfig
|
/// Gets or sets the PropertiesConfig
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Base class for video codec devices
|
/// Base class for video codec devices
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class VideoCodecBase : ReconfigurableDevice, IRoutingInputsOutputs,
|
public abstract class VideoCodecBase : ReconfigurableDevice,
|
||||||
IUsageTracking, IHasDialer, IHasContentSharing, ICodecAudio, iVideoCodecInfo, IBridgeAdvanced, IHasStandbyMode
|
IUsageTracking, IHasDialer, IHasContentSharing, ICodecAudio, iVideoCodecInfo, IBridgeAdvanced, IHasStandbyMode
|
||||||
{
|
{
|
||||||
private const int XSigEncoding = 28591;
|
private const int XSigEncoding = 28591;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue