diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdMdxxxCEControllerJoinMap.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdMdxxxCEControllerJoinMap.cs
index d3769838..825fc946 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdMdxxxCEControllerJoinMap.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/JoinMaps/HdMdxxxCEControllerJoinMap.cs
@@ -7,113 +7,62 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Core.Bridges
{
- public class HdMdxxxCEControllerJoinMap : JoinMapBase
+ public class HdMdxxxCEControllerJoinMap : JoinMapBaseAdvanced
{
- #region Digitals
- ///
- /// High when the pair is online
- ///
- public uint IsOnline { get; set; }
- ///
- /// High when the remote end device is online
- ///
- public uint RemoteEndDetected { get; set; }
-
- ///
- /// Sets Auto Route On and provides feedback
- ///
- public uint AutoRouteOn { get; set; }
-
- ///
- /// Sets Auto Route Off and provides feedback
- ///
- public uint AutoRouteOff { get; set; }
-
- ///
- /// Sets Priority Routing On and provides feedback
- ///
- public uint PriorityRoutingOn { get; set; }
-
- ///
- /// Sets Priority Routing Off and provides feedback
- ///
- public uint PriorityRoutingOff { get; set; }
-
- ///
- /// Enables OSD and provides feedback
- ///
- public uint InputOnScreenDisplayEnabled { get; set; }
-
- ///
- /// Disables OSD and provides feedback
- ///
- public uint InputOnScreenDisplayDisabled { get; set; }
-
- ///
- /// Provides Video Sync Detected feedback for each input
- ///
- public uint SyncDetected { get; set; }
- #endregion
-
- #region Analogs
- ///
- /// Sets the video source for the receiver's HDMI out and provides feedback
- ///
- public uint VideoSource { get; set; }
-
- ///
- /// Indicates the number of sources supported by the Tx/Rx pair
- ///
- public uint SourceCount { get; set; }
- #endregion
-
- #region Serials
- ///
- /// Indicates the name of each input port
- ///
- public uint SourceNames { get; set; }
- #endregion
-
- public 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;
+ [JoinName("IsOnline")]
+ public JoinDataComplete IsOnline = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Online", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("RemoteEndDetected")]
+ public JoinDataComplete RemoteEndDetected = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Remote End Detected", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("AutoRouteOn")]
+ public JoinDataComplete AutoRouteOn = new JoinDataComplete(new JoinData() { JoinNumber = 3, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Auto Route On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("AutoRouteOff")]
+ public JoinDataComplete AutoRouteOff = new JoinDataComplete(new JoinData() { JoinNumber = 4, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Auto Route Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("PriorityRoutingOn")]
+ public JoinDataComplete PriorityRoutingOn = new JoinDataComplete(new JoinData() { JoinNumber = 5, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Priority Routing On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("PriorityRoutingOff")]
+ public JoinDataComplete PriorityRoutingOff = new JoinDataComplete(new JoinData() { JoinNumber = 6, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Priority Routing Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("InputOnScreenDisplayEnabled")]
+ public JoinDataComplete InputOnScreenDisplayEnabled = new JoinDataComplete(new JoinData() { JoinNumber = 7, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Input OSD Enabled", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("InputOnScreenDisplayDisabled")]
+ public JoinDataComplete InputOnScreenDisplayDisabled = new JoinDataComplete(new JoinData() { JoinNumber = 8, JoinSpan = 1 },
+ new JoinMetadata() { Label = "Device Input OSD Disabled", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("SyncDetected")]
+ public JoinDataComplete SyncDetected = new JoinDataComplete(new JoinData() { JoinNumber = 11, JoinSpan = 5 },
+ new JoinMetadata() { Label = "Device Sync Detected", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
+
+ [JoinName("VideoSource")]
+ public JoinDataComplete VideoSource = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 5 },
+ new JoinMetadata() { Label = "Device Video Source Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
+
+ [JoinName("SourceCount")]
+ public JoinDataComplete SourceCount = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 5 },
+ new JoinMetadata() { Label = "Device Video Source Count", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Analog });
+
+ [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))
+ {
}
}
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials DM/Essentials_DM/DmLite/HdMdxxxCEController.cs b/essentials-framework/Essentials DM/Essentials_DM/DmLite/HdMdxxxCEController.cs
index 59a318cd..94af8bc9 100644
--- a/essentials-framework/Essentials DM/Essentials_DM/DmLite/HdMdxxxCEController.cs
+++ b/essentials-framework/Essentials DM/Essentials_DM/DmLite/HdMdxxxCEController.cs
@@ -222,46 +222,45 @@ namespace PepperDash.Essentials.DM
//public int NumberOfComPorts { get { return 1; } }
//#endregion
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);
if (!string.IsNullOrEmpty(joinMapSerialized))
joinMap = JsonConvert.DeserializeObject(joinMapSerialized);
- joinMap.OffsetJoinNumbers(joinStart);
-
Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
- IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
- RemoteEndDetectedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RemoteEndDetected]);
-
- trilist.SetSigTrueAction(joinMap.AutoRouteOn, AutoRouteOn);
- AutoRouteOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.AutoRouteOn]);
- trilist.SetSigTrueAction(joinMap.AutoRouteOff, AutoRouteOff);
- AutoRouteOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.AutoRouteOff]);
-
- trilist.SetSigTrueAction(joinMap.PriorityRoutingOn, PriorityRouteOn);
- PriorityRoutingOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOn]);
- trilist.SetSigTrueAction(joinMap.PriorityRoutingOff, PriorityRouteOff);
- PriorityRoutingOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOff]);
-
- trilist.SetSigTrueAction(joinMap.InputOnScreenDisplayEnabled, OnScreenDisplayEnable);
- InputOnScreenDisplayEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayEnabled]);
- trilist.SetSigTrueAction(joinMap.AutoRouteOff, OnScreenDisplayDisable);
- InputOnScreenDisplayEnabledFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayDisabled]);
-
- trilist.SetUShortSigAction(joinMap.VideoSource, (i) => ExecuteSwitch(i, null, eRoutingSignalType.Video | eRoutingSignalType.Audio));
- VideoSourceFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoSource]);
-
- trilist.UShortInput[joinMap.SourceCount].UShortValue = (ushort)InputPorts.Count;
+ IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]);
+ RemoteEndDetectedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RemoteEndDetected.JoinNumber]);
+
+ trilist.SetSigTrueAction(joinMap.AutoRouteOn.JoinNumber, AutoRouteOn);
+ AutoRouteOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.AutoRouteOn.JoinNumber]);
+ trilist.SetSigTrueAction(joinMap.AutoRouteOff.JoinNumber, AutoRouteOff);
+ AutoRouteOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.AutoRouteOff.JoinNumber]);
+
+ trilist.SetSigTrueAction(joinMap.PriorityRoutingOn.JoinNumber, PriorityRouteOn);
+ PriorityRoutingOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOn.JoinNumber]);
+ trilist.SetSigTrueAction(joinMap.PriorityRoutingOff.JoinNumber, PriorityRouteOff);
+ PriorityRoutingOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PriorityRoutingOff.JoinNumber]);
+
+ trilist.SetSigTrueAction(joinMap.InputOnScreenDisplayEnabled.JoinNumber, OnScreenDisplayEnable);
+ InputOnScreenDisplayEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayEnabled.JoinNumber]);
+ trilist.SetSigTrueAction(joinMap.AutoRouteOff.JoinNumber, OnScreenDisplayDisable);
+ InputOnScreenDisplayEnabledFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.InputOnScreenDisplayDisabled.JoinNumber]);
+
+ trilist.SetUShortSigAction(joinMap.VideoSource.JoinNumber, (i) => ExecuteSwitch(i, null, eRoutingSignalType.Video | eRoutingSignalType.Audio));
+ VideoSourceFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoSource.JoinNumber]);
+
+ trilist.UShortInput[joinMap.SourceCount.JoinNumber].UShortValue = (ushort)InputPorts.Count;
foreach (var input in InputPorts)
{
- var number = Convert.ToUInt16(input.Selector);
- SyncDetectedFeedbacks[number].LinkInputSig(trilist.BooleanInput[joinMap.SyncDetected + number]);
- trilist.StringInput[joinMap.SourceNames + number].StringValue = input.Key;
+ var number = Convert.ToUInt16(input.Selector);
+ var numberJoin = (UInt16)(number - 1);
+ SyncDetectedFeedbacks[number].LinkInputSig(trilist.BooleanInput[joinMap.SyncDetected.JoinNumber + numberJoin]);
+ trilist.StringInput[joinMap.SourceNames.JoinNumber + numberJoin].StringValue = input.Key;
}
}
}