Changes Dm-Tx video sync feedback to be specific to port type (hdmi, dp, vga). Moves linking to Api join map into the tx specific LinkToApi()

This commit is contained in:
Alex Johnson
2020-05-07 13:23:20 -04:00
parent 8f440c3cb9
commit f91930930b
8 changed files with 129 additions and 68 deletions

View File

@@ -33,8 +33,8 @@ namespace PepperDash.Essentials.DM
public IntFeedback VideoSourceNumericFeedback { get; protected set; }
public IntFeedback AudioSourceNumericFeedback { get; protected set; }
public IntFeedback HdmiInHdcpCapabilityFeedback { get; protected set; }
public BoolFeedback In1VideoSyncFeedback { get; protected set; }
public BoolFeedback In2VideoSyncFeedback { get; protected set; }
public BoolFeedback HdmiVideoSyncFeedback { get; protected set; }
public BoolFeedback VgaVideoSyncFeedback { get; protected set; }
public BoolFeedback FreeRunEnabledFeedback { get; protected set; }
@@ -129,12 +129,12 @@ namespace PepperDash.Essentials.DM
HdcpSupportCapability = eHdcpCapabilityType.HdcpAutoSupport;
In1VideoSyncFeedback = new BoolFeedback("In1VideoSync", () =>
HdmiVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInput.SyncDetectedFeedback.BoolValue;
});
In2VideoSyncFeedback = new BoolFeedback("In2VideoSync", () =>
VgaVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.VgaInput.SyncDetectedFeedback.BoolValue;
});
@@ -186,8 +186,8 @@ namespace PepperDash.Essentials.DM
AddToFeedbackList(ActiveVideoInputFeedback, VideoSourceNumericFeedback, AudioSourceNumericFeedback,
AnyVideoInput.VideoStatus.HasVideoStatusFeedback, AnyVideoInput.VideoStatus.HdcpActiveFeedback,
AnyVideoInput.VideoStatus.HdcpStateFeedback, AnyVideoInput.VideoStatus.VideoResolutionFeedback,
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiInHdcpCapabilityFeedback, In1VideoSyncFeedback,
In2VideoSyncFeedback);
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiInHdcpCapabilityFeedback, HdmiVideoSyncFeedback,
VgaVideoSyncFeedback);
// Set Ports for CEC
HdmiInput.Port = Tx.HdmiInput;
@@ -233,7 +233,18 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
if (HdmiVideoSyncFeedback != null)
{
HdmiVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (VgaVideoSyncFeedback != null)
{
VgaVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
/// <summary>

View File

@@ -34,8 +34,8 @@ namespace PepperDash.Essentials.DM
public IntFeedback VideoSourceNumericFeedback { get; protected set; }
public IntFeedback AudioSourceNumericFeedback { get; protected set; }
public IntFeedback HdmiInHdcpCapabilityFeedback { get; protected set; }
public BoolFeedback In1VideoSyncFeedback { get; protected set; }
public BoolFeedback In2VideoSyncFeedback { get; protected set; }
public BoolFeedback HdmiVideoSyncFeedback { get; protected set; }
public BoolFeedback VgaVideoSyncFeedback { get; protected set; }
public BoolFeedback FreeRunEnabledFeedback { get; protected set; }
@@ -128,12 +128,12 @@ namespace PepperDash.Essentials.DM
return 0;
});
In1VideoSyncFeedback = new BoolFeedback("In1VideoSync", () =>
HdmiVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInput.SyncDetectedFeedback.BoolValue;
});
In2VideoSyncFeedback = new BoolFeedback("In2VideoSync", () =>
VgaVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.VgaInput.SyncDetectedFeedback.BoolValue;
});
@@ -188,8 +188,8 @@ namespace PepperDash.Essentials.DM
AddToFeedbackList(ActiveVideoInputFeedback, VideoSourceNumericFeedback, AudioSourceNumericFeedback,
AnyVideoInput.VideoStatus.HasVideoStatusFeedback, AnyVideoInput.VideoStatus.HdcpActiveFeedback,
AnyVideoInput.VideoStatus.HdcpStateFeedback, AnyVideoInput.VideoStatus.VideoResolutionFeedback,
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiInHdcpCapabilityFeedback, In1VideoSyncFeedback,
In2VideoSyncFeedback);
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiInHdcpCapabilityFeedback, HdmiVideoSyncFeedback,
VgaVideoSyncFeedback);
// Set Ports for CEC
HdmiInput.Port = Tx.HdmiInput;
@@ -235,7 +235,18 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
if (HdmiVideoSyncFeedback != null)
{
HdmiVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (VgaVideoSyncFeedback != null)
{
VgaVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
/// <summary>

View File

@@ -35,9 +35,9 @@ namespace PepperDash.Essentials.DM
public IntFeedback VideoSourceNumericFeedback { get; protected set; }
public IntFeedback AudioSourceNumericFeedback { get; protected set; }
public IntFeedback HdmiInHdcpCapabilityFeedback { get; protected set; }
public BoolFeedback In1VideoSyncFeedback { get; protected set; }
public BoolFeedback In2VideoSyncFeedback { get; protected set; }
public BoolFeedback In3VideoSyncFeedback { get; protected set; }
public BoolFeedback DisplayPortVideoSyncFeedback { get; protected set; }
public BoolFeedback HdmiVideoSyncFeedback { get; protected set; }
public BoolFeedback VgaVideoSyncFeedback { get; protected set; }
public BoolFeedback FreeRunEnabledFeedback { get; protected set; }
@@ -140,17 +140,17 @@ namespace PepperDash.Essentials.DM
HdcpSupportCapability = eHdcpCapabilityType.HdcpAutoSupport;
In1VideoSyncFeedback = new BoolFeedback("In1VideoSync", () =>
DisplayPortVideoSyncFeedback = new BoolFeedback("DisplayPortVideoSync", () =>
{
return (bool)tx.DisplayPortInput.SyncDetectedFeedback.BoolValue;
});
In2VideoSyncFeedback = new BoolFeedback("In2VideoSync", () =>
HdmiVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInput.SyncDetectedFeedback.BoolValue;
});
In3VideoSyncFeedback = new BoolFeedback("In3VideoSync", () =>
VgaVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.VgaInput.SyncDetectedFeedback.BoolValue;
});
@@ -211,8 +211,8 @@ namespace PepperDash.Essentials.DM
AddToFeedbackList(ActiveVideoInputFeedback, VideoSourceNumericFeedback, AudioSourceNumericFeedback,
AnyVideoInput.VideoStatus.HasVideoStatusFeedback, AnyVideoInput.VideoStatus.HdcpActiveFeedback,
AnyVideoInput.VideoStatus.HdcpStateFeedback, AnyVideoInput.VideoStatus.VideoResolutionFeedback,
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiInHdcpCapabilityFeedback, In1VideoSyncFeedback,
In2VideoSyncFeedback, In3VideoSyncFeedback);
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiInHdcpCapabilityFeedback, DisplayPortVideoSyncFeedback,
HdmiVideoSyncFeedback, VgaVideoSyncFeedback);
// Set Ports for CEC
DisplayPortIn.Port = Tx.DisplayPortInput;
@@ -238,7 +238,18 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
if (HdmiVideoSyncFeedback != null)
{
HdmiVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (VgaVideoSyncFeedback != null)
{
VgaVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
public void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type)

View File

@@ -72,7 +72,9 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
#region IIROutputPorts Members

View File

@@ -35,8 +35,8 @@ namespace PepperDash.Essentials.DM
public IntFeedback AudioSourceNumericFeedback { get; protected set; }
public IntFeedback HdmiIn1HdcpCapabilityFeedback { get; protected set; }
public IntFeedback HdmiIn2HdcpCapabilityFeedback { get; protected set; }
public BoolFeedback In1VideoSyncFeedback { get; protected set; }
public BoolFeedback In2VideoSyncFeedback { get; protected set; }
public BoolFeedback Hdmi1VideoSyncFeedback { get; protected set; }
public BoolFeedback Hdmi2VideoSyncFeedback { get; protected set; }
//public override IntFeedback HdcpSupportAllFeedback { get; protected set; }
//public override ushort HdcpSupportCapability { get; protected set; }
@@ -121,12 +121,12 @@ namespace PepperDash.Essentials.DM
HdcpSupportCapability = eHdcpCapabilityType.Hdcp2_2Support;
In1VideoSyncFeedback = new BoolFeedback("In1VideoSync", () =>
Hdmi1VideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInputs[1].SyncDetectedFeedback.BoolValue;
});
In2VideoSyncFeedback = new BoolFeedback("In2VideoSync", () =>
Hdmi2VideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInputs[2].SyncDetectedFeedback.BoolValue;
});
@@ -177,7 +177,7 @@ namespace PepperDash.Essentials.DM
AnyVideoInput.VideoStatus.HasVideoStatusFeedback, AnyVideoInput.VideoStatus.HdcpActiveFeedback,
AnyVideoInput.VideoStatus.HdcpStateFeedback, AnyVideoInput.VideoStatus.VideoResolutionFeedback,
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiIn1HdcpCapabilityFeedback, HdmiIn2HdcpCapabilityFeedback,
In1VideoSyncFeedback, In2VideoSyncFeedback);
Hdmi1VideoSyncFeedback, Hdmi2VideoSyncFeedback);
// Set Ports for CEC
HdmiIn1.Port = Tx.HdmiInputs[1];
@@ -203,7 +203,18 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
if (Hdmi1VideoSyncFeedback != null)
{
Hdmi1VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (Hdmi2VideoSyncFeedback != null)
{
Hdmi2VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
public void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type)

View File

@@ -36,9 +36,9 @@ namespace PepperDash.Essentials.DM
public IntFeedback AudioSourceNumericFeedback { get; protected set; }
public IntFeedback HdmiIn1HdcpCapabilityFeedback { get; protected set; }
public IntFeedback HdmiIn2HdcpCapabilityFeedback { get; protected set; }
public BoolFeedback In1VideoSyncFeedback { get; protected set; }
public BoolFeedback In2VideoSyncFeedback { get; protected set; }
public BoolFeedback In3VideoSyncFeedback { get; protected set; }
public BoolFeedback Hdmi1VideoSyncFeedback { get; protected set; }
public BoolFeedback Hdmi2VideoSyncFeedback { get; protected set; }
public BoolFeedback VgaVideoSyncFeedback { get; protected set; }
public BoolFeedback FreeRunEnabledFeedback { get; protected set; }
@@ -129,17 +129,17 @@ namespace PepperDash.Essentials.DM
HdcpSupportCapability = eHdcpCapabilityType.Hdcp2_2Support;
In1VideoSyncFeedback = new BoolFeedback("In1VideoSync", () =>
Hdmi1VideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInputs[1].SyncDetectedFeedback.BoolValue;
});
In2VideoSyncFeedback = new BoolFeedback("In2VideoSync", () =>
Hdmi2VideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInputs[2].SyncDetectedFeedback.BoolValue;
});
In3VideoSyncFeedback = new BoolFeedback("In3VideoSync", () =>
VgaVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.VgaInput.SyncDetectedFeedback.BoolValue;
});
@@ -202,7 +202,7 @@ namespace PepperDash.Essentials.DM
AnyVideoInput.VideoStatus.HasVideoStatusFeedback, AnyVideoInput.VideoStatus.HdcpActiveFeedback,
AnyVideoInput.VideoStatus.HdcpStateFeedback, AnyVideoInput.VideoStatus.VideoResolutionFeedback,
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiIn1HdcpCapabilityFeedback, HdmiIn2HdcpCapabilityFeedback,
In1VideoSyncFeedback, In2VideoSyncFeedback, In3VideoSyncFeedback);
Hdmi1VideoSyncFeedback, Hdmi2VideoSyncFeedback, VgaVideoSyncFeedback);
// Set Ports for CEC
HdmiIn1.Port = Tx.HdmiInputs[1];
@@ -246,7 +246,22 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
if (Hdmi1VideoSyncFeedback != null)
{
Hdmi1VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (Hdmi2VideoSyncFeedback != null)
{
Hdmi2VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
if (VgaVideoSyncFeedback != null)
{
VgaVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input3VideoSyncStatus]);
}
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
/// <summary>

