Compare commits

..

2 Commits

Author SHA1 Message Date
Trevor Payne
eb5251cfa4 Merge tag '1.13.3-hotfix-2156' into feature/DmHdcpEnhancements 2023-04-17 09:22:07 -05:00
Trevor Payne
55ad92e2f6 feature: enhance 4K DM Endpoint HDCP functionality
feature: add bridge join to report number of HDCP inputs

feature: Resolve #1088

feature: Resolve #1089
2023-04-14 11:41:32 -05:00
16 changed files with 917 additions and 898 deletions

View File

@@ -72,7 +72,8 @@ namespace PepperDash.Essentials.Core.Bridges
/// </summary> /// </summary>
/// <param name="joinStart">Join this join map will start at</param> /// <param name="joinStart">Join this join map will start at</param>
/// <param name="type">Type of the child join map</param> /// <param name="type">Type of the child join map</param>
protected DmRmcControllerJoinMap(uint joinStart, Type type) : base(joinStart, type) protected DmRmcControllerJoinMap(uint joinStart, Type type)
: base(joinStart, type)
{ {
} }
} }

View File

@@ -88,7 +88,8 @@ namespace PepperDash.Essentials.Core.Bridges
/// </summary> /// </summary>
/// <param name="joinStart">Join this join map will start at</param> /// <param name="joinStart">Join this join map will start at</param>
/// <param name="type">Type of the child join map</param> /// <param name="type">Type of the child join map</param>
protected DmTxControllerJoinMap(uint joinStart, Type type) : base(joinStart, type) protected DmTxControllerJoinMap(uint joinStart, Type type)
: base(joinStart, type)
{ {
} }
} }

View File

@@ -20,6 +20,7 @@ namespace PepperDash.Essentials.Core
//******************************************************************************************* //*******************************************************************************************
// Interfaces // Interfaces
/// <summary> /// <summary>
/// For rooms with a single presentation source, change event /// For rooms with a single presentation source, change event
/// </summary> /// </summary>

View File

@@ -692,14 +692,14 @@ namespace PepperDash.Essentials.DM
var cecPort = hdmiInputCard.HdmiInputPort; var cecPort = hdmiInputCard.HdmiInputPort;
AddInputPortWithDebug(number, string.Format("HdmiIn1{0}", number), eRoutingSignalType.Audio | eRoutingSignalType.Video, eRoutingPortConnectionType.Hdmi, cecPort); AddInputPortWithDebug(number, string.Format("HdmiIn{0}", number), eRoutingSignalType.Audio | eRoutingSignalType.Video, eRoutingPortConnectionType.Hdmi, cecPort);
} }
else if (inputCard is Card.Dmps3HdmiInput) else if (inputCard is Card.Dmps3HdmiInput)
{ {
var hdmiInputCard = inputCard as Card.Dmps3HdmiInput; var hdmiInputCard = inputCard as Card.Dmps3HdmiInput;
var cecPort = hdmiInputCard.HdmiInputPort; var cecPort = hdmiInputCard.HdmiInputPort;
AddInputPortWithDebug(number, string.Format("HdmiIn1{0}", number), eRoutingSignalType.Audio | eRoutingSignalType.Video, eRoutingPortConnectionType.Hdmi, cecPort); AddInputPortWithDebug(number, string.Format("HdmiIn{0}", number), eRoutingSignalType.Audio | eRoutingSignalType.Video, eRoutingPortConnectionType.Hdmi, cecPort);
AddInputPortWithDebug(number, string.Format("HudioIn{1}", number), eRoutingSignalType.Audio, eRoutingPortConnectionType.LineAudio); AddInputPortWithDebug(number, string.Format("HudioIn{1}", number), eRoutingSignalType.Audio, eRoutingPortConnectionType.LineAudio);
} }
else if (inputCard is Card.Dmps3HdmiVgaInput) else if (inputCard is Card.Dmps3HdmiVgaInput)

View File

