215 lines
8.3 KiB
C#
215 lines
8.3 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
|