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