@@ -28,7 +28,7 @@ namespace PepperDash.Essentials.DM
public const string DmOut2 = "DmOut2"; public const string DmOut2 = "DmOut2";
public const string FromTx = "FromTx"; public const string FromTx = "FromTx";
public const string Hdmi = "Hdmi"; public const string Hdmi = "Hdmi";
public const string HdmiIn = "HdmiIn1"; public const string HdmiIn = "HdmiIn";
public const string HdmiIn1 = "HdmiIn1"; public const string HdmiIn1 = "HdmiIn1";
public const string HdmiIn2 = "HdmiIn2"; public const string HdmiIn2 = "HdmiIn2";
public const string HdmiOut1 = "HdmiOut1"; public const string HdmiOut1 = "HdmiOut1";

View File

@@ -25,8 +25,6 @@ namespace PepperDash_Essentials_DM
} }
public interface IHasHdmiInHdcpSet public interface IHasHdmiInHdcpSet
{ {
void SetHdmiInHdcpState(eHdcpCapabilityType hdcpState); void SetHdmiInHdcpState(eHdcpCapabilityType hdcpState);
@@ -43,8 +41,6 @@ namespace PepperDash_Essentials_DM
} }
public interface IHasHdmiIn1HdcpSet public interface IHasHdmiIn1HdcpSet
{ {
void SetHdmiIn1HdcpState(eHdcpCapabilityType hdcpState); void SetHdmiIn1HdcpState(eHdcpCapabilityType hdcpState);
@@ -61,8 +57,6 @@ namespace PepperDash_Essentials_DM
} }
public interface IHasHdmiIn2HdcpSet public interface IHasHdmiIn2HdcpSet
{ {
void SetHdmiIn2HdcpState(eHdcpCapabilityType hdcpState); void SetHdmiIn2HdcpState(eHdcpCapabilityType hdcpState);
@@ -80,10 +74,6 @@ namespace PepperDash_Essentials_DM
public interface IHasDisplayPortInHdcpGet public interface IHasDisplayPortInHdcpGet
{ {
IntFeedback DisplayPortInHdcpStateFeedback { get; } IntFeedback DisplayPortInHdcpStateFeedback { get; }
@@ -98,8 +88,4 @@ namespace PepperDash_Essentials_DM
{ {
eHdcpCapabilityType DisplayPortInHdcpCapability { get; } eHdcpCapabilityType DisplayPortInHdcpCapability { get; }
} }
} }

View File

@@ -6,6 +6,7 @@ using Crestron.SimplSharpPro.DM.Endpoints.Receivers;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Bridges; using PepperDash.Essentials.Core.Bridges;
using PepperDash_Essentials_DM;
namespace PepperDash.Essentials.DM namespace PepperDash.Essentials.DM
{ {
@@ -15,7 +16,7 @@ namespace PepperDash.Essentials.DM
/// </summary> /// </summary>
[Description("Wrapper Class for DM-RMC-4K-SCALER-C-DSP")] [Description("Wrapper Class for DM-RMC-4K-SCALER-C-DSP")]
public class DmRmc4kScalerCDspController : DmRmcControllerBase, IRoutingInputsOutputs, IBasicVolumeWithFeedback, public class DmRmc4kScalerCDspController : DmRmcControllerBase, IRoutingInputsOutputs, IBasicVolumeWithFeedback,
IIROutputPorts, IComPorts, ICec, IRelayPorts IIROutputPorts, IComPorts, ICec, IRelayPorts, IHasDmInHdcp
{ {
private readonly DmRmc4kScalerCDsp _rmc; private readonly DmRmc4kScalerCDsp _rmc;
@@ -27,6 +28,11 @@ namespace PepperDash.Essentials.DM
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; } public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
public EndpointDmInputStreamWithCec DmInput { get; private set; }
public IntFeedback DmInHdcpStateFeedback { get; private set; }
/// <summary> /// <summary>
/// Make a Crestron RMC and put it in here /// Make a Crestron RMC and put it in here
/// </summary> /// </summary>
@@ -53,6 +59,12 @@ namespace PepperDash.Essentials.DM
VideoOutputResolutionFeedback = new StringFeedback(() => _rmc.HdmiOutput.GetVideoResolutionString()); VideoOutputResolutionFeedback = new StringFeedback(() => _rmc.HdmiOutput.GetVideoResolutionString());
DmInHdcpStateFeedback = new IntFeedback("DmInHdcpCapability",
() => (int) _rmc.DmInput.HdcpCapabilityFeedback);
AddToFeedbackList(DmInHdcpStateFeedback);
InputPorts = new RoutingPortCollection<RoutingInputPort> {DmIn}; InputPorts = new RoutingPortCollection<RoutingInputPort> {DmIn};
OutputPorts = new RoutingPortCollection<RoutingOutputPort> {HdmiOut, BalancedAudioOut}; OutputPorts = new RoutingPortCollection<RoutingOutputPort> {HdmiOut, BalancedAudioOut};
@@ -191,5 +203,17 @@ namespace PepperDash.Essentials.DM
} }
#endregion #endregion
public eHdcpCapabilityType DmInHdcpCapability
{
get { return eHdcpCapabilityType.Hdcp2_2Support; }
}
public void SetDmInHdcpState(eHdcpCapabilityType hdcpState)
{
if (_rmc == null) return;
_rmc.DmInput.HdcpCapability = hdcpState;
}
} }
} }

