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/controller/DeviceController.java | 61 ++++++++++++++++--------------
1 files changed, 32 insertions(+), 29 deletions(-)
diff --git a/src/main/java/com/dji/sample/manage/controller/DeviceController.java b/src/main/java/com/dji/sample/manage/controller/DeviceController.java
index e9d80c0..9fcc72d 100644
--- a/src/main/java/com/dji/sample/manage/controller/DeviceController.java
+++ b/src/main/java/com/dji/sample/manage/controller/DeviceController.java
@@ -1,21 +1,20 @@
package com.dji.sample.manage.controller;
+import com.dji.sample.common.error.CommonErrorEnum;
import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.component.mqtt.model.ChannelName;
import com.dji.sample.component.mqtt.model.CommonTopicReceiver;
import com.dji.sample.component.mqtt.model.CommonTopicResponse;
-import com.dji.sample.component.websocket.service.ISendMessageService;
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.model.dto.DeviceFirmwareUpgradeDTO;
-import com.dji.sample.manage.model.receiver.FirmwareVersionReceiver;
+import com.dji.sample.manage.model.enums.DeviceSetPropertyEnum;
import com.dji.sample.manage.model.receiver.StatusGatewayReceiver;
import com.dji.sample.manage.service.IDeviceService;
+import com.fasterxml.jackson.databind.JsonNode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.annotation.ServiceActivator;
-import org.springframework.integration.mqtt.support.MqttHeaders;
-import org.springframework.messaging.Message;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -34,9 +33,6 @@
@Autowired
private IDeviceService deviceService;
- @Autowired
- private ISendMessageService sendMessageService;
-
/**
* Handles the message that the drone goes online.
* @param receiver The drone information is not empty.
@@ -50,6 +46,8 @@
CommonTopicResponse.builder()
.tid(receiver.getTid())
.bid(receiver.getBid())
+ .timestamp(System.currentTimeMillis())
+ .method(receiver.getMethod())
.build());
}
}
@@ -61,13 +59,15 @@
@ServiceActivator(inputChannel = ChannelName.INBOUND_STATUS_OFFLINE, outputChannel = ChannelName.OUTBOUND)
public void deviceOffline(CommonTopicReceiver<StatusGatewayReceiver> receiver) {
- boolean offline = deviceService.deviceOffline(receiver.getData().getSn());
+ boolean offline = deviceService.deviceOffline(receiver.getData());
if (offline) {
// Notify pilot that the device is offline successfully.
deviceService.publishStatusReply(receiver.getData().getSn(),
CommonTopicResponse.builder()
.tid(receiver.getTid())
.bid(receiver.getBid())
+ .timestamp(System.currentTimeMillis())
+ .method(receiver.getMethod())
.build());
}
@@ -83,26 +83,6 @@
List<DeviceDTO> devicesList = deviceService.getDevicesTopoForWeb(workspaceId);
return ResponseResult.success(devicesList);
- }
-
- /**
- * Handle osd topic messages.
- * @param message
- */
- @ServiceActivator(inputChannel = ChannelName.INBOUND_OSD)
- public void osdRealTime(Message<?> message) {
- String topic = message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC).toString();
- byte[] payload = (byte[])message.getPayload();
- deviceService.handleOSD(topic, payload);
- }
-
- /**
- * Receive the reported firmware version data.
- * @param receiver
- */
- @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_FIRMWARE_VERSION)
- public void updateFirmwareVersion(FirmwareVersionReceiver receiver) {
- deviceService.updateFirmwareVersion(receiver);
}
/**
@@ -140,7 +120,7 @@
*/
@GetMapping("/{workspace_id}/devices/bound")
public ResponseResult<PaginationData<DeviceDTO>> getBoundDevicesWithDomain(
- @PathVariable("workspace_id") String workspaceId, String domain,
+ @PathVariable("workspace_id") String workspaceId, Integer domain,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize) {
PaginationData<DeviceDTO> devices = deviceService.getBoundDevicesWithDomain(workspaceId, page, pageSize, domain);
@@ -186,4 +166,27 @@
@RequestBody List<DeviceFirmwareUpgradeDTO> upgradeDTOS) {
return deviceService.createDeviceOtaJob(workspaceId, upgradeDTOS);
}
+
+ /**
+ * Set the property parameters of the drone.
+ * @param workspaceId
+ * @param dockSn
+ * @param param
+ * @return
+ */
+ @PutMapping("/{workspace_id}/devices/{device_sn}/property")
+ public ResponseResult devicePropertySet(@PathVariable("workspace_id") String workspaceId,
+ @PathVariable("device_sn") String dockSn,
+ @RequestBody JsonNode param) {
+ if (param.size() != 1) {
+ return ResponseResult.error(CommonErrorEnum.ILLEGAL_ARGUMENT);
+ }
+ String property = param.fieldNames().next();
+ Optional<DeviceSetPropertyEnum> propertyEnumOpt = DeviceSetPropertyEnum.find(property);
+ if (propertyEnumOpt.isEmpty()) {
+ return ResponseResult.error(CommonErrorEnum.ILLEGAL_ARGUMENT);
+ }
+ deviceService.devicePropertySet(workspaceId, dockSn, propertyEnumOpt.get(), param.get(property));
+ return ResponseResult.success();
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3