mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 20:54:55 +00:00
Updated DmTxControllerJoinMap and DmTxControllerHelpers
This commit is contained in:
@@ -2,97 +2,58 @@
|
|||||||
|
|
||||||
namespace PepperDash.Essentials.Core.Bridges
|
namespace PepperDash.Essentials.Core.Bridges
|
||||||
{
|
{
|
||||||
public class DmTxControllerJoinMap : JoinMapBase
|
public class DmTxControllerJoinMap : JoinMapBaseAdvanced
|
||||||
{
|
{
|
||||||
#region Digitals
|
[JoinName("IsOnline")]
|
||||||
/// <summary>
|
public JoinDataComplete IsOnline = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 },
|
||||||
/// High when device is online (if not attached to a DMP3 or DM chassis with a CPU3 card
|
new JoinMetadata() { Label = "DM TX Online", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
|
||||||
/// </summary>
|
|
||||||
public uint IsOnline { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// High when video sync is detected
|
|
||||||
/// </summary>
|
|
||||||
public uint VideoSyncStatus { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public uint FreeRunEnabled { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Analogs
|
[JoinName("VideoSyncStatus")]
|
||||||
/// <summary>
|
public JoinDataComplete VideoSyncStatus = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 1 },
|
||||||
/// Sets and reports the video source
|
new JoinMetadata() { Label = "DM TX Video Sync", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
|
||||||
/// </summary>
|
|
||||||
public uint VideoInput { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Sets and reports the audio source
|
|
||||||
/// </summary>
|
|
||||||
public uint AudioInput { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Reports the highest supported HDCP state level for the corresponding input card
|
|
||||||
/// </summary>
|
|
||||||
public uint HdcpSupportCapability { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Sets and reports the current HDCP state for the corresponding input port
|
|
||||||
/// </summary>
|
|
||||||
public uint Port1HdcpState { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Sets and reports the current HDCP state for the corresponding input port
|
|
||||||
/// </summary>
|
|
||||||
public uint Port2HdcpState { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("FreeRunEnabled")]
|
||||||
/// Sets and reports the current VGA Brightness level
|
public JoinDataComplete FreeRunEnabled = new JoinDataComplete(new JoinData() { JoinNumber = 3, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "DM TX Enable Free Run Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint VgaBrightness { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("CurrentInputResolution")]
|
||||||
/// Sets and reports the current VGA Contrast level
|
public JoinDataComplete CurrentInputResolution = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "DM TX Current Input Resolution", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Serial });
|
||||||
public uint VgaContrast { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Serials
|
[JoinName("VideoInput")]
|
||||||
/// <summary>
|
public JoinDataComplete VideoInput = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 },
|
||||||
/// Reports the current input resolution
|
new JoinMetadata() { Label = "DM TX Video Input Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
/// </summary>
|
|
||||||
public uint CurrentInputResolution { get; set; }
|
[JoinName("AudioInput")]
|
||||||
#endregion
|
public JoinDataComplete AudioInput = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 1 },
|
||||||
|
new JoinMetadata() { Label = "DM TX Audio Input Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("HdcpSupportCapability")]
|
||||||
|
public JoinDataComplete HdcpSupportCapability = new JoinDataComplete(new JoinData() { JoinNumber = 3, JoinSpan = 1 },
|
||||||
|
new JoinMetadata() { Label = "DM TX HDCP Support Capability", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("Port1HdcpState")]
|
||||||
|
public JoinDataComplete Port1HdcpState = new JoinDataComplete(new JoinData() { JoinNumber = 4, JoinSpan = 1 },
|
||||||
|
new JoinMetadata() { Label = "DM TX Port 1 HDCP State Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("Port2HdcpState")]
|
||||||
|
public JoinDataComplete Port2HdcpState = new JoinDataComplete(new JoinData() { JoinNumber = 5, JoinSpan = 1 },
|
||||||
|
new JoinMetadata() { Label = "DM TX Port 2 HDCP State Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("VgaBrightness")]
|
||||||
|
public JoinDataComplete VgaBrightness = new JoinDataComplete(new JoinData() { JoinNumber = 6, JoinSpan = 1 },
|
||||||
|
new JoinMetadata() { Label = "DM TX VGA Brightness", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("VgaContrast")]
|
||||||
|
public JoinDataComplete VgaContrast = new JoinDataComplete(new JoinData() { JoinNumber = 7, JoinSpan = 1 },
|
||||||
|
new JoinMetadata() { Label = "DM TX Online", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
|
||||||
public DmTxControllerJoinMap()
|
public DmTxControllerJoinMap(uint joinStart)
|
||||||
|
: base(joinStart, typeof(DmTxControllerJoinMap))
|
||||||
{
|
{
|
||||||
// Digital
|
|
||||||
IsOnline = 1;
|
|
||||||
VideoSyncStatus = 2;
|
|
||||||
FreeRunEnabled = 3;
|
|
||||||
// Serial
|
|
||||||
CurrentInputResolution = 1;
|
|
||||||
// Analog
|
|
||||||
VideoInput = 1;
|
|
||||||
AudioInput = 2;
|
|
||||||
HdcpSupportCapability = 3;
|
|
||||||
Port1HdcpState = 4;
|
|
||||||
Port2HdcpState = 5;
|
|
||||||
VgaBrightness = 6;
|
|
||||||
VgaContrast = 7;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OffsetJoinNumbers(uint joinStart)
|
|
||||||
{
|
|
||||||
var joinOffset = joinStart - 1;
|
|
||||||
|
|
||||||
IsOnline = IsOnline + joinOffset;
|
|
||||||
VideoSyncStatus = VideoSyncStatus + joinOffset;
|
|
||||||
FreeRunEnabled = FreeRunEnabled + joinOffset;
|
|
||||||
CurrentInputResolution = CurrentInputResolution + joinOffset;
|
|
||||||
VideoInput = VideoInput + joinOffset;
|
|
||||||
AudioInput = AudioInput + joinOffset;
|
|
||||||
HdcpSupportCapability = HdcpSupportCapability + joinOffset;
|
|
||||||
Port1HdcpState = Port1HdcpState + joinOffset;
|
|
||||||
Port2HdcpState = Port2HdcpState + joinOffset;
|
|
||||||
VgaBrightness = VgaBrightness + joinOffset;
|
|
||||||
VgaContrast = VgaContrast + joinOffset;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -174,15 +174,13 @@ namespace PepperDash.Essentials.DM
|
|||||||
protected void LinkDmTxToApi(DmTxControllerBase tx, BasicTriList trilist, uint joinStart, string joinMapKey,
|
protected void LinkDmTxToApi(DmTxControllerBase tx, BasicTriList trilist, uint joinStart, string joinMapKey,
|
||||||
EiscApiAdvanced bridge)
|
EiscApiAdvanced bridge)
|
||||||
{
|
{
|
||||||
var joinMap = new DmTxControllerJoinMap();
|
var joinMap = new DmTxControllerJoinMap(joinStart);
|
||||||
|
|
||||||
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
|
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(joinMapSerialized))
|
if (!string.IsNullOrEmpty(joinMapSerialized))
|
||||||
joinMap = JsonConvert.DeserializeObject<DmTxControllerJoinMap>(joinMapSerialized);
|
joinMap = JsonConvert.DeserializeObject<DmTxControllerJoinMap>(joinMapSerialized);
|
||||||
|
|
||||||
joinMap.OffsetJoinNumbers(joinStart);
|
|
||||||
|
|
||||||
if (tx.Hardware is DmHDBasedTEndPoint)
|
if (tx.Hardware is DmHDBasedTEndPoint)
|
||||||
{
|
{
|
||||||
Debug.Console(1, tx, "No properties to link. Skipping device {0}", tx.Name);
|
Debug.Console(1, tx, "No properties to link. Skipping device {0}", tx.Name);
|
||||||
@@ -191,10 +189,10 @@ namespace PepperDash.Essentials.DM
|
|||||||
|
|
||||||
Debug.Console(1, tx, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
Debug.Console(1, tx, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
|
|
||||||
tx.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
tx.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]);
|
||||||
tx.AnyVideoInput.VideoStatus.VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.VideoSyncStatus]);
|
tx.AnyVideoInput.VideoStatus.VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.VideoSyncStatus.JoinNumber]);
|
||||||
tx.AnyVideoInput.VideoStatus.VideoResolutionFeedback.LinkInputSig(trilist.StringInput[joinMap.CurrentInputResolution]);
|
tx.AnyVideoInput.VideoStatus.VideoResolutionFeedback.LinkInputSig(trilist.StringInput[joinMap.CurrentInputResolution.JoinNumber]);
|
||||||
trilist.UShortInput[joinMap.HdcpSupportCapability].UShortValue = (ushort)tx.HdcpSupportCapability;
|
trilist.UShortInput[joinMap.HdcpSupportCapability.JoinNumber].UShortValue = (ushort)tx.HdcpSupportCapability;
|
||||||
|
|
||||||
bool hdcpTypeSimple;
|
bool hdcpTypeSimple;
|
||||||
|
|
||||||
@@ -207,15 +205,15 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
var txR = tx as ITxRouting;
|
var txR = tx as ITxRouting;
|
||||||
|
|
||||||
trilist.SetUShortSigAction(joinMap.VideoInput,
|
trilist.SetUShortSigAction(joinMap.VideoInput.JoinNumber,
|
||||||
i => txR.ExecuteNumericSwitch(i, 0, eRoutingSignalType.Video));
|
i => txR.ExecuteNumericSwitch(i, 0, eRoutingSignalType.Video));
|
||||||
trilist.SetUShortSigAction(joinMap.AudioInput,
|
trilist.SetUShortSigAction(joinMap.AudioInput.JoinNumber,
|
||||||
i => txR.ExecuteNumericSwitch(i, 0, eRoutingSignalType.Audio));
|
i => txR.ExecuteNumericSwitch(i, 0, eRoutingSignalType.Audio));
|
||||||
|
|
||||||
txR.VideoSourceNumericFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoInput]);
|
txR.VideoSourceNumericFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoInput.JoinNumber]);
|
||||||
txR.AudioSourceNumericFeedback.LinkInputSig(trilist.UShortInput[joinMap.AudioInput]);
|
txR.AudioSourceNumericFeedback.LinkInputSig(trilist.UShortInput[joinMap.AudioInput.JoinNumber]);
|
||||||
|
|
||||||
trilist.UShortInput[joinMap.HdcpSupportCapability].UShortValue = (ushort)tx.HdcpSupportCapability;
|
trilist.UShortInput[joinMap.HdcpSupportCapability.JoinNumber].UShortValue = (ushort)tx.HdcpSupportCapability;
|
||||||
|
|
||||||
if (txR.InputPorts[DmPortName.HdmiIn] != null)
|
if (txR.InputPorts[DmPortName.HdmiIn] != null)
|
||||||
{
|
{
|
||||||
@@ -225,14 +223,14 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
var intFeedback = tx.Feedbacks["HdmiInHdcpCapability"] as IntFeedback;
|
var intFeedback = tx.Feedbacks["HdmiInHdcpCapability"] as IntFeedback;
|
||||||
if (intFeedback != null)
|
if (intFeedback != null)
|
||||||
intFeedback.LinkInputSig(trilist.UShortInput[joinMap.Port1HdcpState]);
|
intFeedback.LinkInputSig(trilist.UShortInput[joinMap.Port1HdcpState.JoinNumber]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputPort.ConnectionType == eRoutingPortConnectionType.Hdmi && inputPort.Port != null)
|
if (inputPort.ConnectionType == eRoutingPortConnectionType.Hdmi && inputPort.Port != null)
|
||||||
{
|
{
|
||||||
var port = inputPort.Port as EndpointHdmiInput;
|
var port = inputPort.Port as EndpointHdmiInput;
|
||||||
|
|
||||||
SetHdcpCapabilityAction(hdcpTypeSimple, port, joinMap.Port1HdcpState, trilist);
|
SetHdcpCapabilityAction(hdcpTypeSimple, port, joinMap.Port1HdcpState.JoinNumber, trilist);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,14 +242,14 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
var intFeedback = tx.Feedbacks["HdmiIn1HdcpCapability"] as IntFeedback;
|
var intFeedback = tx.Feedbacks["HdmiIn1HdcpCapability"] as IntFeedback;
|
||||||
if (intFeedback != null)
|
if (intFeedback != null)
|
||||||
intFeedback.LinkInputSig(trilist.UShortInput[joinMap.Port1HdcpState]);
|
intFeedback.LinkInputSig(trilist.UShortInput[joinMap.Port1HdcpState.JoinNumber]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputPort.ConnectionType == eRoutingPortConnectionType.Hdmi && inputPort.Port != null)
|
if (inputPort.ConnectionType == eRoutingPortConnectionType.Hdmi && inputPort.Port != null)
|
||||||
{
|
{
|
||||||
var port = inputPort.Port as EndpointHdmiInput;
|
var port = inputPort.Port as EndpointHdmiInput;
|
||||||
|
|
||||||
SetHdcpCapabilityAction(hdcpTypeSimple, port, joinMap.Port1HdcpState, trilist);
|
SetHdcpCapabilityAction(hdcpTypeSimple, port, joinMap.Port1HdcpState.JoinNumber, trilist);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,14 +261,14 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
var intFeedback = tx.Feedbacks["HdmiIn2HdcpCapability"] as IntFeedback;
|
var intFeedback = tx.Feedbacks["HdmiIn2HdcpCapability"] as IntFeedback;
|
||||||
if (intFeedback != null)
|
if (intFeedback != null)
|
||||||
intFeedback.LinkInputSig(trilist.UShortInput[joinMap.Port1HdcpState]);
|
intFeedback.LinkInputSig(trilist.UShortInput[joinMap.Port1HdcpState.JoinNumber]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputPort.ConnectionType == eRoutingPortConnectionType.Hdmi && inputPort.Port != null)
|
if (inputPort.ConnectionType == eRoutingPortConnectionType.Hdmi && inputPort.Port != null)
|
||||||
{
|
{
|
||||||
var port = inputPort.Port as EndpointHdmiInput;
|
var port = inputPort.Port as EndpointHdmiInput;
|
||||||
|
|
||||||
SetHdcpCapabilityAction(hdcpTypeSimple, port, joinMap.Port2HdcpState, trilist);
|
SetHdcpCapabilityAction(hdcpTypeSimple, port, joinMap.Port2HdcpState.JoinNumber, trilist);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,19 +277,19 @@ namespace PepperDash.Essentials.DM
|
|||||||
var txFreeRun = tx as IHasFreeRun;
|
var txFreeRun = tx as IHasFreeRun;
|
||||||
if (txFreeRun != null)
|
if (txFreeRun != null)
|
||||||
{
|
{
|
||||||
txFreeRun.FreeRunEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.FreeRunEnabled]);
|
txFreeRun.FreeRunEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.FreeRunEnabled.JoinNumber]);
|
||||||
trilist.SetBoolSigAction(joinMap.FreeRunEnabled, new Action<bool>(txFreeRun.SetFreeRunEnabled));
|
trilist.SetBoolSigAction(joinMap.FreeRunEnabled.JoinNumber, new Action<bool>(txFreeRun.SetFreeRunEnabled));
|
||||||
}
|
}
|
||||||
|
|
||||||
var txVga = tx as IVgaBrightnessContrastControls;
|
var txVga = tx as IVgaBrightnessContrastControls;
|
||||||
{
|
{
|
||||||
if (txVga == null) return;
|
if (txVga == null) return;
|
||||||
|
|
||||||
txVga.VgaBrightnessFeedback.LinkInputSig(trilist.UShortInput[joinMap.VgaBrightness]);
|
txVga.VgaBrightnessFeedback.LinkInputSig(trilist.UShortInput[joinMap.VgaBrightness.JoinNumber]);
|
||||||
txVga.VgaContrastFeedback.LinkInputSig(trilist.UShortInput[joinMap.VgaContrast]);
|
txVga.VgaContrastFeedback.LinkInputSig(trilist.UShortInput[joinMap.VgaContrast.JoinNumber]);
|
||||||
|
|
||||||
trilist.SetUShortSigAction(joinMap.VgaBrightness, txVga.SetVgaBrightness);
|
trilist.SetUShortSigAction(joinMap.VgaBrightness.JoinNumber, txVga.SetVgaBrightness);
|
||||||
trilist.SetUShortSigAction(joinMap.VgaContrast, txVga.SetVgaContrast);
|
trilist.SetUShortSigAction(joinMap.VgaContrast.JoinNumber, txVga.SetVgaContrast);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user