View File

@@ -124,9 +124,14 @@ namespace PepperDash.Essentials.DM
HdmiIn2HdcpCapabilityFeedback = new IntFeedback("HdmiIn2HdcpCapability", () => (int)tx.HdmiInputs[2].HdcpCapabilityFeedback); HdmiIn2HdcpCapabilityFeedback = new IntFeedback("HdmiIn2HdcpCapability", () => (int)tx.HdmiInputs[2].HdcpCapabilityFeedback);
HdcpSupportCapability = eHdcpCapabilityType.Hdcp2_2Support; HdcpStateFeedback =
new IntFeedback(
() =>
tx.HdmiInputs[1].HdcpCapabilityFeedback > tx.HdmiInputs[2].HdcpCapabilityFeedback
? (int)tx.HdmiInputs[1].HdcpCapabilityFeedback
: (int)tx.HdmiInputs[2].HdcpCapabilityFeedback);
HdcpStateFeedback = new IntFeedback(() => (int)HdcpSupportCapability); HdcpSupportCapability = eHdcpCapabilityType.Hdcp2_2Support;
Hdmi1VideoSyncFeedback = new BoolFeedback(() => (bool)tx.HdmiInputs[1].SyncDetectedFeedback.BoolValue); Hdmi1VideoSyncFeedback = new BoolFeedback(() => (bool)tx.HdmiInputs[1].SyncDetectedFeedback.BoolValue);

View File

@@ -281,7 +281,8 @@ namespace PepperDash.Essentials.DM
}; };
} }
protected DmTxControllerBase(string key, string name, DmHDBasedTEndPoint hardware) : base(key, name, hardware) protected DmTxControllerBase(string key, string name, DmHDBasedTEndPoint hardware)
: base(key, name, hardware)
{ {
} }

View File

@@ -105,9 +105,9 @@
<Compile Include="Chassis\HdMdNxM4kEBridgeableController.cs" /> <Compile Include="Chassis\HdMdNxM4kEBridgeableController.cs" />
<Compile Include="Chassis\HdMdNxM4kEController.cs" /> <Compile Include="Chassis\HdMdNxM4kEController.cs" />
<Compile Include="Config\InputPropertiesConfig.cs" /> <Compile Include="Config\InputPropertiesConfig.cs" />
<Compile Include="Endpoints\EndpointInterfaces.cs" />
<Compile Include="Endpoints\DGEs\DgeJoinMap.cs" /> <Compile Include="Endpoints\DGEs\DgeJoinMap.cs" />
<Compile Include="Endpoints\DGEs\DmDge200CController.cs" /> <Compile Include="Endpoints\DGEs\DmDge200CController.cs" />
<Compile Include="Endpoints\EndpointInterfaces.cs" />
<Compile Include="Endpoints\Receivers\DmRmc4kZ100CController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc4kZ100CController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc4kZScalerCController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc4kZScalerCController.cs" />
<Compile Include="Endpoints\Transmitters\DmTx4kz202CController.cs" /> <Compile Include="Endpoints\Transmitters\DmTx4kz202CController.cs" />