diff --git a/src/PepperDash.Essentials.Core/Bridges/BridgeBase.cs b/src/PepperDash.Essentials.Core/Bridges/BridgeBase.cs index c9784647..c1590704 100644 --- a/src/PepperDash.Essentials.Core/Bridges/BridgeBase.cs +++ b/src/PepperDash.Essentials.Core/Bridges/BridgeBase.cs @@ -18,81 +18,6 @@ using Serilog.Events; namespace PepperDash.Essentials.Core.Bridges { - /// - /// Helper methods for bridges - /// - public static class BridgeHelper - { - public static void PrintJoinMap(string command) - { - var targets = command.Split(' '); - - var bridgeKey = targets[0].Trim(); - - var bridge = DeviceManager.GetDeviceForKey(bridgeKey) as EiscApiAdvanced; - - if (bridge == null) - { - Debug.LogMessage(LogEventLevel.Information, "Unable to find advanced bridge with key: '{0}'", bridgeKey); - return; - } - - if (targets.Length > 1) - { - var deviceKey = targets[1].Trim(); - - if (string.IsNullOrEmpty(deviceKey)) return; - bridge.PrintJoinMapForDevice(deviceKey); - } - else - { - bridge.PrintJoinMaps(); - } - } - public static void JoinmapMarkdown(string command) - { - var targets = command.Split(' '); - - var bridgeKey = targets[0].Trim(); - - var bridge = DeviceManager.GetDeviceForKey(bridgeKey) as EiscApiAdvanced; - - if (bridge == null) - { - Debug.LogMessage(LogEventLevel.Information, "Unable to find advanced bridge with key: '{0}'", bridgeKey); - return; - } - - if (targets.Length > 1) - { - var deviceKey = targets[1].Trim(); - - if (string.IsNullOrEmpty(deviceKey)) return; - bridge.MarkdownJoinMapForDevice(deviceKey, bridgeKey); - } - else - { - bridge.MarkdownForBridge(bridgeKey); - - } - } - } - - - /// - /// Base class for all bridge class variants - /// - public class BridgeBase : EssentialsDevice - { - public BridgeApi Api { get; protected set; } - - public BridgeBase(string key) : - base(key) - { - - } - } - /// /// Base class for bridge API variants /// @@ -168,19 +93,15 @@ namespace PepperDash.Essentials.Core.Bridges Debug.LogMessage(LogEventLevel.Debug, this, "Linking Device: '{0}'", device.Key); - if (!typeof(IBridgeAdvanced).IsAssignableFrom(device.GetType().GetType())) + if (device is IBridgeAdvanced bridge) { - Debug.LogMessage(LogEventLevel.Information, this, - "{0} is not compatible with this bridge type. Please use 'eiscapi' instead, or updae the device.", - device.Key); + bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); continue; } - var bridge = device as IBridgeAdvanced; - if (bridge != null) - { - bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); - } + Debug.LogMessage(LogEventLevel.Information, this, + "{0} is not compatible with this bridge type. Please use 'eiscapi' instead, or updae the device.", + device.Key); } } @@ -249,11 +170,11 @@ namespace PepperDash.Essentials.Core.Bridges /// public virtual void PrintJoinMaps() { - Debug.LogMessage(LogEventLevel.Information, this, "Join Maps for EISC IPID: {0}", Eisc.ID.ToString("X")); + CrestronConsole.ConsoleCommandResponse("Join Maps for EISC IPID: {0}\r\n", Eisc.ID.ToString("X")); foreach (var joinMap in JoinMaps) { - Debug.LogMessage(LogEventLevel.Information, "Join map for device '{0}':", joinMap.Key); + CrestronConsole.ConsoleCommandResponse("Join map for device '{0}':", joinMap.Key); joinMap.Value.PrintJoinMapInfo(); } } diff --git a/src/PepperDash.Essentials.Core/Bridges/BridgeHelper.cs b/src/PepperDash.Essentials.Core/Bridges/BridgeHelper.cs new file mode 100644 index 00000000..0254cd0d --- /dev/null +++ b/src/PepperDash.Essentials.Core/Bridges/BridgeHelper.cs @@ -0,0 +1,66 @@ +using PepperDash.Core; +using Serilog.Events; + +//using PepperDash.Essentials.Devices.Common.Cameras; + +namespace PepperDash.Essentials.Core.Bridges +{ + /// + /// Helper methods for bridges + /// + public static class BridgeHelper + { + public static void PrintJoinMap(string command) + { + var targets = command.Split(' '); + + var bridgeKey = targets[0].Trim(); + + if (!(DeviceManager.GetDeviceForKey(bridgeKey) is EiscApiAdvanced bridge)) + { + Debug.LogMessage(LogEventLevel.Information, "Unable to find advanced bridge with key: '{0}'", bridgeKey); + return; + } + + if (targets.Length > 1) + { + var deviceKey = targets[1].Trim(); + + if (string.IsNullOrEmpty(deviceKey)) return; + bridge.PrintJoinMapForDevice(deviceKey); + } + else + { + bridge.PrintJoinMaps(); + } + } + public static void JoinmapMarkdown(string command) + { + var targets = command.Split(' '); + + var bridgeKey = targets[0].Trim(); + + var bridge = DeviceManager.GetDeviceForKey(bridgeKey) as EiscApiAdvanced; + + if (bridge == null) + { + Debug.LogMessage(LogEventLevel.Information, "Unable to find advanced bridge with key: '{0}'", bridgeKey); + return; + } + + if (targets.Length > 1) + { + var deviceKey = targets[1].Trim(); + + if (string.IsNullOrEmpty(deviceKey)) return; + bridge.MarkdownJoinMapForDevice(deviceKey, bridgeKey); + } + else + { + bridge.MarkdownForBridge(bridgeKey); + + } + } + } + +} \ No newline at end of file diff --git a/src/PepperDash.Essentials.Core/Devices/DeviceJsonApi.cs b/src/PepperDash.Essentials.Core/Devices/DeviceJsonApi.cs index 150313e7..4fd97f22 100644 --- a/src/PepperDash.Essentials.Core/Devices/DeviceJsonApi.cs +++ b/src/PepperDash.Essentials.Core/Devices/DeviceJsonApi.cs @@ -206,7 +206,7 @@ namespace PepperDash.Essentials.Core if (dev == null) return "{ \"error\":\"No Device\"}"; - object prop = dev.GetType().GetType().GetProperty(propertyName).GetValue(dev, null); + object prop = dev.GetType().GetProperty(propertyName).GetValue(dev, null); // var prop = t.GetProperty(propertyName); if (prop != null) diff --git a/src/PepperDash.Essentials.Core/JoinMaps/JoinMapBase.cs b/src/PepperDash.Essentials.Core/JoinMaps/JoinMapBase.cs index dda04445..2b78e13a 100644 --- a/src/PepperDash.Essentials.Core/JoinMaps/JoinMapBase.cs +++ b/src/PepperDash.Essentials.Core/JoinMaps/JoinMapBase.cs @@ -108,18 +108,20 @@ namespace PepperDash.Essentials.Core protected void AddJoins(Type type) { + type.GetType(); var fields = - type.GetType() - .GetFields(BindingFlags.Public | BindingFlags.Instance) - .Where(f => f.IsDefined(typeof (JoinNameAttribute), true)); + type.GetFields(BindingFlags.Public | BindingFlags.Instance) + .Where(f => f.IsDefined(typeof (JoinNameAttribute), true)).ToList(); + + Debug.LogMessage(LogEventLevel.Debug, "Got {fields} with JoinNameAttribute", fields.Count); foreach (var field in fields) { var childClass = Convert.ChangeType(this, type, null); - var value = field.GetValue(childClass) as JoinDataComplete; //this here is JoinMapBaseAdvanced, not the child class. JoinMapBaseAdvanced has no fields. + //this here is JoinMapBaseAdvanced, not the child class. JoinMapBaseAdvanced has no fields. - if (value == null) + if (!(field.GetValue(childClass) is JoinDataComplete value)) { Debug.LogMessage(LogEventLevel.Information, "Unable to cast base class to {0}", type.Name); continue; @@ -129,7 +131,7 @@ namespace PepperDash.Essentials.Core var joinName = value.GetNameAttribute(field); - if (String.IsNullOrEmpty(joinName)) continue; + if (string.IsNullOrEmpty(joinName)) continue; Joins.Add(joinName, value); } @@ -155,29 +157,37 @@ namespace PepperDash.Essentials.Core { var sb = new StringBuilder(); - // Get the joins of each type and print them - sb.AppendLine(String.Format("# {0}", GetType().Name)); - sb.AppendLine(); - sb.AppendLine("## Digitals"); - sb.AppendLine(); - // Get the joins of each type and print them - var digitals = - Joins.Where(j => (j.Value.Metadata.JoinType & eJoinType.Digital) == eJoinType.Digital) - .ToDictionary(j => j.Key, j => j.Value); - var digitalSb = AppendJoinList(GetSortedJoins(digitals)); - digitalSb.AppendLine("## Analogs"); - digitalSb.AppendLine(); + var lineEnding = "\r\n"; - var analogs = - Joins.Where(j => (j.Value.Metadata.JoinType & eJoinType.Analog) == eJoinType.Analog) + var digitals = + Joins.Where(j => j.Value.Metadata.JoinType.HasFlag(eJoinType.Digital)) + .ToDictionary(j => j.Key, j => j.Value); + + var analogs = Joins.Where(j => j.Value.Metadata.JoinType.HasFlag(eJoinType.Analog)) .ToDictionary(j => j.Key, j => j.Value); - var analogSb = AppendJoinList(GetSortedJoins(analogs)); - analogSb.AppendLine("## Serials"); - analogSb.AppendLine(); var serials = - Joins.Where(j => (j.Value.Metadata.JoinType & eJoinType.Serial) == eJoinType.Serial) + Joins.Where(j => j.Value.Metadata.JoinType.HasFlag(eJoinType.Serial)) .ToDictionary(j => j.Key, j => j.Value); + + Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Digital join count {digitalCount} Analog join count {analogCount} Serial join count {serialCount}", null, digitals.Count, analogs.Count, serials.Count); + + // Get the joins of each type and print them + sb.Append($"# {GetType().Name}\r\n"); + sb.Append(lineEnding); + sb.Append($"## Digitals{lineEnding}"); + sb.Append(lineEnding); + // Get the joins of each type and print them + + var digitalSb = AppendJoinList(GetSortedJoins(digitals)); + digitalSb.Append($"## Analogs{lineEnding}"); + digitalSb.Append(lineEnding); + + var analogSb = AppendJoinList(GetSortedJoins(analogs)); + analogSb.Append($"## Serials{lineEnding}"); + analogSb.Append(lineEnding); + + var serialSb = AppendJoinList(GetSortedJoins(serials)); sb.EnsureCapacity(sb.Length + digitalSb.Length + analogSb.Length + serialSb.Length); @@ -202,7 +212,7 @@ namespace PepperDash.Essentials.Core private static void WriteJoinmapMarkdown(StringBuilder stringBuilder, string pluginType, string bridgeKey, string deviceKey) { - var fileName = String.Format("{0}{1}{2}__{3}__{4}.md", Global.FilePathPrefix, "joinMaps/", pluginType, bridgeKey, deviceKey); + var fileName = string.Format("{0}{1}{2}__{3}__{4}.md", Global.FilePathPrefix, "joinMaps/", pluginType, bridgeKey, deviceKey); using (var sw = new StreamWriter(fileName)) { @@ -230,7 +240,7 @@ namespace PepperDash.Essentials.Core static StringBuilder AppendJoinList(List> joins) { var sb = new StringBuilder(); - const string stringFormatter = "| {0} | {1} | {2} | {3} | {4} |"; + const string stringFormatter = "| {0} | {1} | {2} | {3} | {4} |\r\n"; const int joinNumberLen = 11; const int joinSpanLen = 9; const int typeLen = 19; @@ -238,25 +248,25 @@ namespace PepperDash.Essentials.Core var descriptionLen = (from @join in joins select @join.Value into j select j.Metadata.Description.Length).Concat(new[] {11}).Max(); //build header - sb.AppendLine(String.Format(stringFormatter, - String.Format("Join Number").PadRight(joinNumberLen, ' '), - String.Format("Join Span").PadRight(joinSpanLen, ' '), - String.Format("Description").PadRight(descriptionLen, ' '), - String.Format("Type").PadRight(typeLen, ' '), - String.Format("Capabilities").PadRight(capabilitiesLen, ' '))); + sb.Append(string.Format(stringFormatter, + string.Format("Join Number").PadRight(joinNumberLen, ' '), + string.Format("Join Span").PadRight(joinSpanLen, ' '), + string.Format("Description").PadRight(descriptionLen, ' '), + string.Format("Type").PadRight(typeLen, ' '), + string.Format("Capabilities").PadRight(capabilitiesLen, ' '))); //build table seperator - sb.AppendLine(String.Format(stringFormatter, - new String('-', joinNumberLen), - new String('-', joinSpanLen), - new String('-', descriptionLen), - new String('-', typeLen), - new String('-', capabilitiesLen))); + sb.Append(string.Format(stringFormatter, + new string('-', joinNumberLen), + new string('-', joinSpanLen), + new string('-', descriptionLen), + new string('-', typeLen), + new string('-', capabilitiesLen))); foreach (var join in joins) { - sb.AppendLine(join.Value.GetMarkdownFormattedData(stringFormatter, descriptionLen)); + sb.Append(join.Value.GetMarkdownFormattedData(stringFormatter, descriptionLen)); } - sb.AppendLine(); + sb.Append("\r\n"); return sb; } @@ -411,10 +421,10 @@ namespace PepperDash.Essentials.Core { //Fixed Width Headers - var joinNumberLen = String.Format("Join Number").Length; - var joinSpanLen = String.Format("Join Span").Length; - var typeLen = String.Format("AnalogDigitalSerial").Length; - var capabilitiesLen = String.Format("ToFromFusion").Length; + var joinNumberLen = string.Format("Join Number").Length; + var joinSpanLen = string.Format("Join Span").Length; + var typeLen = string.Format("AnalogDigitalSerial").Length; + var capabilitiesLen = string.Format("ToFromFusion").Length; //Track which one failed, if it did const string placeholder = "unknown"; @@ -430,13 +440,13 @@ namespace PepperDash.Essentials.Core try { - dataArray["joinNumber"] = String.Format("{0}", JoinNumber.ToString(CultureInfo.InvariantCulture).ReplaceIfNullOrEmpty(placeholder)).PadRight(joinNumberLen, ' '); - dataArray["joinSpan"] = String.Format("{0}", JoinSpan.ToString(CultureInfo.InvariantCulture).ReplaceIfNullOrEmpty(placeholder)).PadRight(joinSpanLen, ' '); - dataArray["description"] = String.Format("{0}", Metadata.Description.ReplaceIfNullOrEmpty(placeholder)).PadRight(descriptionLen, ' '); - dataArray["joinType"] = String.Format("{0}", Metadata.JoinType.ToString().ReplaceIfNullOrEmpty(placeholder)).PadRight(typeLen, ' '); - dataArray["capabilities"] = String.Format("{0}", Metadata.JoinCapabilities.ToString().ReplaceIfNullOrEmpty(placeholder)).PadRight(capabilitiesLen, ' '); + dataArray["joinNumber"] = string.Format("{0}", JoinNumber.ToString(CultureInfo.InvariantCulture).ReplaceIfNullOrEmpty(placeholder)).PadRight(joinNumberLen, ' '); + dataArray["joinSpan"] = string.Format("{0}", JoinSpan.ToString(CultureInfo.InvariantCulture).ReplaceIfNullOrEmpty(placeholder)).PadRight(joinSpanLen, ' '); + dataArray["description"] = string.Format("{0}", Metadata.Description.ReplaceIfNullOrEmpty(placeholder)).PadRight(descriptionLen, ' '); + dataArray["joinType"] = string.Format("{0}", Metadata.JoinType.ToString().ReplaceIfNullOrEmpty(placeholder)).PadRight(typeLen, ' '); + dataArray["capabilities"] = string.Format("{0}", Metadata.JoinCapabilities.ToString().ReplaceIfNullOrEmpty(placeholder)).PadRight(capabilitiesLen, ' '); - return String.Format(stringFormatter, + return string.Format(stringFormatter, dataArray["joinNumber"], dataArray["joinSpan"], dataArray["description"], @@ -454,8 +464,8 @@ namespace PepperDash.Essentials.Core errorKey = item.Key; break; } - Debug.LogMessage(LogEventLevel.Information, "Unable to decode join metadata {1}- {0}", e.Message, !String.IsNullOrEmpty(errorKey) ? (' ' + errorKey) : String.Empty); - return String.Format(stringFormatter, + Debug.LogMessage(LogEventLevel.Information, "Unable to decode join metadata {1}- {0}", e.Message, !string.IsNullOrEmpty(errorKey) ? (' ' + errorKey) : string.Empty); + return string.Format(stringFormatter, dataArray["joinNumber"], dataArray["joinSpan"], dataArray["description"], @@ -520,7 +530,7 @@ namespace PepperDash.Essentials.Core public JoinNameAttribute(string name) { - Debug.LogMessage(LogEventLevel.Verbose, "Setting Attribute Name: {0}", name); + Debug.LogMessage(LogEventLevel.Verbose, "Setting Attribute Name: {0}",null, name); _Name = name; } diff --git a/src/PepperDash.Essentials.Devices.Common/Streaming/AppleTV.cs b/src/PepperDash.Essentials.Devices.Common/Streaming/AppleTV.cs index 7a0b57f1..a00fb5a2 100644 --- a/src/PepperDash.Essentials.Devices.Common/Streaming/AppleTV.cs +++ b/src/PepperDash.Essentials.Devices.Common/Streaming/AppleTV.cs @@ -42,7 +42,7 @@ namespace PepperDash.Essentials.Devices.Common public void PrintExpectedIrCommands() { - var cmds = typeof (AppleTvIrCommands).GetType().GetFields(BindingFlags.Public | BindingFlags.Static); + var cmds = typeof (AppleTvIrCommands).GetFields(BindingFlags.Public | BindingFlags.Static); foreach (var value in cmds.Select(cmd => cmd.GetValue(null)).OfType()) { diff --git a/src/PepperDash.Essentials.Devices.Common/VideoCodec/VideoCodecBase.cs b/src/PepperDash.Essentials.Devices.Common/VideoCodec/VideoCodecBase.cs index 374efedf..0f706b7a 100644 --- a/src/PepperDash.Essentials.Devices.Common/VideoCodec/VideoCodecBase.cs +++ b/src/PepperDash.Essentials.Devices.Common/VideoCodec/VideoCodecBase.cs @@ -1214,7 +1214,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec var entryIndex = counterIndex; Debug.LogMessage(LogEventLevel.Verbose, this, "Entry{2:0000} Name: {0}, Folder ID: {1}, Type: {3}, ParentFolderId: {4}", - entry.Name, entry.FolderId, entryIndex, entry.GetType().GetType().FullName, entry.ParentFolderId); + entry.Name, entry.FolderId, entryIndex, entry.GetType().FullName, entry.ParentFolderId); if (entry is DirectoryFolder) {