docs: update XML comments for Essentials Core

This commit is contained in:
Andrew Welker 2026-02-09 08:58:52 -06:00
parent 0764685c51
commit f88bb13367
260 changed files with 7018 additions and 1318 deletions

View file

@ -326,6 +326,8 @@ namespace PepperDash.Essentials.Core
/// <param name="signalType">This recursive function should not be called with AudioVideo</param>
/// <param name="cycle">Just an informational counter</param>
/// <param name="routeTable">The RouteDescriptor being populated as the route is discovered</param>
/// <param name="outputPortToUse">The RoutingOutputPort to use for the route</param>
/// <param name="sourcePort">The specific source output port to use (optional)</param>
/// <returns>true if source is hit</returns>
private static bool GetRouteToSource(this IRoutingInputs destination, IRoutingOutputs source,
RoutingOutputPort outputPortToUse, List<IRoutingInputsOutputs> alreadyCheckedDevices,

View file

@ -12,8 +12,14 @@ namespace PepperDash.Essentials.Core.Routing
/// </summary>
public interface IVideoSync : IKeyed
{
/// <summary>
/// Gets whether or not video sync is detected
/// </summary>
bool VideoSyncDetected { get; }
/// <summary>
/// Event raised when video sync changes
/// </summary>
event EventHandler VideoSyncChanged;
}
}

View file

@ -7,9 +7,22 @@ namespace PepperDash.Essentials.Core.Routing
/// </summary>
public interface IMatrixRouting
{
/// <summary>
/// Gets the input slots
/// </summary>
Dictionary<string, IRoutingInputSlot> InputSlots { get; }
/// <summary>
/// Gets the output slots
/// </summary>
Dictionary<string, IRoutingOutputSlot> OutputSlots { get; }
/// <summary>
/// Routes the specified input slot to the specified output slot for the specified signal type
/// </summary>
/// <param name="inputSlotKey">key of the input slot</param>
/// <param name="outputSlotKey">key of the output slot</param>
/// <param name="type">signal type</param>
void Route(string inputSlotKey, string outputSlotKey, eRoutingSignalType type);
}
}

View file

@ -5,6 +5,9 @@
/// </summary>
public interface IRmcRouting : IRoutingNumeric
{
/// <summary>
/// Feedback for the current Audio/Video source as a number
/// </summary>
IntFeedback AudioVideoSourceNumericFeedback { get; }
}
}

View file

@ -11,6 +11,12 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRouting : IRoutingInputsOutputs
{
/// <summary>
/// Executes a switch on the device
/// </summary>
/// <param name="inputSelector">input selector</param>
/// <param name="outputSelector">output selector</param>
/// <param name="signalType">type of signal</param>
void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType signalType);
}

View file

@ -10,6 +10,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoutingFeedback : IKeyName
{
/// <summary>
/// Event raised when a numeric switch changes
/// </summary>
event EventHandler<RoutingNumericEventArgs> NumericSwitchChange;
//void OnSwitchChange(RoutingNumericEventArgs e);
}

View file

@ -17,6 +17,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoutingHasVideoInputSyncFeedbacks
{
/// <summary>
/// Video Input Sync Feedbacks
/// </summary>
FeedbackCollection<BoolFeedback> VideoInputSyncFeedbacks { get; }
}
}

View file

@ -5,6 +5,9 @@
/// </summary>
public interface IRoutingInputSlot: IRoutingSlot, IOnline, IVideoSync
{
/// <summary>
/// Gets the Tx device key
/// </summary>
string TxDeviceKey { get; }
}
}

View file

@ -8,6 +8,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoutingInputs : IKeyed
{
/// <summary>
/// Collection of Input Ports
/// </summary>
RoutingPortCollection<RoutingInputPort> InputPorts { get; }
}

View file

@ -5,6 +5,12 @@
/// </summary>
public interface IRoutingNumeric : IRouting
{
/// <summary>
/// Executes a numeric switch on the device
/// </summary>
/// <param name="input">input selector</param>
/// <param name="output">output selector</param>
/// <param name="type">type of signal</param>
void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type);
}
}

View file

@ -8,10 +8,19 @@ namespace PepperDash.Essentials.Core.Routing
/// </summary>
public interface IRoutingOutputSlot : IRoutingSlot
{
/// <summary>
/// Event raised when output slot changes
/// </summary>
event EventHandler OutputSlotChanged;
/// <summary>
/// Gets the Rx device key
/// </summary>
string RxDeviceKey { get; }
/// <summary>
/// Gets the current routes
/// </summary>
Dictionary<eRoutingSignalType, IRoutingInputSlot> CurrentRoutes { get; }
}
}

View file

@ -9,6 +9,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoutingOutputs : IKeyed
{
/// <summary>
/// Collection of Output Ports
/// </summary>
RoutingPortCollection<RoutingOutputPort> OutputPorts { get; }
}

View file

@ -12,6 +12,10 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoutingSinkWithSwitching : IRoutingSink
{
/// <summary>
/// Executes a switch on the device
/// </summary>
/// <param name="inputSelector">input selector</param>
void ExecuteSwitch(object inputSelector);
}
@ -20,6 +24,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public interface IRoutingSinkWithSwitchingWithInputPort:IRoutingSinkWithSwitching, IRoutingSinkWithInputPort
{
/// <summary>
/// Event raised when the input changes
/// </summary>
event InputChangedEventHandler InputChanged;
}

