diff --git a/PepperDashEssentials/Bridges/IBridge.cs b/PepperDashEssentials/Bridges/IBridge.cs new file mode 100644 index 00000000..a8b0a893 --- /dev/null +++ b/PepperDashEssentials/Bridges/IBridge.cs @@ -0,0 +1,12 @@ +using System; + +namespace PepperDash.Essentials.Bridges +{ + /// + /// Defines a device that uses the legacy JoinMapBase for its join map + /// + [Obsolete("IBridgeAdvanced should be used going forward with JoinMapBaseAdvanced")] + public interface IBridge: Core.Bridges.IBridge + { + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials.csproj index 5b500425..c403d1c3 100644 --- a/PepperDashEssentials/PepperDashEssentials.csproj +++ b/PepperDashEssentials/PepperDashEssentials.csproj @@ -125,6 +125,7 @@ + diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/BridgeBase.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/BridgeBase.cs index c0afb5f9..330cb9fb 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/BridgeBase.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/BridgeBase.cs @@ -109,31 +109,37 @@ namespace PepperDash.Essentials.Core.Bridges if (device == null) continue; Debug.Console(1, this, "Linking Device: '{0}'", device.Key); - - if (device.GetType().GetCType().IsAssignableFrom(typeof (IBridge))) + if (device is IBridge) // Check for this first to allow bridges in plugins to override existing bridges that apply to the same type. { - var bridge = device as IBridge; - - if (bridge != null) bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); - continue; + Debug.Console(2, this, "'{0}' is IBridge", device.Key); + (device as IBridge).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); } - - if (device.GetType().GetCType().IsAssignableFrom(typeof (IBridgeAdvanced))) + else if (device is IBridgeAdvanced) { - var bridge = device as IBridgeAdvanced; - if (bridge != null) bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); + Debug.Console(2, this, "'{0}' is IBridgeAdvanced", device.Key); + (device as IBridgeAdvanced).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); } - - //if (device is IBridge) // Check for this first to allow bridges in plugins to override existing bridges that apply to the same type. + //if (device.GetType().GetCType().IsAssignableFrom(typeof (IBridge))) //{ - // (device as IBridge).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); + // var bridge = device as IBridge; + + // if (bridge == null) + // continue; + // Debug.Console(2, this, "Linking device {0} as IBridge"); + // bridge.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); // continue; //} - //else if (device is IBridgeAdvanced) - //{ - // Debug.Console(2, this, "'{0}' is IBridgeAdvanced", device.Key); - // (device as IBridgeAdvanced).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); - //} + + //if (!device.GetType().GetCType().IsAssignableFrom(typeof (IBridgeAdvanced))) continue; + + //var bridgeAdvanced = device as IBridgeAdvanced; + + //if (bridgeAdvanced == null) continue; + //Debug.Console(2, this, "Linking device {0} as IBridgeAdvanced"); + //bridgeAdvanced.LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); + } + Debug.Console(1, this, "Devices Linked."); + // //else if (device is PepperDash.Essentials.Core.Monitoring.SystemMonitorController) //{ // (device as PepperDash.Essentials.Core.Monitoring.SystemMonitorController).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); @@ -234,9 +240,9 @@ namespace PepperDash.Essentials.Core.Bridges // (device as C2nRthsController).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); // continue; //} - } + //} - Debug.Console(1, this, "Devices Linked."); + }); } diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/IBridge.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/IBridge.cs index a4e09c8e..0a4450d0 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/IBridge.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Bridges/IBridge.cs @@ -3,6 +3,14 @@ using Crestron.SimplSharpPro.DeviceSupport; namespace PepperDash.Essentials.Core.Bridges { + /// + /// Defines a device that uses JoinMapBaseAdvanced for its join map + /// + public interface IBridgeAdvanced + { + void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApi bridge); + } + /// /// Defines a device that uses the legacy JoinMapBase for its join map /// @@ -11,12 +19,4 @@ namespace PepperDash.Essentials.Core.Bridges { void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey); } - - /// - /// Defines a device that uses JoinMapBaseAdvanced for its join map - /// - public interface IBridgeAdvanced - { - void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApi bridge); - } } \ No newline at end of file