LASAPlatform/OpenAuth.App/ServiceApp/DjiCloud/Service/IDeviceService.cs

215 lines
8.3 KiB
C#
Raw Normal View History

using System.Text.Json.Nodes;
using OpenAuth.WebApi.CloudSdk;
namespace OpenAuth.App.ServiceApp.DjiCloud.Service;
/// <summary>
/// 设备服务接口,定义了设备管理相关的操作。
/// </summary>
public interface IDeviceService
{
/// <summary>
/// 飞行器离线。
/// </summary>
/// <param name="deviceSn">飞行器序列号</param>
void SubDeviceOffline(string deviceSn);
/// <summary>
/// 网关离线。
/// </summary>
/// <param name="gatewaySn">网关序列号</param>
void GatewayOffline(string gatewaySn);
/// <summary>
/// 当网关上线时订阅网关主题,并取消订阅子设备主题。
/// </summary>
/// <param name="gateway">网关管理对象</param>
void GatewayOnlineSubscribeTopic(GatewayManager gateway);
/// <summary>
/// 当无人机上线时订阅网关和子设备主题。
/// </summary>
/// <param name="gateway">网关管理对象</param>
void SubDeviceOnlineSubscribeTopic(GatewayManager gateway);
/// <summary>
/// 当网关设备下线时,取消订阅网关和子设备的主题。
/// </summary>
/// <param name="gateway">网关管理对象</param>
void OfflineUnsubscribeTopic(GatewayManager gateway);
/// <summary>
/// 根据不同查询条件获取设备数据。
/// </summary>
/// <param name="param">查询参数</param>
/// <returns>设备列表</returns>
// List<DeviceDTO> GetDevicesByParams(DeviceQueryParam param);
/// <summary>
/// 获取该工作区所有设备的拓扑信息。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <returns>设备列表</returns>
List<DeviceDTO> GetDevicesTopoForWeb(string workspaceId);
/// <summary>
/// 设置无人机的遥控器和负载信息。
/// </summary>
/// <param name="device">设备对象</param>
void SpliceDeviceTopo(DeviceDTO device);
/// <summary>
/// 根据设备 SN 查询设备信息。
/// </summary>
/// <param name="sn">设备序列号</param>
/// <returns>拓扑设备 DTO</returns>
// Optional<TopologyDeviceDTO> GetDeviceTopoForPilot(string sn);
/// <summary>
/// 将单个设备信息转换为拓扑对象。
/// </summary>
/// <param name="device">设备对象</param>
/// <returns>拓扑设备 DTO</returns>
// TopologyDeviceDTO DeviceConvertToTopologyDTO(DeviceDTO device);
/// <summary>
/// 服务器接收到同一工作区内的任何设备上下线及拓扑更新请求时,
/// 会通过 WebSocket 向 PILOT 广播推送设备上下线及拓扑更新消息,
/// PILOT 收到推送后重新获取设备拓扑列表。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="deviceSn">设备序列号</param>
void PushDeviceOfflineTopo(string workspaceId, string deviceSn);
/// <summary>
/// 服务器接收到同一工作区内的任何设备上下线及拓扑更新请求时,
/// 会通过 WebSocket 向 PILOT 广播推送设备上下线及拓扑更新消息,
/// PILOT 收到推送后重新获取设备拓扑列表。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="gatewaySn">网关序列号</param>
/// <param name="deviceSn">设备序列号</param>
void PushDeviceOnlineTopo(string workspaceId, string gatewaySn, string deviceSn);
/// <summary>
/// 更新设备信息。
/// </summary>
/// <param name="deviceDTO">设备 DTO</param>
/// <returns>是否更新成功</returns>
bool UpdateDevice(DeviceDTO deviceDTO);
/// <summary>
/// 绑定设备到组织和人员。
/// </summary>
/// <param name="device">设备 DTO</param>
/// <returns>是否绑定成功</returns>
bool BindDevice(DeviceDTO device);
/// <summary>
/// 获取工作区内已绑定设备列表。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="page">页码</param>
/// <param name="pageSize">每页大小</param>
/// <param name="domain">域</param>
/// <returns>分页设备数据</returns>
// PaginationData<DeviceDTO> GetBoundDevicesWithDomain(string workspaceId, long page, long pageSize, int domain);
/// <summary>
/// 解除设备绑定。
/// </summary>
/// <param name="deviceSn">设备序列号</param>
void UnbindDevice(string deviceSn);
/// <summary>
/// 根据设备序列号获取设备信息。
/// </summary>
/// <param name="sn">设备序列号</param>
/// <returns>设备 DTO</returns>
// Optional<DeviceDTO> GetDeviceBySn(string sn);
/// <summary>
/// 创建设备固件升级任务。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="upgradeDTOS">升级 DTO 列表</param>
/// <returns>HTTP 响应结果</returns>
// HttpResultResponse CreateDeviceOtaJob(string workspaceId, List<DeviceFirmwareUpgradeDTO> upgradeDTOS);
/// <summary>
/// 设置无人机属性参数。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="dockSn">停机坞序列号</param>
/// <param name="param">JSON 参数节点</param>
/// <returns>受影响记录数</returns>
int DevicePropertySet(string workspaceId, string dockSn, JsonNode param);
/// <summary>
/// 检查停机坞的工作模式。
/// </summary>
/// <param name="dockSn">停机坞序列号</param>
/// <returns>停机坞工作模式枚举</returns>
// DockModeCodeEnum GetDockMode(string dockSn);
/// <summary>
/// 查询飞行器的工作模式。
/// </summary>
/// <param name="deviceSn">设备序列号</param>
/// <returns>飞行器工作模式枚举</returns>
// DroneModeCodeEnum GetDeviceMode(string deviceSn);
/// <summary>
/// 检查停机坞是否处于 DRC 模式。
/// </summary>
/// <param name="dockSn">停机坞序列号</param>
/// <returns>是否处于 DRC 模式</returns>
bool CheckDockDrcMode(string dockSn);
/// <summary>
/// 检查设备是否有飞行控制权限。
/// </summary>
/// <param name="gatewaySn">网关序列号</param>
/// <returns>是否有飞行控制权限</returns>
bool CheckAuthorityFlight(string gatewaySn);
/// <summary>
/// 保存设备信息。
/// </summary>
/// <param name="device">设备 DTO</param>
/// <returns>受影响记录数</returns>
int SaveDevice(DeviceDTO device);
/// <summary>
/// 保存或更新设备信息。
/// </summary>
/// <param name="device">设备 DTO</param>
/// <returns>是否保存或更新成功</returns>
bool SaveOrUpdateDevice(DeviceDTO device);
/// <summary>
/// 推送 OSD 数据给 Pilot。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="sn">设备序列号</param>
/// <param name="data">OSD 数据</param>
// void PushOsdDataToPilot(string workspaceId, string sn, DeviceOsdHost data);
/// <summary>
/// 推送 OSD 数据给 Web。
/// </summary>
/// <param name="workspaceId">工作区 ID</param>
/// <param name="codeEnum">业务代码枚举</param>
/// <param name="sn">设备序列号</param>
/// <param name="data">OSD 数据</param>
// void PushOsdDataToWeb(string workspaceId, BizCodeEnum codeEnum, string sn, object data);
/// <summary>
/// 更新飞行控制信息。
/// </summary>
/// <param name="gateway">网关设备 DTO</param>
/// <param name="controlSource">控制源枚举</param>
//void UpdateFlightControl(DeviceDTO gateway, ControlSourceEnum controlSource);
}