View File

@@ -36,9 +36,9 @@ namespace PepperDash.Essentials.DM
public IntFeedback AudioSourceNumericFeedback { get; protected set; }
public IntFeedback HdmiIn1HdcpCapabilityFeedback { get; protected set; }
public IntFeedback HdmiIn2HdcpCapabilityFeedback { get; protected set; }
public BoolFeedback In1VideoSyncFeedback { get; protected set; }
public BoolFeedback In2VideoSyncFeedback { get; protected set; }
public BoolFeedback In3VideoSyncFeedback { get; protected set; }
public BoolFeedback Hdmi1VideoSyncFeedback { get; protected set; }
public BoolFeedback Hdmi2VideoSyncFeedback { get; protected set; }
public BoolFeedback DisplayPortVideoSyncFeedback { get; protected set; }
//public override IntFeedback HdcpSupportAllFeedback { get; protected set; }
//public override ushort HdcpSupportCapability { get; protected set; }
@@ -127,17 +127,17 @@ namespace PepperDash.Essentials.DM
HdcpSupportCapability = eHdcpCapabilityType.Hdcp2_2Support;
In1VideoSyncFeedback = new BoolFeedback("In1VideoSync", () =>
Hdmi1VideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInputs[1].SyncDetectedFeedback.BoolValue;
});
In2VideoSyncFeedback = new BoolFeedback("In2VideoSync", () =>
Hdmi2VideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.HdmiInputs[2].SyncDetectedFeedback.BoolValue;
});
In3VideoSyncFeedback = new BoolFeedback("In3VideoSync", () =>
DisplayPortVideoSyncFeedback = new BoolFeedback(() =>
{
return (bool)tx.DisplayPortInput.SyncDetectedFeedback.BoolValue;
});
@@ -193,7 +193,7 @@ namespace PepperDash.Essentials.DM
AnyVideoInput.VideoStatus.HasVideoStatusFeedback, AnyVideoInput.VideoStatus.HdcpActiveFeedback,
AnyVideoInput.VideoStatus.HdcpStateFeedback, AnyVideoInput.VideoStatus.VideoResolutionFeedback,
AnyVideoInput.VideoStatus.VideoSyncFeedback, HdmiIn1HdcpCapabilityFeedback, HdmiIn2HdcpCapabilityFeedback,
In1VideoSyncFeedback, In2VideoSyncFeedback, In3VideoSyncFeedback);
Hdmi1VideoSyncFeedback, Hdmi2VideoSyncFeedback, DisplayPortVideoSyncFeedback);
// Set Ports for CEC
HdmiIn1.Port = Tx.HdmiInputs[1];
@@ -222,7 +222,22 @@ namespace PepperDash.Essentials.DM
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
LinkDmTxToApi(this, trilist, joinStart, joinMapKey, bridge);
DmTxControllerJoinMap joinMap = GetDmTxJoinMap(joinStart, joinMapKey);
if (Hdmi1VideoSyncFeedback != null)
{
Hdmi1VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (Hdmi2VideoSyncFeedback != null)
{
Hdmi2VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
if (DisplayPortVideoSyncFeedback != null)
{
DisplayPortVideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input3VideoSyncStatus]);
}
LinkDmTxToApi(this, trilist, joinMap, bridge);
}
public void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type)

