mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-21 07:35:04 +00:00
feat: Enhance camera capabilities and messaging structure
- Introduced `ICameraCapabilities` interface and `CameraCapabilities` class for defining camera features like pan, tilt, zoom, and focus. - Modified `IHasCameras` interface to include a list of `IHasCameraControls` objects for improved camera management. - Refactored `CameraBaseMessenger` to be generic, enhancing flexibility and type safety. - Updated `SendCameraFullMessageObject` to include detailed camera capabilities in status messages. - Added `CameraStateMessage` class to encapsulate camera state, including control support and capabilities. - Updated `IHasCamerasWithControlMessenger` to use `IKeyName` for camera list and selected camera properties, improving type consistency. - Enhanced `MobileControlSystemController` to manage devices implementing `IHasCameraControls`, creating appropriate messengers for different device types.
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
using Newtonsoft.Json;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Devices.Common.Cameras;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace PepperDash.Essentials.AppServer.Messengers
|
||||
{
|
||||
@@ -68,14 +70,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
|
||||
{
|
||||
var state = new IHasCamerasWithControlsStateMessage
|
||||
{
|
||||
CameraList = CameraController.Cameras,
|
||||
SelectedCamera = CameraController.SelectedCamera
|
||||
CameraList = CameraController.Cameras.Cast<IKeyName>().ToList(),
|
||||
SelectedCamera = CameraController.SelectedCamera as IKeyName
|
||||
};
|
||||
|
||||
PostStatusMessage(state, clientId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -87,13 +87,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
|
||||
/// List of cameras available in the device.
|
||||
/// </summary>
|
||||
[JsonProperty("cameraList", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public List<IHasCameraControls> CameraList { get; set; }
|
||||
public List<IKeyName> CameraList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The currently selected camera on the device.
|
||||
/// </summary>
|
||||
[JsonProperty("selectedCamera", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public IHasCameraControls SelectedCamera { get; set; }
|
||||
|
||||
public IKeyName SelectedCamera { get; set; }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user