From 9ad151bd7e260fe9f868aa2779b010c8d1247449 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Fri, 8 Mar 2024 11:16:48 -0600 Subject: [PATCH] feat: RKST-131 add IMatrixRouting interfaces --- .../Plugins/PluginLoader.cs | 5 +++++ .../Routing/IMatrixRouting.cs | 10 ++++++++++ .../Routing/IRoutingInputSlot.cs | 15 +++++++++++++++ .../Routing/IRoutingOutputSlot.cs | 14 ++++++++++++++ .../Routing/IRoutingSlot.cs | 16 ++++++++++++++++ .../Routing/RoutingPort.cs | 3 ++- 6 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs create mode 100644 src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs create mode 100644 src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs create mode 100644 src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs diff --git a/src/PepperDash.Essentials.Core/Plugins/PluginLoader.cs b/src/PepperDash.Essentials.Core/Plugins/PluginLoader.cs index edfd65ef..e79075a6 100644 --- a/src/PepperDash.Essentials.Core/Plugins/PluginLoader.cs +++ b/src/PepperDash.Essentials.Core/Plugins/PluginLoader.cs @@ -357,6 +357,7 @@ namespace PepperDash.Essentials try { types = assy.GetTypes(); + Debug.Console(1, $"Got types for assembly {assy.GetName().Name}"); } catch (TypeLoadException e) { @@ -370,6 +371,10 @@ namespace PepperDash.Essentials { try { + Debug.Console(0, $"Checking if type {type.Name} is IPluginDeviceFactory"); + + Debug.Console(0, $"{type.Name} is plugin factory: {typeof(IPluginDeviceFactory).IsAssignableFrom(type) && !type.IsAbstract}"); + if (typeof (IPluginDeviceFactory).IsAssignableFrom(type) && !type.IsAbstract) { var plugin = diff --git a/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs new file mode 100644 index 00000000..5aa2448a --- /dev/null +++ b/src/PepperDash.Essentials.Core/Routing/IMatrixRouting.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace PepperDash.Essentials.Core.Routing +{ + public interface IMatrixRouting + { + Dictionary InputSlots { get; } + Dictionary OutputSlots { get; } + } +} diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs new file mode 100644 index 00000000..4267350f --- /dev/null +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingInputSlot.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PepperDash.Essentials.Core.Routing +{ + public interface IRoutingInputSlot: IRoutingSlot, IOnline + { + string TxDeviceKey { get; } + + bool SyncDetected { get; } + } +} diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs new file mode 100644 index 00000000..bd550713 --- /dev/null +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingOutputSlot.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; + +namespace PepperDash.Essentials.Core.Routing +{ + public interface IRoutingOutputSlot:IRoutingSlot + { + event EventHandler OutputSlotChanged; + + string RxDeviceKey { get; } + + Dictionary CurrentRoutes { get; } + } +} diff --git a/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs b/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs new file mode 100644 index 00000000..7fabfb8b --- /dev/null +++ b/src/PepperDash.Essentials.Core/Routing/IRoutingSlot.cs @@ -0,0 +1,16 @@ +using PepperDash.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PepperDash.Essentials.Core.Routing +{ + public interface IRoutingSlot:IKeyName + { + int SlotNumber { get; } + + eRoutingSignalType SupportedSignalTypes { get; } + } +} diff --git a/src/PepperDash.Essentials.Core/Routing/RoutingPort.cs b/src/PepperDash.Essentials.Core/Routing/RoutingPort.cs index ab64f15e..5d4fff6c 100644 --- a/src/PepperDash.Essentials.Core/Routing/RoutingPort.cs +++ b/src/PepperDash.Essentials.Core/Routing/RoutingPort.cs @@ -36,7 +36,8 @@ namespace PepperDash.Essentials.Core Video = 2, AudioVideo = Audio | Video, UsbOutput = 8, - UsbInput = 16 + UsbInput = 16, + SecondaryAudio = 32 } public enum eRoutingPortConnectionType