View file

@ -12,8 +12,14 @@ namespace PepperDash.Essentials.Core.Routing
/// </summary>
public interface IRoutingSlot:IKeyName
{
/// <summary>
/// Gets the slot number
/// </summary>
int SlotNumber { get; }
/// <summary>
/// Gets the supported signal types
/// </summary>
eRoutingSignalType SupportedSignalTypes { get; }
}
}

View file

@ -11,6 +11,9 @@ namespace PepperDash.Essentials.Core
/// </summary>
public class RouteDescriptorCollection
{
/// <summary>
/// DefaultCollection static property
/// </summary>
public static RouteDescriptorCollection DefaultCollection
{
get
@ -57,6 +60,12 @@ namespace PepperDash.Essentials.Core
return RouteDescriptors.FirstOrDefault(rd => rd.Destination == destination);
}
/// <summary>
/// Gets the RouteDescriptor for a destination and input port key. Returns null if no matching RouteDescriptor exists.
/// </summary>
/// <param name="destination"></param>
/// <param name="inputPortKey"></param>
/// <returns></returns>
public RouteDescriptor GetRouteDescriptorForDestinationAndInputPort(IRoutingInputs destination, string inputPortKey)
{
Debug.LogMessage(LogEventLevel.Information, "Getting route descriptor for '{destination}':'{inputPortKey}'", destination?.Key ?? null, string.IsNullOrEmpty(inputPortKey) ? "auto" : inputPortKey);

View file

@ -21,6 +21,9 @@ namespace PepperDash.Essentials.Core
/// <param name="selector">An object used to refer to this port in the IRouting device's ExecuteSwitch method.
/// May be string, number, whatever</param>
/// <param name="parent">The IRoutingInputs object this lives on</param>
/// <param name="key">key of the port</param>
/// <param name="type">type of the routing signal</param>
/// <param name="connType">connection type of the port</param>
public RoutingInputPort(string key, eRoutingSignalType type, eRoutingPortConnectionType connType,
object selector, IRoutingInputs parent)
: this (key, type, connType, selector, parent, false)
@ -32,6 +35,12 @@ namespace PepperDash.Essentials.Core
/// the ports that link a DM card to a DM matrix bus
/// </summary>
/// <param name="isInternal">true for internal ports</param>
/// <param name="key">key of the port</param>
/// <param name="type">type of the routing signal</param>
/// <param name="connType">connection type of the port</param>
/// <param name="selector">An object used to refer to this port in the IRouting device's ExecuteSwitch method.
/// May be string, number, whatever</param>
/// <param name="parent">The IRoutingInputs object this lives on</param>
public RoutingInputPort(string key, eRoutingSignalType type, eRoutingPortConnectionType connType,
object selector, IRoutingInputs parent, bool isInternal)
: base(key, type, connType, selector, isInternal)

View file

@ -5,7 +5,99 @@
/// </summary>
public enum eRoutingPortConnectionType
{
None, BackplaneOnly, DisplayPort, Dvi, Hdmi, Rgb, Vga, LineAudio, DigitalAudio, Sdi,
Composite, Component, DmCat, DmMmFiber, DmSmFiber, Speaker, Streaming, UsbC, HdBaseT
/// <summary>
/// No connection type
/// </summary>
None,
/// <summary>
/// Backplane only connection
/// </summary>
BackplaneOnly,
/// <summary>
/// Connection via cable
/// </summary>
DisplayPort,
/// <summary>
/// DVI connection
/// </summary>
Dvi,
/// <summary>
/// HDMI connection
/// </summary>
Hdmi,
/// <summary>
/// RGB connection
/// </summary>
Rgb,
/// <summary>
/// VGA connection
/// </summary>
Vga,
/// <summary>
/// Line audio connection
/// </summary>
LineAudio,
/// <summary>
/// Digital audio connection
/// </summary>
DigitalAudio,
/// <summary>
/// SDI connection
/// </summary>
Sdi,
/// <summary>
/// Composite connection
/// </summary>
Composite,
/// <summary>
/// Component connection
/// </summary>
Component,
/// <summary>
/// DM CAT connection
/// </summary>
DmCat,
/// <summary>
/// DM MM Fiber connection
/// </summary>
DmMmFiber,
/// <summary>
/// DM SM Fiber connection
/// </summary>
DmSmFiber,
/// <summary>
/// Speaker connection
/// </summary>
Speaker,
/// <summary>
/// Microphone connection
/// </summary>
Streaming,
/// <summary>
/// USB-C connection
/// </summary>
UsbC,
/// <summary>
/// HDBaseT connection
/// </summary>
HdBaseT
}
}

View file

@ -3,17 +3,40 @@
namespace PepperDash.Essentials.Core
{
[Flags]
/// <summary>
/// Enumeration of eRoutingSignalType values
/// </summary>
[Flags]
public enum eRoutingSignalType
{
/// <summary>
/// Audio signal type
/// </summary>
Audio = 1,
/// <summary>
/// Video signal type
/// </summary>
Video = 2,
/// <summary>
/// AudioVideo signal type
/// </summary>
AudioVideo = Audio | Video,
/// <summary>
/// Control signal type
/// </summary>
UsbOutput = 8,
/// <summary>
/// Control signal type
/// </summary>
UsbInput = 16,
/// <summary>
/// Secondary audio signal type
/// </summary>
SecondaryAudio = 32
}
}