diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/Interfaces/CameraControl.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/Interfaces/CameraControl.cs new file mode 100644 index 00000000..c0a0442c --- /dev/null +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/Interfaces/CameraControl.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials.Devices.Common.Cameras +{ + public enum eCameraControlMode + { + Manual = 0, + Off, + Auto + } + + + public interface IHasCameras + { + event EventHandler CameraSelected; + + List Cameras { get; } + + CameraBase SelectedCamera { get; } + + StringFeedback SelectedCameraFeedback { get; } + + void SelectCamera(string key); + } + + /// + /// Aggregates far end cameras with near end cameras + /// + public interface IHasCodecCameras : IHasCameras, IHasFarEndCameraControl + { + + } + + /// + /// To be implmented on codecs that can disable their camera(s) to blank the near end video + /// + public interface IHasCameraOff + { + BoolFeedback CameraIsOffFeedback { get; } + void CameraOff(); + } + + public class CameraSelectedEventArgs : EventArgs + { + public CameraBase SelectedCamera { get; private set; } + + public CameraSelectedEventArgs(CameraBase camera) + { + SelectedCamera = camera; + } + } + + public interface IHasFarEndCameraControl + { + CameraBase FarEndCamera { get; } + + BoolFeedback ControllingFarEndCameraFeedback { get; } + + } + + /// + /// Used to decorate a camera as a far end + /// + public interface IAmFarEndCamera + { + + } + + public interface IHasCameraControls + { + } + + /// + /// Aggregates the pan, tilt and zoom interfaces + /// + public interface IHasCameraPtzControl : IHasCameraPanControl, IHasCameraTiltControl, IHasCameraZoomControl + { + /// + /// Resets the camera position + /// + void PositionHome(); + } + + /// + /// Interface for camera pan control + /// + public interface IHasCameraPanControl : IHasCameraControls + { + void PanLeft(); + void PanRight(); + void PanStop(); + } + + /// + /// Interface for camera tilt control + /// + public interface IHasCameraTiltControl : IHasCameraControls + { + void TiltDown(); + void TiltUp(); + void TiltStop(); + } + + /// + /// Interface for camera zoom control + /// + public interface IHasCameraZoomControl : IHasCameraControls + { + void ZoomIn(); + void ZoomOut(); + void ZoomStop(); + } + + /// + /// Interface for camera focus control + /// + public interface IHasCameraFocusControl : IHasCameraControls + { + void FocusNear(); + void FocusFar(); + void FocusStop(); + + void TriggerAutoFocus(); + } + + public interface IHasAutoFocusMode + { + void SetFocusModeAuto(); + void SetFocusModeManual(); + void ToggleFocusMode(); + } + + public interface IHasCameraAutoMode : IHasCameraControls + { + void CameraAutoModeOn(); + void CameraAutoModeOff(); + void CameraAutoModeToggle(); + BoolFeedback CameraAutoModeIsOnFeedback { get; } + } + + + + +} \ No newline at end of file