mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-09 17:54:59 +00:00
feat: ICurrentSources interface to allow for tracking breakaway routing
This commit is contained in:
@@ -2,7 +2,14 @@
|
||||
|
||||
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
|
||||
{
|
||||
public interface IDisplay: IHasFeedback, IRoutingSinkWithSwitching, IHasPowerControl, IWarmingCooling, IUsageTracking, IKeyName
|
||||
/// <summary>
|
||||
/// Interface for display devices that can be controlled and monitored.
|
||||
/// This interface combines functionality for feedback, routing, power control,
|
||||
/// warming/cooling, usage tracking, and key name management.
|
||||
/// It is designed to be implemented by devices that require these capabilities,
|
||||
/// such as projectors, displays, and other visual output devices.
|
||||
/// </summary>
|
||||
public interface IDisplay : IHasFeedback, IRoutingSinkWithSwitching, IHasPowerControl, IWarmingCooling, IUsageTracking, IKeyName
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,6 +174,13 @@ namespace PepperDash.Essentials.Core
|
||||
[JsonProperty("syncProviderDeviceKey")]
|
||||
public string SyncProviderDeviceKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicates if the source supports USB connections
|
||||
/// </summary>
|
||||
[JsonProperty("supportsUsb")]
|
||||
public bool SupportsUsb { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Default constructor for SourceListItem, initializes the Icon to "Blank"
|
||||
/// </summary>
|
||||
|
||||
28
src/PepperDash.Essentials.Core/Routing/ICurrentSources.cs
Normal file
28
src/PepperDash.Essentials.Core/Routing/ICurrentSources.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Routing
|
||||
{
|
||||
/// <summary>
|
||||
/// The current sources for the room, keyed by eRoutingSignalType.
|
||||
/// This allows for multiple sources to be tracked, such as audio and video.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This interface is used to provide access to the current sources in a room,
|
||||
/// allowing for more complex routing scenarios where multiple signal types are involved.
|
||||
/// </remarks>
|
||||
public interface ICurrentSources
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the current sources for the room, keyed by eRoutingSignalType.
|
||||
/// This dictionary contains the current source for each signal type, such as audio, video,
|
||||
/// </summary>
|
||||
Dictionary<eRoutingSignalType, SourceListItem> CurrentSources { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current source keys for the room, keyed by eRoutingSignalType.
|
||||
/// This dictionary contains the keys for the current source for each signal type, such as audio,
|
||||
/// </summary>
|
||||
Dictionary<eRoutingSignalType, string> CurrentSourceKeys { get; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,8 @@ using PepperDash.Essentials.Core.Routing;
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
using PepperDash.Essentials.Core.Routing.Interfaces
|
||||
*/
|
||||
using System;
|
||||
|
||||
namespace PepperDash.Essentials.Core
|
||||
{
|
||||
/// <summary>
|
||||
@@ -21,10 +23,24 @@ namespace PepperDash.Essentials.Core
|
||||
/// <summary>
|
||||
/// For rooms with a single presentation source, change event
|
||||
/// </summary>
|
||||
[Obsolete("Use ICurrentSources instead")]
|
||||
public interface IHasCurrentSourceInfoChange
|
||||
{
|
||||
/// <summary>
|
||||
/// The key for the current source info, used to look up the source in the SourceList
|
||||
/// </summary>
|
||||
string CurrentSourceInfoKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The current source info for the room, used to look up the source in the SourceList
|
||||
/// </summary>
|
||||
SourceListItem CurrentSourceInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Event that is raised when the current source info changes.
|
||||
/// This is used to notify the system of changes to the current source info.
|
||||
/// The event handler receives the new source info and the type of change that occurred.
|
||||
/// </summary>
|
||||
event SourceInfoChangeHandler CurrentSourceChange;
|
||||
}
|
||||
}
|
||||
@@ -1,29 +1,29 @@
|
||||
namespace PepperDash.Essentials.Core
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
|
||||
namespace PepperDash.Essentials.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// For fixed-source endpoint devices
|
||||
/// </summary>
|
||||
public interface IRoutingSink : IRoutingInputs, IHasCurrentSourceInfoChange
|
||||
{
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For fixed-source endpoint devices with an input port
|
||||
/// </summary>
|
||||
public interface IRoutingSinkWithInputPort :IRoutingSink
|
||||
public interface IRoutingSinkWithInputPort : IRoutingSink
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the current input port for this routing sink.
|
||||
/// </summary>
|
||||
RoutingInputPort CurrentInputPort { get; }
|
||||
}
|
||||
/*/// <summary>
|
||||
/// For fixed-source endpoint devices
|
||||
/// </summary>
|
||||
public interface IRoutingSink<TSelector> : IRoutingInputs<TSelector>, IHasCurrentSourceInfoChange
|
||||
{
|
||||
void UpdateRouteRequest<TOutputSelector>(RouteRequest<TSelector, TOutputSelector> request);
|
||||
|
||||
RouteRequest<TSelector, TOutputSelector> GetRouteRequest<TOutputSelector>();
|
||||
}*/
|
||||
/// <summary>
|
||||
/// Interface for routing sinks that have access to the current source information.
|
||||
/// </summary>
|
||||
public interface IRoutingSinkWithCurrentSources : IRoutingSink, ICurrentSources
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user