From 3d760cbedcfe7889d77ab25f097e38e53a9ac984 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Tue, 14 Nov 2023 16:28:32 -0700 Subject: [PATCH 1/5] feat: adds support for hdcp input control and feedback on Airmedia devices --- .../JoinMaps/AirMediaControllerJoinMap.cs | 12 ++++++++ .../AirMedia/AirMediaController.cs | 28 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/AirMediaControllerJoinMap.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/AirMediaControllerJoinMap.cs index 126c6112..170da721 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/AirMediaControllerJoinMap.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/AirMediaControllerJoinMap.cs @@ -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 }); diff --git a/essentials-framework/Essentials DM/Essentials_DM/AirMedia/AirMediaController.cs b/essentials-framework/Essentials DM/Essentials_DM/AirMedia/AirMediaController.cs index b1fa3186..5a1d50ff 100644 --- a/essentials-framework/Essentials DM/Essentials_DM/AirMedia/AirMediaController.cs +++ b/essentials-framework/Essentials DM/Essentials_DM/AirMedia/AirMediaController.cs @@ -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]); } /// @@ -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(); + } } /// @@ -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(); + } + /// /// Reboots the device /// From 6f5fa2c3b83bc2cb0cbf8ee9152172f672375230 Mon Sep 17 00:00:00 2001 From: Nick Genovese Date: Tue, 12 Dec 2023 15:29:41 -0500 Subject: [PATCH 2/5] fix: clear selected causes thread abort in 3 series - the old method was using _directoryCode, _directoryTrilist, _directoryJoinmap which were never initialized --- .../Essentials Devices Common/VideoCodec/VideoCodecBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs index 187cc855..1a842bc5 100644 --- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs +++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs @@ -994,7 +994,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec //Special Change for protected directory clear - trilist.SetBoolSigAction(joinMap.DirectoryClearSelected.JoinNumber, (b) => SelectDirectoryEntry(_directoryCodec, 0, _directoryTrilist, _directoryJoinmap)); + trilist.SetBoolSigAction(joinMap.DirectoryClearSelected.JoinNumber, (b) => SelectDirectoryEntry(codec, 0, trilist, joinMap)); // Report feedback for number of contact methods for selected contact From 8c1553a0269e36760fea6cdb1469201d8b49eae9 Mon Sep 17 00:00:00 2001 From: jtalborough Date: Mon, 26 Feb 2024 13:22:35 -0500 Subject: [PATCH 3/5] fix: Update PepperDashCore version to 1.3.3-hotfix-390 --- packages.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.config b/packages.config index fa36e07d..eff6d8ce 100644 --- a/packages.config +++ b/packages.config @@ -1,3 +1,3 @@ - + From 4c466b425ce5f02ccaa84027c2ce1973eead39f6 Mon Sep 17 00:00:00 2001 From: Aviv Cohn Date: Thu, 25 Apr 2024 10:24:09 -0400 Subject: [PATCH 4/5] fix: Change console message to include "use eiscApiAdvanced" --- PepperDashEssentials/Bridges/EiscBridge.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PepperDashEssentials/Bridges/EiscBridge.cs b/PepperDashEssentials/Bridges/EiscBridge.cs index 21a220ef..c768924b 100644 --- a/PepperDashEssentials/Bridges/EiscBridge.cs +++ b/PepperDashEssentials/Bridges/EiscBridge.cs @@ -70,7 +70,7 @@ namespace PepperDash.Essentials.Bridges catch (NullReferenceException) { Debug.ConsoleWithLog(0, this, - "Please update the bridge config to use EiscBridgeAdvanced with this device: {0}", device.Key); + "Please update the bridge config to use eiscApiAdvanced with this device: {0}", device.Key); } } Debug.Console(1, this, "Devices Linked."); From 9e588f4da5c26908631c62f7b989d7dd4278385b Mon Sep 17 00:00:00 2001 From: AECohn <34989255+AECohn@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:42:40 -0400 Subject: [PATCH 5/5] fix: ghidra specific verbiage --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 890b7769..d44e7848 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -91,8 +91,8 @@ we receive and the availability of resources to evaluate contributions, we antic project remains dynamic and relevant. This may affect our responsiveness and ability to accept pull requests quickly. This does not mean we are ignoring them. - Not all innovative ideas need to be accepted as pull requests into this GitHub project to be valuable to the community. - There may be times when we recommend that you just share your code for some enhancement to Ghidra from your own - repository. As we identify and recognize extensions that are of general interest to the reverse engineering community, we + There may be times when we recommend that you just share your code for some enhancement to Essentials from your own + repository. As we identify and recognize extensions that are of general interest to Essentials, we may seek to incorporate them with our baseline. ## Legal