Merge pull request #214 from PepperDash/feature/Improve-JoinMetadata

Updated JoinMetadata to add Description property
This commit is contained in:
Andrew Welker
2020-05-22 15:43:10 -06:00
committed by GitHub
2 changed files with 55 additions and 31 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq;
using System.Runtime.InteropServices;
using Crestron.SimplSharp.Reflection;
using PepperDash.Core;
@@ -345,8 +346,10 @@ namespace PepperDash.Essentials.Core
/// <summary>
/// Metadata describing the join
/// </summary>
public class JoinMetadata
{
public class JoinMetadata
{
private string _description;
/// <summary>
/// Join number (based on join offset value)
/// </summary>
@@ -361,10 +364,17 @@ namespace PepperDash.Essentials.Core
public uint JoinSpan { get; set; }
/// <summary>
/// A label for the join to better describe it's usage
/// A label for the join to better describe its usage
/// </summary>
[JsonProperty("label")]
public string Label { get; set; }
[Obsolete("Use Description instead")]
[JsonProperty("label")]
public string Label { get { return _description; } set { _description = value; } }
/// <summary>
/// A description for the join to better describe its usage
/// </summary>
[JsonProperty("description")]
public string Description { get { return _description; } set { _description = value; } }
/// <summary>
/// Signal type(s)
/// </summary>
@@ -454,11 +464,13 @@ namespace PepperDash.Essentials.Core
name = attribute.Name;
Debug.Console(2, "JoinName Attribute value: {0}", name);
return name;
}
}
}
}
[AttributeUsage(AttributeTargets.All)]
public class JoinNameAttribute : Attribute
public class JoinNameAttribute : CAttribute
{
private string _Name;
@@ -472,5 +484,5 @@ namespace PepperDash.Essentials.Core
{
get { return _Name; }
}
}
}
}

View File

@@ -149,7 +149,7 @@ namespace PepperDash.Essentials.Core
}
#endregion
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, PepperDash.Essentials.Core.Bridges.EiscApiAdvanced bridge)
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
{
var joinMap = new Hrxxx0WirelessRemoteControllerJoinMap(joinStart);
@@ -161,33 +161,39 @@ namespace PepperDash.Essentials.Core
bridge.AddJoinMap(Key, joinMap);
//List<string> ExcludedKeys = new List<string>();
foreach (Feedback feedback in Feedbacks)
foreach (var feedback in Feedbacks)
{
Feedback myFeedback = feedback;
var myFeedback = feedback;
var join = joinMap.Joins.FirstOrDefault(x => x.Value.Metadata.Label.Equals(myFeedback.Key, StringComparison.InvariantCultureIgnoreCase)).Value;
var joinData =
joinMap.Joins.FirstOrDefault(
x =>
x.Key.Equals(myFeedback.Key, StringComparison.InvariantCultureIgnoreCase));
if (join == null) continue;
if (string.IsNullOrEmpty((joinData.Key))) continue;
var name = joinData.Key;
var join = joinData.Value;
if (join.Metadata.JoinType == eJoinType.Digital)
{
Debug.Console(0, this, "Linking Bool Feedback '{0}' to join {1}", join.Metadata.Label, join.JoinNumber);
BoolFeedback someFeedback = myFeedback as BoolFeedback;
Debug.Console(0, this, "Linking Bool Feedback '{0}' to join {1}", name, join.JoinNumber);
var someFeedback = myFeedback as BoolFeedback;
if(someFeedback == null) continue;
someFeedback.LinkInputSig(trilist.BooleanInput[join.JoinNumber]);
}
if (join.Metadata.JoinType == eJoinType.Analog)
{
Debug.Console(0, this, "Linking Analog Feedback '{0}' to join {1}", join.Metadata.Label, join.JoinNumber);
IntFeedback someFeedback = myFeedback as IntFeedback;
Debug.Console(0, this, "Linking Analog Feedback '{0}' to join {1}", name, join.JoinNumber);
var someFeedback = myFeedback as IntFeedback;
if (someFeedback == null) continue;
someFeedback.LinkInputSig(trilist.UShortInput[join.JoinNumber]);
}
if (join.Metadata.JoinType == eJoinType.Serial)
{
Debug.Console(0, this, "Linking Serial Feedback '{0}' to join {1}", join.Metadata.Label, join.JoinNumber);
StringFeedback someFeedback = myFeedback as StringFeedback;
Debug.Console(0, this, "Linking Serial Feedback '{0}' to join {1}", name, join.JoinNumber);
var someFeedback = myFeedback as StringFeedback;
if (someFeedback == null) continue;
someFeedback.LinkInputSig(trilist.StringInput[join.JoinNumber]);
}
}
@@ -201,13 +207,19 @@ namespace PepperDash.Essentials.Core
for (uint i = 1; i <= _remote.Button.Count; i++)
{
Debug.Console(2, this, "Attempting to link join index {0}", i);
var join = joinMap.Joins.FirstOrDefault(o => o.Value.Metadata.Label.Equals(_remote.Button[i].Name.ToString(), StringComparison.InvariantCultureIgnoreCase)).Value;
if (join == null)
{
Debug.Console(2, this, "Join '{0}' is null", i);
continue;
}
Debug.Console(2, this, "Setting User Object for '{0}'", join.Metadata.Label);
var index = i;
var joinData =
joinMap.Joins.FirstOrDefault(
o =>
o.Key.Equals(_remote.Button[index].Name.ToString(),
StringComparison.InvariantCultureIgnoreCase));
if (string.IsNullOrEmpty((joinData.Key))) continue;
var join = joinData.Value;
var name = joinData.Key;
Debug.Console(2, this, "Setting User Object for '{0}'", name);
if (join.Metadata.JoinType == eJoinType.Digital)
{
_remote.Button[i].SetButtonAction((b) => trilist.BooleanInput[join.JoinNumber].BoolValue = b);