View File

@@ -171,9 +171,8 @@ namespace PepperDash.Essentials.DM
{
}
protected void LinkDmTxToApi(DmTxControllerBase tx, BasicTriList trilist, uint joinStart, string joinMapKey,
EiscApiAdvanced bridge)
{
protected DmTxControllerJoinMap GetDmTxJoinMap(uint joinStart, string joinMapKey)
{
var joinMap = new DmTxControllerJoinMap();
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
@@ -183,6 +182,11 @@ namespace PepperDash.Essentials.DM
joinMap.OffsetJoinNumbers(joinStart);
return joinMap;
}
protected void LinkDmTxToApi(DmTxControllerBase tx, BasicTriList trilist, DmTxControllerJoinMap joinMap, EiscApiAdvanced bridge)
{
if (tx.Hardware is DmHDBasedTEndPoint)
{
Debug.Console(1, tx, "No properties to link. Skipping device {0}", tx.Name);
@@ -217,25 +221,6 @@ namespace PepperDash.Essentials.DM
trilist.UShortInput[joinMap.HdcpSupportCapability].UShortValue = (ushort)tx.HdcpSupportCapability;
if (tx.Feedbacks["In1VideoSyncFeedback"] != null)
{
var boolFeedback = tx.Feedbacks["In1VideoSyncFeedback"] as BoolFeedback;
if (boolFeedback != null)
boolFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input1VideoSyncStatus]);
}
if (tx.Feedbacks["In2VideoSyncFeedback"] != null)
{
var boolFeedback = tx.Feedbacks["In1VideoSyncFeedback"] as BoolFeedback;
if (boolFeedback != null)
boolFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input2VideoSyncStatus]);
}
if (tx.Feedbacks["In3VideoSyncFeedback"] != null)
{
var boolFeedback = tx.Feedbacks["In1VideoSyncFeedback"] as BoolFeedback;
if (boolFeedback != null)
boolFeedback.LinkInputSig(trilist.BooleanInput[joinMap.Input3VideoSyncStatus]);
}
if (txR.InputPorts[DmPortName.HdmiIn] != null)
{
var inputPort = txR.InputPorts[DmPortName.HdmiIn];