mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 20:54:55 +00:00
Updated MdMdxxxCEController and HdMdxxxCEControllerJoinMap
This commit is contained in:
@@ -7,113 +7,62 @@ using PepperDash.Essentials.Core;
|
|||||||
|
|
||||||
namespace PepperDash.Essentials.Core.Bridges
|
namespace PepperDash.Essentials.Core.Bridges
|
||||||
{
|
{
|
||||||
public class HdMdxxxCEControllerJoinMap : JoinMapBase
|
public class HdMdxxxCEControllerJoinMap : JoinMapBaseAdvanced
|
||||||
{
|
{
|
||||||
#region Digitals
|
|
||||||
/// <summary>
|
|
||||||
/// High when the pair is online
|
|
||||||
/// </summary>
|
|
||||||
public uint IsOnline { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("IsOnline")]
|
||||||
/// High when the remote end device is online
|
public JoinDataComplete IsOnline = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Online", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint RemoteEndDetected { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("RemoteEndDetected")]
|
||||||
/// Sets Auto Route On and provides feedback
|
public JoinDataComplete RemoteEndDetected = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Remote End Detected", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint AutoRouteOn { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("AutoRouteOn")]
|
||||||
/// Sets Auto Route Off and provides feedback
|
public JoinDataComplete AutoRouteOn = new JoinDataComplete(new JoinData() { JoinNumber = 3, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Auto Route On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint AutoRouteOff { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("AutoRouteOff")]
|
||||||
/// Sets Priority Routing On and provides feedback
|
public JoinDataComplete AutoRouteOff = new JoinDataComplete(new JoinData() { JoinNumber = 4, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Auto Route Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint PriorityRoutingOn { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("PriorityRoutingOn")]
|
||||||
/// Sets Priority Routing Off and provides feedback
|
public JoinDataComplete PriorityRoutingOn = new JoinDataComplete(new JoinData() { JoinNumber = 5, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Priority Routing On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint PriorityRoutingOff { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("PriorityRoutingOff")]
|
||||||
/// Enables OSD and provides feedback
|
public JoinDataComplete PriorityRoutingOff = new JoinDataComplete(new JoinData() { JoinNumber = 6, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Priority Routing Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint InputOnScreenDisplayEnabled { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("InputOnScreenDisplayEnabled")]
|
||||||
/// Disables OSD and provides feedback
|
public JoinDataComplete InputOnScreenDisplayEnabled = new JoinDataComplete(new JoinData() { JoinNumber = 7, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Input OSD Enabled", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint InputOnScreenDisplayDisabled { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("InputOnScreenDisplayDisabled")]
|
||||||
/// Provides Video Sync Detected feedback for each input
|
public JoinDataComplete InputOnScreenDisplayDisabled = new JoinDataComplete(new JoinData() { JoinNumber = 8, JoinSpan = 1 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Input OSD Disabled", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
public uint SyncDetected { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Analogs
|
[JoinName("SyncDetected")]
|
||||||
/// <summary>
|
public JoinDataComplete SyncDetected = new JoinDataComplete(new JoinData() { JoinNumber = 11, JoinSpan = 5 },
|
||||||
/// Sets the video source for the receiver's HDMI out and provides feedback
|
new JoinMetadata() { Label = "Device Sync Detected", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
|
||||||
/// </summary>
|
|
||||||
public uint VideoSource { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
[JoinName("VideoSource")]
|
||||||
/// Indicates the number of sources supported by the Tx/Rx pair
|
public JoinDataComplete VideoSource = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 5 },
|
||||||
/// </summary>
|
new JoinMetadata() { Label = "Device Video Source Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
public uint SourceCount { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Serials
|
[JoinName("SourceCount")]
|
||||||
/// <summary>
|
public JoinDataComplete SourceCount = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 5 },
|
||||||
/// Indicates the name of each input port
|
new JoinMetadata() { Label = "Device Video Source Count", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Analog });
|
||||||
/// </summary>
|
|
||||||
public uint SourceNames { get; set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public HdMdxxxCEControllerJoinMap()
|
[JoinName("SourceNames")]
|
||||||
|
public JoinDataComplete SourceNames = new JoinDataComplete(new JoinData() { JoinNumber = 11, JoinSpan = 5 },
|
||||||
|
new JoinMetadata() { Label = "Device Video Source Name", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Serial });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public HdMdxxxCEControllerJoinMap(uint joinStart)
|
||||||
|
: base(joinStart, typeof(HdMdxxxCEControllerJoinMap))
|
||||||
{
|
{
|
||||||
//Digital
|
|
||||||
IsOnline = 1;
|
|
||||||
RemoteEndDetected = 2;
|
|
||||||
AutoRouteOn = 3;
|
|
||||||
AutoRouteOff = 4;
|
|
||||||
PriorityRoutingOn = 5;
|
|
||||||
PriorityRoutingOff = 6;
|
|
||||||
InputOnScreenDisplayEnabled = 7;
|
|
||||||
InputOnScreenDisplayDisabled = 8;
|
|
||||||
SyncDetected = 10; // 11-15
|
|
||||||
|
|
||||||
//Analog
|
|
||||||
VideoSource = 1;
|
|
||||||
SourceCount = 2;
|
|
||||||
|
|
||||||
//Serials
|
|
||||||
SourceNames = 10; // 11-15
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OffsetJoinNumbers(uint joinStart)
|
|
||||||
{
|
|
||||||
var joinOffset = joinStart - 1;
|
|
||||||
|
|
||||||
IsOnline = IsOnline + joinOffset;
|
|
||||||
RemoteEndDetected = RemoteEndDetected + joinOffset;
|
|
||||||
AutoRouteOn = AutoRouteOn + joinOffset;
|
|
||||||
AutoRouteOff = AutoRouteOff + joinOffset;
|
|
||||||
PriorityRoutingOn = PriorityRoutingOn + joinOffset;
|
|
||||||
PriorityRoutingOff = PriorityRoutingOff + joinOffset;
|
|
||||||
InputOnScreenDisplayEnabled = InputOnScreenDisplayEnabled + joinOffset;
|
|
||||||
InputOnScreenDisplayDisabled = InputOnScreenDisplayDisabled + joinOffset;
|
|
||||||
SyncDetected = SyncDetected + joinOffset;
|
|
||||||
|
|
||||||
VideoSource = VideoSource + joinOffset;
|
|
||||||
SourceCount = SourceCount + joinOffset;
|
|
||||||
|
|
||||||
SourceNames = SourceNames + joinOffset;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -223,45 +223,44 @@ namespace PepperDash.Essentials.DM
|
|||||||
//#endregion
|
//#endregion
|
||||||
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||||
{
|
{
|
||||||
var joinMap = new HdMdxxxCEControllerJoinMap();
|
var joinMap = new HdMdxxxCEControllerJoinMap(joinStart);
|
||||||
|
|
||||||
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
|
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(joinMapSerialized))
|
if (!string.IsNullOrEmpty(joinMapSerialized))
|
||||||
joinMap = JsonConvert.DeserializeObject<HdMdxxxCEControllerJoinMap>(joinMapSerialized);
|
joinMap = JsonConvert.DeserializeObject<HdMdxxxCEControllerJoinMap>(joinMapSerialized);
|
||||||
|
|
||||||
joinMap.OffsetJoinNumbers(joinStart);
|
|
||||||
|
|
||||||
Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
|
|
||||||
IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]);
|
||||||
RemoteEndDetectedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RemoteEndDetected]);
|
RemoteEndDetectedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RemoteEndDetected.JoinNumber]);
|
||||||
|
|
||||||
trilist.SetSigTrueAction(joinMap.AutoRouteOn, AutoRouteOn);
|
trilist.SetSigTrueAction(joinMap.AutoRouteOn.JoinNumber, AutoRouteOn);
|
||||||
AutoRouteOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.AutoRouteOn]);
|
AutoRouteOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.AutoRouteOn.JoinNumber]);
|
||||||
trilist.SetSigTrueAction(joinMap.AutoRouteOff, AutoRouteOff);
|
trilist.SetSigTrueAction(joinMap.AutoRouteOff.JoinNumber, AutoRouteOff);
|
||||||
AutoRouteOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.AutoRouteOff]);
|
AutoRouteOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.AutoRouteOff.JoinNumber]);
|
||||||
|
|
||||||
trilist.SetSigTrueAction(joinMap.PriorityRoutingOn, PriorityRouteOn);
|
trilist.SetSigTrueAction(joinMap.PriorityRoutingOn.JoinNumber, PriorityRouteOn);
|
||||||
PriorityRoutingOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOn]);
|
PriorityRoutingOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOn.JoinNumber]);
|
||||||
trilist.SetSigTrueAction(joinMap.PriorityRoutingOff, PriorityRouteOff);
|
trilist.SetSigTrueAction(joinMap.PriorityRoutingOff.JoinNumber, PriorityRouteOff);
|
||||||
PriorityRoutingOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOff]);
|
PriorityRoutingOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOff.JoinNumber]);
|
||||||
|
|
||||||
trilist.SetSigTrueAction(joinMap.InputOnScreenDisplayEnabled, OnScreenDisplayEnable);
|
trilist.SetSigTrueAction(joinMap.InputOnScreenDisplayEnabled.JoinNumber, OnScreenDisplayEnable);
|
||||||
InputOnScreenDisplayEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayEnabled]);
|
InputOnScreenDisplayEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayEnabled.JoinNumber]);
|
||||||
trilist.SetSigTrueAction(joinMap.AutoRouteOff, OnScreenDisplayDisable);
|
trilist.SetSigTrueAction(joinMap.AutoRouteOff.JoinNumber, OnScreenDisplayDisable);
|
||||||
InputOnScreenDisplayEnabledFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayDisabled]);
|
InputOnScreenDisplayEnabledFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayDisabled.JoinNumber]);
|
||||||
|
|
||||||
trilist.SetUShortSigAction(joinMap.VideoSource, (i) => ExecuteSwitch(i, null, eRoutingSignalType.Video | eRoutingSignalType.Audio));
|
trilist.SetUShortSigAction(joinMap.VideoSource.JoinNumber, (i) => ExecuteSwitch(i, null, eRoutingSignalType.Video | eRoutingSignalType.Audio));
|
||||||
VideoSourceFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoSource]);
|
VideoSourceFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoSource.JoinNumber]);
|
||||||
|
|
||||||
trilist.UShortInput[joinMap.SourceCount].UShortValue = (ushort)InputPorts.Count;
|
trilist.UShortInput[joinMap.SourceCount.JoinNumber].UShortValue = (ushort)InputPorts.Count;
|
||||||
|
|
||||||
foreach (var input in InputPorts)
|
foreach (var input in InputPorts)
|
||||||
{
|
{
|
||||||
var number = Convert.ToUInt16(input.Selector);
|
var number = Convert.ToUInt16(input.Selector);
|
||||||
SyncDetectedFeedbacks[number].LinkInputSig(trilist.BooleanInput[joinMap.SyncDetected + number]);
|
var numberJoin = (UInt16)(number - 1);
|
||||||
trilist.StringInput[joinMap.SourceNames + number].StringValue = input.Key;
|
SyncDetectedFeedbacks[number].LinkInputSig(trilist.BooleanInput[joinMap.SyncDetected.JoinNumber + numberJoin]);
|
||||||
|
trilist.StringInput[joinMap.SourceNames.JoinNumber + numberJoin].StringValue = input.Key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user