mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-28 11:54:57 +00:00
feat: adds support for hdcp input control and feedback on Airmedia devices
This commit is contained in:
@@ -20,6 +20,18 @@ namespace PepperDash.Essentials.Core.Bridges
|
||||
public JoinDataComplete AutomaticInputRoutingEnabled = new JoinDataComplete(new JoinData { JoinNumber = 4, JoinSpan = 1 },
|
||||
new JoinMetadata { Description = "Air Media Automatic Input Routing Enable(d)", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||
|
||||
[JoinName("HdmiInHdcpSupportOn")]
|
||||
public JoinDataComplete HdmiInHdcpSupportOn = new JoinDataComplete(new JoinData { JoinNumber = 4, JoinSpan = 1 },
|
||||
new JoinMetadata { Description = "Turns on HDCP support for HDMI in. Reports state as FB", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||
|
||||
[JoinName("HdmiInHdcpSupportOff")]
|
||||
public JoinDataComplete HdmiInHdcpSupportOff = new JoinDataComplete(new JoinData { JoinNumber = 5, JoinSpan = 1 },
|
||||
new JoinMetadata { Description = "Turns off HDCP support for HDMI in. Reports state as FB", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||
|
||||
[JoinName("HdmiInDisabledByHdcp")]
|
||||
public JoinDataComplete HdmiInDisabledByHdcp = new JoinDataComplete(new JoinData { JoinNumber = 6, JoinSpan = 1 },
|
||||
new JoinMetadata { Description = "Reports if ", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
|
||||
|
||||
[JoinName("VideoOut")]
|
||||
public JoinDataComplete VideoOut = new JoinDataComplete(new JoinData { JoinNumber = 1, JoinSpan = 1 },
|
||||
new JoinMetadata { Description = "Air Media Video Route Select / Feedback", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||
|
||||
@@ -43,11 +43,12 @@ namespace PepperDash.Essentials.DM.AirMedia
|
||||
public BoolFeedback HdmiVideoSyncDetectedFeedback { get; private set; }
|
||||
public StringFeedback SerialNumberFeedback { get; private set; }
|
||||
public BoolFeedback AutomaticInputRoutingEnabledFeedback { get; private set; }
|
||||
public BoolFeedback HdmiInHdcpSupportOnFeedback { get; private set; }
|
||||
public BoolFeedback HdmiInDisabledByHdcpFeedback { get; private set; }
|
||||
|
||||
public AirMediaController(string key, string name, Am3x00 device, DeviceConfig dc, AirMediaPropertiesConfig props)
|
||||
: base(key, name, device)
|
||||
{
|
||||
|
||||
AirMedia = device;
|
||||
|
||||
DeviceConfig = dc;
|
||||
@@ -101,6 +102,8 @@ namespace PepperDash.Essentials.DM.AirMedia
|
||||
LoginCodeFeedback = new IntFeedback(() => AirMedia.AirMedia.LoginCodeFeedback.UShortValue);
|
||||
ConnectionAddressFeedback = new StringFeedback(() => AirMedia.AirMedia.ConnectionAddressFeedback.StringValue);
|
||||
HostnameFeedback = new StringFeedback(() => AirMedia.AirMedia.HostNameFeedback.StringValue);
|
||||
HdmiInHdcpSupportOnFeedback = new BoolFeedback(() => AirMedia.HdmiIn.HdcpSupportOnFeedback.BoolValue);
|
||||
HdmiInDisabledByHdcpFeedback = new BoolFeedback(() => AirMedia.HdmiIn.DisabledByHdcpFeedback.BoolValue);
|
||||
|
||||
// TODO: Figure out if we can actually get the TSID/Serial
|
||||
SerialNumberFeedback = new StringFeedback(() => "unknown");
|
||||
@@ -178,6 +181,13 @@ namespace PepperDash.Essentials.DM.AirMedia
|
||||
ConnectionAddressFeedback.LinkInputSig(trilist.StringInput[joinMap.ConnectionAddressFB.JoinNumber]);
|
||||
HostnameFeedback.LinkInputSig(trilist.StringInput[joinMap.HostnameFB.JoinNumber]);
|
||||
SerialNumberFeedback.LinkInputSig(trilist.StringInput[joinMap.SerialNumberFeedback.JoinNumber]);
|
||||
|
||||
trilist.SetSigFalseAction(joinMap.HdmiInHdcpSupportOn.JoinNumber, () => SetHcdpSupport(true));
|
||||
HdmiInHdcpSupportOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.HdmiInHdcpSupportOn.JoinNumber]);
|
||||
trilist.SetSigFalseAction(joinMap.HdmiInHdcpSupportOff.JoinNumber, () => SetHcdpSupport(false));
|
||||
HdmiInHdcpSupportOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.HdmiInHdcpSupportOff.JoinNumber]);
|
||||
|
||||
HdmiInDisabledByHdcpFeedback.LinkInputSig(trilist.BooleanInput[joinMap.HdmiInDisabledByHdcp.JoinNumber]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -248,6 +258,14 @@ namespace PepperDash.Essentials.DM.AirMedia
|
||||
{
|
||||
if (args.EventId == DMInputEventIds.SourceSyncEventId)
|
||||
HdmiVideoSyncDetectedFeedback.FireUpdate();
|
||||
else if (args.EventId == DMInputEventIds.HdcpSupportOnEventId)
|
||||
{
|
||||
HdmiInHdcpSupportOnFeedback.FireUpdate();
|
||||
}
|
||||
else if (args.EventId == DMInputEventIds.DisabledByHdcpEventId)
|
||||
{
|
||||
HdmiInDisabledByHdcpFeedback.FireUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -296,6 +314,14 @@ namespace PepperDash.Essentials.DM.AirMedia
|
||||
AirMedia.DisplayControl.VideoOut = AmX00DisplayControl.eAirMediaX00VideoSource.AirBoard;
|
||||
}
|
||||
|
||||
public void SetHcdpSupport(bool on)
|
||||
{
|
||||
if (on)
|
||||
AirMedia.HdmiIn.HdcpSupportOn();
|
||||
else
|
||||
AirMedia.HdmiIn.HdcpSupportOff();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reboots the device
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user