diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasWirelessSharing.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasWirelessSharing.cs new file mode 100644 index 00000000..bf7562fc --- /dev/null +++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IHasWirelessSharing.cs @@ -0,0 +1,47 @@ +using System; + +namespace PepperDash.Essentials.Core.DeviceTypeInterfaces; + +/// +/// Defines the contract for a wireless presentation endpoint that reports whether a wireless +/// sharing session is currently active. Implemented by platforms such as Crestron AirMedia, +/// Mersive Solstice, Barco ClickShare, Miracast/Teams receivers, etc. Allows consumers (e.g. +/// room plugins) to react to wireless sharing activity without taking a dependency on any +/// concrete device implementation. +/// +/// +/// This refers specifically to wireless screen/device mirroring, as distinct from in-call +/// content sharing on a video conference. +/// +public interface IHasWirelessSharing +{ + /// + /// Reports whether a wireless sharing session is currently active (content is being presented). + /// + BoolFeedback IsSharingFeedback { get; } + + /// + /// Raised when wireless sharing starts or stops. The event args carry the new sharing state. + /// + event EventHandler SharingChanged; +} + +/// +/// Event arguments describing a change in wireless sharing state. +/// +public class WirelessSharingEventArgs : EventArgs +{ + /// + /// True if a wireless sharing session is active (content is being presented), false otherwise. + /// + public bool IsSharing { get; private set; } + + /// + /// Creates a new . + /// + /// True if a wireless sharing session is active, false otherwise. + public WirelessSharingEventArgs(bool isSharing) + { + IsSharing = isSharing; + } +}