mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 05:05:00 +00:00
Progress on CameraBaseMessenger
This commit is contained in:
@@ -4,9 +4,99 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Devices.Common.Cameras;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.AppServer.Messengers
|
namespace PepperDash.Essentials.AppServer.Messengers
|
||||||
{
|
{
|
||||||
public class CameraBaseMessenger
|
public class CameraBaseMessenger : MessengerBase
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Device being bridged
|
||||||
|
/// </summary>
|
||||||
|
public CameraBase Camera { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="camera"></param>
|
||||||
|
/// <param name="messagePath"></param>
|
||||||
|
public CameraBaseMessenger(string key, CameraBase camera, string messagePath)
|
||||||
|
: base(key, messagePath)
|
||||||
|
{
|
||||||
|
if (camera == null)
|
||||||
|
throw new ArgumentNullException("camera");
|
||||||
|
|
||||||
|
Camera = camera;
|
||||||
|
|
||||||
|
var presetsCamera = Camera as IHasCameraPresets;
|
||||||
|
|
||||||
|
if (presetsCamera != null)
|
||||||
|
{
|
||||||
|
presetsCamera.PresetsListHasChanged += new EventHandler<EventArgs>(presetsCamera_PresetsListHasChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void presetsCamera_PresetsListHasChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SendCameraFullMessageObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void CustomRegisterWithAppServer(MobileControlSystemController appServerController)
|
||||||
|
{
|
||||||
|
appServerController.AddAction(MessagePath + "/fullStatus", new Action(SendCameraFullMessageObject));
|
||||||
|
|
||||||
|
var ptzCamera = Camera as IHasCameraPtzControl;
|
||||||
|
|
||||||
|
if (ptzCamera != null)
|
||||||
|
{
|
||||||
|
// Need to evaluate how to pass through these P&H actions. Need a method that takes a bool maybe?
|
||||||
|
AppServerController.AddAction(MessagePath + "/cameraUp", new PressAndHoldAction(ptzCamera.TiltUp));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Helper method to update the full status of the camera
|
||||||
|
/// </summary>
|
||||||
|
void SendCameraFullMessageObject()
|
||||||
|
{
|
||||||
|
var presetsCamera = Camera as IHasCameraPresets;
|
||||||
|
|
||||||
|
var presets = new List<CameraPreset>();
|
||||||
|
|
||||||
|
if (presetsCamera != null)
|
||||||
|
presets = presetsCamera.Presets;
|
||||||
|
|
||||||
|
var info = new
|
||||||
|
{
|
||||||
|
cameraMode = GetCameraMode(),
|
||||||
|
hasPresets = Camera as IHasCameraPresets,
|
||||||
|
presets = presets
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Computes the current camera mode
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
string GetCameraMode()
|
||||||
|
{
|
||||||
|
string m;
|
||||||
|
if (Camera is IHasCameraAutoMode && (Camera as IHasCameraAutoMode).CameraAutoModeIsOnFeedback.BoolValue)
|
||||||
|
m = eCameraControlMode.Auto.ToString().ToLower();
|
||||||
|
else if (Camera is IPower && !(Camera as IPower).PowerIsOnFeedback.BoolValue)
|
||||||
|
m = eCameraControlMode.Off.ToString().ToLower();
|
||||||
|
else
|
||||||
|
m = eCameraControlMode.Manual.ToString().ToLower();
|
||||||
|
return m;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ using Crestron.SimplSharpPro.EthernetCommunication;
|
|||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
using PepperDash.Essentials.Devices.Common.Codec;
|
using PepperDash.Essentials.Devices.Common.Codec;
|
||||||
|
using PepperDash.Essentials.Devices.Common.Cameras;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.AppServer.Messengers
|
namespace PepperDash.Essentials.AppServer.Messengers
|
||||||
{
|
{
|
||||||
@@ -557,9 +558,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
|
|||||||
string GetCameraMode()
|
string GetCameraMode()
|
||||||
{
|
{
|
||||||
string m;
|
string m;
|
||||||
if (EISC.GetBool(BCameraModeAuto)) m = "auto";
|
if (EISC.GetBool(BCameraModeAuto)) m = eCameraControlMode.Auto.ToString().ToLower();
|
||||||
else if (EISC.GetBool(BCameraModeManual)) m = "manual";
|
else if (EISC.GetBool(BCameraModeManual)) m = eCameraControlMode.Manual.ToString().ToLower();
|
||||||
else m = "off";
|
else m = eCameraControlMode.Off.ToString().ToLower();
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class CameraPropertiesConfig
|
public class CameraPropertiesConfig
|
||||||
{
|
{
|
||||||
public CommunicationMonitorConfig CommunicationMonitorProperties { get; set; }
|
public CommunicationMonitorConfig CommunicationMonitorProperties { get; set; }
|
||||||
|
|||||||
@@ -88,6 +88,8 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IHasCameraPanControl
|
public interface IHasCameraPanControl
|
||||||
{
|
{
|
||||||
|
// void PanLeft(bool pressRelease);
|
||||||
|
// void PanRight(bool pressRelease);
|
||||||
void PanLeft();
|
void PanLeft();
|
||||||
void PanRight();
|
void PanRight();
|
||||||
void PanStop();
|
void PanStop();
|
||||||
@@ -98,6 +100,8 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IHasCameraTiltControl
|
public interface IHasCameraTiltControl
|
||||||
{
|
{
|
||||||
|
// void TiltDown(bool pressRelease);
|
||||||
|
// void TildUp(bool pressRelease);
|
||||||
void TiltDown();
|
void TiltDown();
|
||||||
void TiltUp();
|
void TiltUp();
|
||||||
void TiltStop();
|
void TiltStop();
|
||||||
@@ -108,6 +112,8 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IHasCameraZoomControl
|
public interface IHasCameraZoomControl
|
||||||
{
|
{
|
||||||
|
// void ZoomIn(bool pressRelease);
|
||||||
|
// void ZoomOut(bool pressRelease);
|
||||||
void ZoomIn();
|
void ZoomIn();
|
||||||
void ZoomOut();
|
void ZoomOut();
|
||||||
void ZoomStop();
|
void ZoomStop();
|
||||||
|
|||||||
Reference in New Issue
Block a user