From a7aaeabc7873a0eafb4a7ecad7f65b018b7a9bc9 Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 24 Feb 2023 19:31:23 +0800
Subject: [PATCH] What's new? 1. Add license for dock. 2. Modify the logic corresponding to the firmware file and device type. 3. Add multiple mqtt clients options. 4. Modify the structure of the interface for obtaining the device list. 5. Fixed some issues.
---
src/main/java/com/dji/sample/manage/service/IDeviceService.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 109 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/dji/sample/manage/service/IDeviceService.java b/src/main/java/com/dji/sample/manage/service/IDeviceService.java
index 444d49d..11bb1d7 100644
--- a/src/main/java/com/dji/sample/manage/service/IDeviceService.java
+++ b/src/main/java/com/dji/sample/manage/service/IDeviceService.java
@@ -1,14 +1,24 @@
package com.dji.sample.manage.service;
+import com.dji.sample.common.model.PaginationData;
+import com.dji.sample.common.model.ResponseResult;
+import com.dji.sample.component.mqtt.model.CommonTopicReceiver;
import com.dji.sample.component.mqtt.model.CommonTopicResponse;
import com.dji.sample.component.websocket.config.ConcurrentWebSocketSession;
import com.dji.sample.manage.model.dto.DeviceDTO;
+import com.dji.sample.manage.model.dto.DeviceFirmwareUpgradeDTO;
import com.dji.sample.manage.model.dto.TopologyDeviceDTO;
+import com.dji.sample.manage.model.enums.DeviceSetPropertyEnum;
import com.dji.sample.manage.model.param.DeviceQueryParam;
+import com.dji.sample.manage.model.receiver.FirmwareVersionReceiver;
import com.dji.sample.manage.model.receiver.StatusGatewayReceiver;
+import com.fasterxml.jackson.databind.JsonNode;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHeaders;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
/**
@@ -27,10 +37,10 @@
/**
* The device goes offline.
- * @param gatewaySn
+ * @param gateway
* @return Whether the offline is successful.
*/
- Boolean deviceOffline(String gatewaySn);
+ Boolean deviceOffline(StatusGatewayReceiver gateway);
/**
* The aircraft goes offline.
@@ -90,7 +100,7 @@
* @param sessions The collection of connection objects on the pilot side.
* @param sn
*/
- void pushDeviceOnlineTopo(Collection<ConcurrentWebSocketSession> sessions, String sn);
+ void pushDeviceOnlineTopo(Collection<ConcurrentWebSocketSession> sessions, String sn, String gatewaySn);
/**
* Query the information of the device according to the sn of the device.
@@ -111,9 +121,9 @@
* it also broadcasts a push of device online, offline and topology update to PILOT via websocket,
* and PILOT will get the device topology list again after receiving the push.
* @param workspaceId
- * @param gatewaySn
+ * @param sn
*/
- void pushDeviceOfflineTopo(String workspaceId, String gatewaySn);
+ void pushDeviceOfflineTopo(String workspaceId, String sn);
/**
* When the server receives the request of any device online, offline and topology update in the same workspace,
@@ -123,13 +133,103 @@
* @param deviceSn
* @param gatewaySn
*/
- void pushDeviceOnlineTopo(String workspaceId, String deviceSn, String gatewaySn);
+ void pushDeviceOnlineTopo(String workspaceId, String gatewaySn, String deviceSn);
/**
* Handle messages from the osd topic.
- * @param topic osd
- * @param payload
+ * @param message osd
*/
- void handleOSD(String topic, byte[] payload);
+ void handleOSD(Message<?> message);
+ /**
+ * Update the device information.
+ * @param deviceDTO
+ * @return
+ */
+ Boolean updateDevice(DeviceDTO deviceDTO);
+
+ /**
+ * Bind devices to organizations and people.
+ * @param device
+ */
+ Boolean bindDevice(DeviceDTO device);
+
+ /**
+ * Handle dock binding status requests.
+ * Note: If your business does not need to bind the dock to the organization,
+ * you can directly reply to the successful message without implementing business logic.
+ * @param receiver
+ * @param headers
+ */
+ void bindStatus(CommonTopicReceiver receiver, MessageHeaders headers);
+
+ /**
+ * Handle dock binding requests.
+ * Note: If your business does not need to bind the dock to the organization,
+ * you can directly reply to the successful message without implementing business logic.
+ * @param receiver
+ * @param headers
+ */
+ void bindDevice(CommonTopicReceiver receiver, MessageHeaders headers);
+
+ /**
+ * Get the binding devices list in one workspace.
+ * @param workspaceId
+ * @param page
+ * @param pageSize
+ * @param domain
+ * @return
+ */
+ PaginationData<DeviceDTO> getBoundDevicesWithDomain(String workspaceId, Long page, Long pageSize, Integer domain);
+
+ /**
+ * Unbind device base on device's sn.
+ * @param deviceSn
+ */
+ void unbindDevice(String deviceSn);
+
+ /**
+ * Get device information based on device's sn.
+ * @param sn device's sn
+ * @return device
+ */
+ Optional<DeviceDTO> getDeviceBySn(String sn);
+
+ /**
+ * Update the firmware version information of the device or payload.
+ * @param receiver
+ */
+ void updateFirmwareVersion(FirmwareVersionReceiver receiver);
+
+ /**
+ * Create job for device firmware updates.
+ * @param workspaceId
+ * @param upgradeDTOS
+ * @return
+ */
+ ResponseResult createDeviceOtaJob(String workspaceId, List<DeviceFirmwareUpgradeDTO> upgradeDTOS);
+
+ /**
+ * Set the property parameters of the drone.
+ * @param workspaceId
+ * @param dockSn
+ * @param propertyEnum
+ * @param param
+ */
+ void devicePropertySet(String workspaceId, String dockSn, DeviceSetPropertyEnum propertyEnum, JsonNode param);
+
+ /**
+ * Set one property parameters of the drone.
+ * @param topic
+ * @param propertyEnum
+ * @param value
+ */
+ void deviceOnePropertySet(String topic, DeviceSetPropertyEnum propertyEnum, Map.Entry<String, Object> value);
+
+ /**
+ * Determine if the device is online.
+ * @param sn
+ * @return
+ */
+ Boolean checkDeviceOnline(String sn);
}
\ No newline at end of file
--
Gitblit v1.9.3