update bridges and interfaces

This commit is contained in:
Andrew Welker
2020-06-19 13:51:43 -06:00
parent 514fe466fd
commit d31d4eef30
5 changed files with 26 additions and 31 deletions

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Crestron.SimplSharp.Reflection;
using Crestron.SimplSharpPro; using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.EthernetCommunication; using Crestron.SimplSharpPro.EthernetCommunication;
using PepperDash.Core; using PepperDash.Core;
@@ -39,19 +40,31 @@ namespace PepperDash.Essentials.Bridges
if (device == null) continue; if (device == null) continue;
Debug.Console(1, this, "Linking Device: '{0}'", device.Key); Debug.Console(1, this, "Linking Device: '{0}'", device.Key);
if (device is IBridge) // Check for this first to allow bridges in plugins to override existing bridges that apply to the same type. if (typeof(IBridge).IsAssignableFrom(device.GetType().GetCType())) // Check for this first to allow bridges in plugins to override existing bridges that apply to the same type.
{ {
Debug.Console(2, this, "'{0}' is IBridge", device.Key); Debug.Console(2, this, "'{0}' is IBridge", device.Key);
var dev = device as IBridge; var dev = device as IBridge;
if (dev == null)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Cast to IBridge failed for {0}");
continue;
}
dev.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); dev.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey);
} }
if (!(device is IBridgeAdvanced)) continue; if (!typeof(IBridgeAdvanced).IsAssignableFrom(device.GetType().GetCType())) continue;
Debug.Console(2, this, "'{0}' is IBridgeAdvanced", device.Key); Debug.Console(2, this, "'{0}' is IBridgeAdvanced", device.Key);
var advDev = device as IBridgeAdvanced; var advDev = device as IBridgeAdvanced;
if (advDev == null)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Cast to IBridgeAdvanced failed for {0}");
continue;
}
try try
{ {
advDev.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, null); advDev.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, null);
@@ -61,7 +74,6 @@ namespace PepperDash.Essentials.Bridges
Debug.ConsoleWithLog(0, this, Debug.ConsoleWithLog(0, this,
"Please update the bridge config to use EiscBridgeAdvanced with this device: {0}", device.Key); "Please update the bridge config to use EiscBridgeAdvanced with this device: {0}", device.Key);
} }
} }
Debug.Console(1, this, "Devices Linked."); Debug.Console(1, this, "Devices Linked.");

View File

@@ -1,4 +1,5 @@
using System; using System;
using Crestron.SimplSharpPro.DeviceSupport;
namespace PepperDash.Essentials.Bridges namespace PepperDash.Essentials.Bridges
{ {
@@ -6,7 +7,8 @@ namespace PepperDash.Essentials.Bridges
/// Defines a device that uses the legacy JoinMapBase for its join map /// Defines a device that uses the legacy JoinMapBase for its join map
/// </summary> /// </summary>
[Obsolete("IBridgeAdvanced should be used going forward with JoinMapBaseAdvanced")] [Obsolete("IBridgeAdvanced should be used going forward with JoinMapBaseAdvanced")]
public interface IBridge:Core.Bridges.IBridge public interface IBridge
{ {
void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey);
} }
} }

View File

@@ -7,7 +7,6 @@ using Crestron.SimplSharpPro.EthernetCommunication;
using Newtonsoft.Json; using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.Config;
//using PepperDash.Essentials.Devices.Common.Cameras; //using PepperDash.Essentials.Devices.Common.Cameras;
@@ -111,28 +110,17 @@ namespace PepperDash.Essentials.Core.Bridges
Debug.Console(1, this, "Linking Device: '{0}'", device.Key); Debug.Console(1, this, "Linking Device: '{0}'", device.Key);
if (typeof (IBridge).IsAssignableFrom(device.GetType().GetCType())) if (!typeof (IBridgeAdvanced).IsAssignableFrom(device.GetType().GetCType()))
{ {
var basicBridge = device as IBridge; Debug.Console(0, this, Debug.ErrorLogLevel.Notice,
if (basicBridge != null) "{0} is not compatible with this bridge type. Please use 'eiscapi' instead, or updae the device.",
{ device.Key);
Debug.Console(0, this, Debug.ErrorLogLevel.Notice,
"Linking EiscApiAdvanced {0} to device {1} using obsolete join map. Please update the device's join map.",
Key, device.Key);
basicBridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey);
}
continue; continue;
} }
if (!typeof (IBridgeAdvanced).IsAssignableFrom(device.GetType().GetCType()))
{
continue;
}
var bridge = device as IBridgeAdvanced; var bridge = device as IBridgeAdvanced;
if (bridge != null) bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); if (bridge != null) bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this);
} }
}); });
} }
@@ -303,7 +291,7 @@ namespace PepperDash.Essentials.Core.Bridges
{ {
public EiscApiAdvancedFactory() public EiscApiAdvancedFactory()
{ {
TypeNames = new List<string>() { "eiscapiadv", "eiscapiadvanced" }; TypeNames = new List<string> { "eiscapiadv", "eiscapiadvanced" };
} }
public override EssentialsDevice BuildDevice(DeviceConfig dc) public override EssentialsDevice BuildDevice(DeviceConfig dc)

View File

@@ -1,19 +1,12 @@
using System; using Crestron.SimplSharpPro.DeviceSupport;
using Crestron.SimplSharpPro.DeviceSupport;
using PepperDash.Core;
namespace PepperDash.Essentials.Core.Bridges namespace PepperDash.Essentials.Core.Bridges
{ {
/// <summary> /// <summary>
/// Defines a device that uses JoinMapBaseAdvanced for its join map /// Defines a device that uses JoinMapBaseAdvanced for its join map
/// </summary> /// </summary>
public interface IBridgeAdvanced:IKeyed public interface IBridgeAdvanced
{ {
void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge); void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge);
} }
public interface IBridge:IKeyed
{
void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey);
}
} }