diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMultiviewControl.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMultiviewControl.cs new file mode 100644 index 00000000..58bdd1f3 --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasMultiviewControl.cs @@ -0,0 +1,28 @@ +namespace PepperDash.Essentials.Core.DeviceTypeInterfaces; + +/// +/// Defines a device (e.g. a multiview/UVC compositor) whose multiview output can be enabled and +/// whose active layout can be observed. Implementing this interface (instead of requiring consumers +/// to reference the hardware-specific plugin type directly) lets other plugins (e.g. a room plugin) +/// turn the multiview on and read its current layout without taking a compile-time dependency on the +/// specific hardware plugin that implements it. The layout is set via +/// . +/// +public interface IHasMultiviewControl +{ + /// + /// Enables or disables the multiview output. + /// + /// True to enable multiview, false to disable. + void SetMultiviewEnabled(bool enabled); + + /// + /// Feedback for whether the multiview output is currently enabled. + /// + BoolFeedback MultiviewEnabled { get; } + + /// + /// Feedback for the current multiview layout index. + /// + IntFeedback MultiviewLayout { get; } +}