From f8a09d564aeba26eb9d729fee5e7fbcab3811de1 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sat, 26 Oct 2024 14:14:49 +0800
Subject: [PATCH] 优化
---
ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCmd.java | 4
ard-work/src/main/java/com/ard/tianyu/netty/command/notice/FlyWayEndReplyCmd.java | 32 ++
ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java | 74 +++-
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java | 177 +++++++----
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchCameraDTO.java | 27 +
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCmd.java | 7
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/notice/UavReadyReplyCmd.java | 36 ++
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/PhotoReturnToggleDTO.java | 21 +
ard-work/src/main/java/com/ard/tianyu/netty/command/notice/BoxPowerStatusReplyCmd.java | 27 +
ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/PhotoReturnToggleCmd.java | 38 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchSourceCmd.java | 35 ++
ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolEncoder.java | 8
ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomCmd.java | 15
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchSourceDTO.java | 23 +
ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomToLevelDTO.java | 28 +
ard-work/src/main/java/com/ard/tianyu/netty/handler/ClientHandler.java | 6
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomDTO.java | 23 +
ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCmd.java | 2
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java | 33 +
ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitReplyCmd.java | 10
ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/controller/UavController.java | 41 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchCameraCmd.java | 34 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCmd.java | 6
ard-admin/src/main/resources/application-dev.yml | 9
ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCmd.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomToLevelCmd.java | 37 ++
42 files changed, 672 insertions(+), 183 deletions(-)
diff --git a/ard-admin/src/main/resources/application-dev.yml b/ard-admin/src/main/resources/application-dev.yml
index 2d9a8df..ea46f87 100644
--- a/ard-admin/src/main/resources/application-dev.yml
+++ b/ard-admin/src/main/resources/application-dev.yml
@@ -24,17 +24,12 @@
# 天宇服务器配置
tianyu:
# 天宇http服务器地址
- endpoint: 112.98.106.22:12000
+ endpoint: 112.98.106.22:22000
accesskeyid: qmfmd3Ws7M4dMcylnrTU
accesskeysecret: 5WBU2uEhHZaVefpZdaxpFh4LJW9fZZaa
# 天宇tcp服务器地址
tcpserver: 112.98.106.22
- tcpport: 13002
-# netty配置
-netty:
- tcp:
- enabled: true
- reConnectInterval: 30000
+ tcpport: 23002
#流媒体配置
mediamtx:
# 流媒体服务器地址
diff --git a/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java b/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java
index 3bc8b1b..0f619e3 100644
--- a/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java
+++ b/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java
@@ -4,8 +4,7 @@
import com.ard.tianyu.model.dto.BoxHistoryDTO;
import com.ard.tianyu.model.dto.BoxPhotosDTO;
import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.CapturePicDTO;
-import com.ard.tianyu.model.dto.camera.RecordDTO;
+import com.ard.tianyu.model.dto.camera.*;
import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
import com.ard.tianyu.model.dto.control.AngleControlDTO;
import com.ard.tianyu.model.dto.control.SpeedControlDTO;
@@ -121,6 +120,44 @@
return AjaxResult.success();
}
+ @ApiOperation(value = "变倍", notes = "actionCode值:10变倍加 | 11变倍减 | 15复位 | 255停止")
+ @ApiOperationSupport(order = 6)
+ @PostMapping("/zoom")
+ public AjaxResult zoom(@RequestBody ZoomDTO zoomDTO) {
+ tyService.zoom(zoomDTO);
+ return AjaxResult.success();
+ }
+ @ApiOperation("变倍指定倍数")
+ @ApiOperationSupport(order = 7)
+ @PostMapping("/zoomToLevel")
+ public AjaxResult zoomToLevel(@RequestBody ZoomToLevelDTO zoomToLevelDTO) {
+ tyService.zoomToLevel(zoomToLevelDTO);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "切换摄像头", notes = "actionParam值:0切换到FPV摄像头 | 1切换到载荷摄像头")
+ @ApiOperationSupport(order = 8)
+ @PostMapping("/switchCamera")
+ public AjaxResult switchCamera(@RequestBody SwitchCameraDTO switchCameraDTO) {
+ tyService.switchCamera(switchCameraDTO);
+ return AjaxResult.success();
+ }
+ @ApiOperation(value = "切换视频源", notes = "相机在主相机镜头时有效,FPV镜头时无效 actionParam值:0-可见 1-变焦 2-红外")
+ @ApiOperationSupport(order = 8)
+ @PostMapping("/switchSource")
+ public AjaxResult switchSource(@RequestBody SwitchSourceDTO switchSourceDTO) {
+ tyService.switchSource(switchSourceDTO);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "打开或关闭照片回传", notes = "actionParam值:0-关闭,1-打开")
+ @ApiOperationSupport(order = 8)
+ @PostMapping("/photoReturnToggle")
+ public AjaxResult photoReturnToggle(@RequestBody PhotoReturnToggleDTO photoReturnToggleDTO) {
+ tyService.photoReturnToggle(photoReturnToggleDTO);
+ return AjaxResult.success();
+ }
+
@ApiOperation("获取无人机状态")
@GetMapping("/getUavState")
public AjaxResult getUavState(String boxSn) {
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/PhotoReturnToggleDTO.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/PhotoReturnToggleDTO.java
new file mode 100644
index 0000000..6163717
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/PhotoReturnToggleDTO.java
@@ -0,0 +1,21 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 照片回传实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月26日14:06
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class PhotoReturnToggleDTO {
+ private String boxSn;
+ private byte actionParam;
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchCameraDTO.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchCameraDTO.java
new file mode 100644
index 0000000..ef53703
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchCameraDTO.java
@@ -0,0 +1,27 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+/**
+ * 切换摄像头实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月26日9:02
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+public class SwitchCameraDTO {
+ private String boxSn;
+ // 0x00 FPV 0x01 载荷
+ private byte actionParam;
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchSourceDTO.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchSourceDTO.java
new file mode 100644
index 0000000..14420d5
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/SwitchSourceDTO.java
@@ -0,0 +1,23 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * 切换视频源实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月26日9:02
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class SwitchSourceDTO {
+ private String boxSn;
+ // 0x00-可见 0x01-变焦 0x02-红外
+ private byte actionParam;
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomDTO.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomDTO.java
new file mode 100644
index 0000000..1fed09e
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomDTO.java
@@ -0,0 +1,23 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * 变倍实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月25日13:32
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ZoomDTO {
+ private String boxSn;
+ //0x0A变倍加 | 0x0B变倍减 | 0x0F复位|0xFF停止|
+ private byte ActionCode;
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomToLevelDTO.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomToLevelDTO.java
new file mode 100644
index 0000000..99214c7
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/ZoomToLevelDTO.java
@@ -0,0 +1,28 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+/**
+ * 变倍到指定倍数
+ *
+ * @author liusuyi
+ * @date 2024年10月26日9:02
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+public class ZoomToLevelDTO {
+ private String boxSn;
+ @Min(value = 1, message = "范围level 最小值为 1")
+ @Max(value = 200, message = "范围level 最大值为 200")
+ private byte level;
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCmd.java
similarity index 90%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCmd.java
index 5061ed9..cbd9b37 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/BaseCmd.java
@@ -4,7 +4,7 @@
import lombok.Data;
@Data
-public abstract class BaseCommand {
+public abstract class BaseCmd {
private short dataHeader; // 帧头
private short dataLength; // 数据长度
private byte[] boxSn; // 云盒编号
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCmd.java
similarity index 86%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCmd.java
index 1509fd5..46be995 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/PointFlyCmd.java
@@ -1,13 +1,13 @@
package com.ard.tianyu.netty.command;// PointFlyCommand.java
import io.netty.buffer.ByteBuf;
-public class PointFlyCommand extends BaseCommand {
+public class PointFlyCmd extends BaseCmd {
private double longitude;
private double latitude;
private float height;
private float speed;
- public PointFlyCommand(double longitude, double latitude, float height, float speed) {
+ public PointFlyCmd(double longitude, double latitude, float height, float speed) {
this.longitude = longitude;
this.latitude = latitude;
this.height = height;
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCmd.java
similarity index 87%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCmd.java
index da22f62..19a657b 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.camera;
import com.ard.tianyu.model.dto.camera.CameraModeDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,13 +12,13 @@
* @date 2024年10月25日14:44
**/
@Data
-public class CameraModeCommand extends BaseCommand {
+public class CameraModeCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x22; // 动作编号
private final byte actionParam; // 动作参数
- public CameraModeCommand(CameraModeDTO cameraModeDTO) {
+ public CameraModeCmd(CameraModeDTO cameraModeDTO) {
setDataHeader((short) 0x7479);
setDataLength((short) 19);
setBoxSn(cameraModeDTO.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCmd.java
similarity index 74%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCmd.java
index 6311b4f..584fad3 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCmd.java
@@ -1,7 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.model.dto.camera.CameraModeDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,13 +11,13 @@
* @date 2024年10月25日14:44
**/
@Data
-public class CameraModeReplyCommand extends BaseCommand {
+public class CameraModeReplyCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x22; // 动作编号
private final byte result; // 执行结果
private final Integer errorCode; // 错误码
- public CameraModeReplyCommand(String boxSn,Byte result,Integer errorCode) {
+ public CameraModeReplyCmd(String boxSn, Byte result, Integer errorCode) {
setDataHeader((short) 0x6A77);
//setDataLength((short) 18);
setCmdCode((byte) 0xD1);
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCmd.java
similarity index 85%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCmd.java
index fb475fc..094d5db 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.camera;
import com.ard.tianyu.model.dto.camera.CapturePicDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,12 +12,12 @@
* @date 2024年10月25日14:44
**/
@Data
-public class CapturePicCommand extends BaseCommand {
+public class CapturePicCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode=0x23; // 动作编号
- public CapturePicCommand(CapturePicDTO captureDto) {
+ public CapturePicCmd(CapturePicDTO captureDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
setBoxSn(captureDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCmd.java
similarity index 78%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCmd.java
index aa3b550..11f5b9e 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -11,13 +11,13 @@
* @date 2024年10月25日14:44
**/
@Data
-public class CapturePicReplyCommand extends BaseCommand {
+public class CapturePicReplyCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x23; // 动作编号
private final byte result; // 执行结果
private final Integer errorCode; // 错误码
- public CapturePicReplyCommand(String boxSn,Byte result,Integer errorCode) {
+ public CapturePicReplyCmd(String boxSn, Byte result, Integer errorCode) {
setDataHeader((short) 0x6A77);
//setDataLength((short) 18);
setCmdCode((byte) 0xD1);
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/PhotoReturnToggleCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/PhotoReturnToggleCmd.java
new file mode 100644
index 0000000..5b30fc8
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/PhotoReturnToggleCmd.java
@@ -0,0 +1,38 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.PhotoReturnToggleDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 打开或关闭照片回传指令
+ *
+ * @author liusuyi
+ * @date 2024年10月25日14:44
+ **/
+@Data
+public class PhotoReturnToggleCmd extends BaseCmd {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x43; // 动作编号
+ private final byte actionParam;
+
+
+ public PhotoReturnToggleCmd(PhotoReturnToggleDTO photoReturnToggleDTO) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 19);
+ setBoxSn(photoReturnToggleDTO.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ this.actionParam = photoReturnToggleDTO.getActionParam();
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(encryptFlag); // 写入加密标志
+ out.writeByte(actionCode); // 写入动作编号
+ out.writeByte(actionParam); // 写入动作参数
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCmd.java
similarity index 85%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCmd.java
index 61ad79d..713233a 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.camera;
import com.ard.tianyu.model.dto.camera.RecordDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,12 +12,12 @@
* @date 2024年10月25日14:44
**/
@Data
-public class RecordStartCommand extends BaseCommand {
+public class RecordStartCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode=0x24; // 动作编号
- public RecordStartCommand(RecordDTO recordDto) {
+ public RecordStartCmd(RecordDTO recordDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
setBoxSn(recordDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCmd.java
similarity index 78%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCmd.java
index 6c12116..8434826 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -11,13 +11,13 @@
* @date 2024年10月25日14:44
**/
@Data
-public class RecordStartReplyCommand extends BaseCommand {
+public class RecordStartReplyCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x24; // 动作编号
private final byte result; // 执行结果
private final Integer errorCode; // 错误码
- public RecordStartReplyCommand(String boxSn, Byte result, Integer errorCode) {
+ public RecordStartReplyCmd(String boxSn, Byte result, Integer errorCode) {
setDataHeader((short) 0x6A77);
//setDataLength((short) 18);
setCmdCode((byte) 0xD1);
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCmd.java
similarity index 85%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCmd.java
index e30d328..1ac8be2 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.camera;
import com.ard.tianyu.model.dto.camera.RecordDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,12 +12,12 @@
* @date 2024年10月25日14:44
**/
@Data
-public class RecordStopCommand extends BaseCommand {
+public class RecordStopCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x25; // 动作编号
- public RecordStopCommand(RecordDTO recordDto) {
+ public RecordStopCmd(RecordDTO recordDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
setBoxSn(recordDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCmd.java
similarity index 78%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCmd.java
index b11bee7..1b5e749 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -11,13 +11,13 @@
* @date 2024年10月25日14:44
**/
@Data
-public class RecordStopReplyCommand extends BaseCommand {
+public class RecordStopReplyCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x25; // 动作编号
private final byte result; // 执行结果
private final Integer errorCode; // 错误码
- public RecordStopReplyCommand(String boxSn, Byte result, Integer errorCode) {
+ public RecordStopReplyCmd(String boxSn, Byte result, Integer errorCode) {
setDataHeader((short) 0x6A77);
//setDataLength((short) 18);
setCmdCode((byte) 0xD1);
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchCameraCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchCameraCmd.java
new file mode 100644
index 0000000..43191aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchCameraCmd.java
@@ -0,0 +1,34 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.SwitchCameraDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+
+/**
+ * 切换摄像机指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日11:18
+ **/
+public class SwitchCameraCmd extends BaseCmd {
+
+ private final byte actionParam; // 动作参数
+
+ public SwitchCameraCmd(SwitchCameraDTO switchCameraDTO) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 19);
+ setBoxSn(switchCameraDTO.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ this.actionParam = switchCameraDTO.getActionParam();
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(0x00); // 写入加密标志
+ out.writeByte(0x27); // 写入动作编号
+ out.writeByte(actionParam); // 写入动作参数
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchSourceCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchSourceCmd.java
new file mode 100644
index 0000000..255453c
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/SwitchSourceCmd.java
@@ -0,0 +1,35 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.SwitchCameraDTO;
+import com.ard.tianyu.model.dto.camera.SwitchSourceDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+
+/**
+ * 切换摄像机指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日11:18
+ **/
+public class SwitchSourceCmd extends BaseCmd {
+
+ private final byte actionParam; // 动作参数
+
+ public SwitchSourceCmd(SwitchSourceDTO switchSourceDTO) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 19);
+ setBoxSn(switchSourceDTO.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ this.actionParam = switchSourceDTO.getActionParam();
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(0x00); // 写入加密标志
+ out.writeByte(0x26); // 写入动作编号
+ out.writeByte(actionParam); // 写入动作参数
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomCmd.java
similarity index 69%
copy from ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
copy to ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomCmd.java
index e30d328..9dbfef5 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomCmd.java
@@ -1,27 +1,28 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.model.dto.camera.RecordDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.model.dto.camera.ZoomDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
/**
- * 停止录像指令
+ * 变倍指令
*
* @author liusuyi
* @date 2024年10月25日14:44
**/
@Data
-public class RecordStopCommand extends BaseCommand {
+public class ZoomCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
- private final byte actionCode = 0x25; // 动作编号
+ private final byte actionCode; // 动作编号
- public RecordStopCommand(RecordDTO recordDto) {
+ public ZoomCmd(ZoomDTO zoomDTO) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
- setBoxSn(recordDto.getBoxSn().getBytes());
+ setBoxSn(zoomDTO.getBoxSn().getBytes());
setCmdCode((byte) 0xD1);
+ this.actionCode=zoomDTO.getActionCode();
}
public void encode(ByteBuf out) {
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomToLevelCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomToLevelCmd.java
new file mode 100644
index 0000000..da41e1c
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/ZoomToLevelCmd.java
@@ -0,0 +1,37 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.ZoomToLevelDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 变倍到指定倍数指令
+ *
+ * @author liusuyi
+ * @date 2024年10月25日14:44
+ **/
+@Data
+public class ZoomToLevelCmd extends BaseCmd {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x0D; // 动作编号
+ private final byte level; // 倍数
+
+ public ZoomToLevelCmd(ZoomToLevelDTO zoomToLevelDTO) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 19);
+ setBoxSn(zoomToLevelDTO.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ this.level = zoomToLevelDTO.getLevel();
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(encryptFlag); // 写入加密标志
+ out.writeByte(actionCode); // 写入动作编号
+ out.writeByte(level); // 写入变倍数值
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCmd.java
similarity index 88%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCmd.java
index 865b780..28f18de 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.control;
import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -13,14 +13,14 @@
*/
@Data
-public class AbsAngleControlCommand extends BaseCommand {
+public class AbsAngleControlCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = 0x09; // 动作编号
private final float pitch; // 俯仰
private final float yaw; // 平移
private final float roll; // 横滚
- public AbsAngleControlCommand(AbsAngleControlDTO absAngleControlDto) {
+ public AbsAngleControlCmd(AbsAngleControlDTO absAngleControlDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 30);
setBoxSn(absAngleControlDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCmd.java
similarity index 87%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCmd.java
index 69b61ce..f029444 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.control;
import com.ard.tianyu.model.dto.control.AngleControlDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -13,12 +13,12 @@
*/
@Data
-public class AngleControlCommand extends BaseCommand {
+public class AngleControlCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode; // 动作编号
private final byte rotationAngle; // 转动角度
- public AngleControlCommand(AngleControlDTO angleControlDto) {
+ public AngleControlCmd(AngleControlDTO angleControlDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 19);
setBoxSn(angleControlDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCmd.java
similarity index 90%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCmd.java
index f250e43..cc65839 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCmd.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.command.control;
import com.ard.tianyu.model.dto.control.SpeedControlDTO;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -13,7 +13,7 @@
*/
@Data
-public class SpeedControlCommand extends BaseCommand {
+public class SpeedControlCmd extends BaseCmd {
private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode = (byte) 0xF4; // 动作编号
private final float pitchSpeed; // 俯仰转速
@@ -22,7 +22,7 @@
private final short execTime = 200; // 执行时间
- public SpeedControlCommand(SpeedControlDTO speedControlDto) {
+ public SpeedControlCmd(SpeedControlDTO speedControlDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 32);
setBoxSn(speedControlDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/BoxPowerStatusReplyCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/BoxPowerStatusReplyCmd.java
new file mode 100644
index 0000000..8e3cf7c
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/BoxPowerStatusReplyCmd.java
@@ -0,0 +1,27 @@
+package com.ard.tianyu.netty.command.notice;
+
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 云盒开关机通知回复指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日11:54
+ **/
+@Data
+public class BoxPowerStatusReplyCmd extends BaseCmd {
+ private final byte status; // 时间戳
+
+ public BoxPowerStatusReplyCmd(byte status) {
+ setDataHeader((short) 0x6A77); // 设置帧头
+ setCmdCode((byte) 0x0A); // 设置指令编号
+ setDataLength((short) 17); // 数据长度
+ this.status = status;
+ }
+
+ public void encode(ByteBuf out) {
+
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/FlyWayEndReplyCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/FlyWayEndReplyCmd.java
new file mode 100644
index 0000000..79b875d
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/FlyWayEndReplyCmd.java
@@ -0,0 +1,32 @@
+package com.ard.tianyu.netty.command.notice;
+
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 航线结束通知回复指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日11:54
+ **/
+@Data
+public class FlyWayEndReplyCmd extends BaseCmd {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x2E; // 动作编号
+ private final byte result; // 执行结果
+ private final int errorCode; // 错误码
+
+ public FlyWayEndReplyCmd(String boxSn, byte result, int errorCode) {
+ setDataHeader((short) 0x6A77); // 设置帧头
+ setCmdCode((byte) 0x3D); // 设置指令编号
+ setDataLength((short) 23); // 数据长度
+ this.result = result;
+ this.errorCode = errorCode;
+ setBoxSn(boxSn.getBytes());
+ }
+
+ public void encode(ByteBuf out) {
+
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/UavReadyReplyCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/UavReadyReplyCmd.java
new file mode 100644
index 0000000..6ec47f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/notice/UavReadyReplyCmd.java
@@ -0,0 +1,36 @@
+package com.ard.tianyu.netty.command.notice;
+
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 无人机准备完成通知回复指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日11:54
+ **/
+@Data
+public class UavReadyReplyCmd extends BaseCmd {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x3D; // 动作编号
+ private final byte batteryPower; // 电池电量
+ private final double longitude; // 经度
+ private final double latitude; // 纬度
+ private final int altitude; // 海拔高度
+ public UavReadyReplyCmd(String boxSn,byte batteryPower,double longitude,double latitude,int altitude) {
+ setDataHeader((short) 0x6A77); // 设置帧头
+ setCmdCode((byte) 0x3D); // 设置指令编号
+ setDataLength((short) 39); // 数据长度
+
+ this.batteryPower = batteryPower;
+ this.longitude = longitude;
+ this.latitude = latitude;
+ this.altitude = altitude;
+ setBoxSn(boxSn.getBytes());
+ }
+
+ public void encode(ByteBuf out) {
+
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCmd.java
similarity index 78%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCmd.java
index 751ffe9..ed767cf 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCmd.java
@@ -1,17 +1,17 @@
package com.ard.tianyu.netty.command.real;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@Data
-public class SignalInfoCommand extends BaseCommand {
+public class SignalInfoCmd extends BaseCmd {
private int delayTime;
private TelemetryDataPB.SignalInfo signalInfo;
// 构造函数
- public SignalInfoCommand(TelemetryDataPB.SignalInfo signalInfo) {
+ public SignalInfoCmd(TelemetryDataPB.SignalInfo signalInfo) {
setDataHeader((short) 0x6A77); // 设置帧头
// setDataLength((short) (1 + uavState.toByteArray().length)); // 数据长度
setCmdCode((byte) 0x0C); // 设置命令编号
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCmd.java
similarity index 81%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCmd.java
index 7df96fb..ae78dbe 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCmd.java
@@ -1,14 +1,14 @@
package com.ard.tianyu.netty.command.real;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
-public class UavStateCommand extends BaseCommand {
+public class UavStateCmd extends BaseCmd {
private TelemetryDataPB.UavState uavState; // ProtoBuf 数据类
// 构造函数
- public UavStateCommand(TelemetryDataPB.UavState uavState) {
+ public UavStateCmd(TelemetryDataPB.UavState uavState) {
setDataHeader((short) 0x6A77); // 设置帧头
// setDataLength((short) (1 + uavState.toByteArray().length)); // 数据长度
setCmdCode((byte) 0xA8); // 设置命令编号
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCmd.java
similarity index 80%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCmd.java
index c520cd3..e2a8189 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.real;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
@@ -10,10 +10,10 @@
* @author liusuyi
* @date 2024年10月23日9:33
**/
-public class UavTelemetryDataCommand extends BaseCommand {
+public class UavTelemetryDataCmd extends BaseCmd {
private TelemetryDataPB.TelemetryData telemetryData;
// 构造函数
- public UavTelemetryDataCommand(TelemetryDataPB.TelemetryData telemetryData) {
+ public UavTelemetryDataCmd(TelemetryDataPB.TelemetryData telemetryData) {
setDataHeader((short) 0x6A77); // 设置帧头
// setDataLength((short) (1 + uavState.toByteArray().length)); // 数据长度
setCmdCode((byte) 0xA9); // 设置命令编号
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCmd.java
similarity index 80%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCmd.java
index bca0ea3..25ebf06 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.register;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
@@ -9,11 +9,11 @@
* @author 刘苏义
* @date 2024/10/22 16:36
*/
-public class HeartbeatCommand extends BaseCommand {
+public class HeartbeatCmd extends BaseCmd {
private final long timestamp;
- public HeartbeatCommand(long timestamp) {
+ public HeartbeatCmd(long timestamp) {
setDataHeader((short)0x7479);
setDataLength((short)0x09);
setCmdCode((byte)0x02);
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCmd.java
similarity index 83%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCmd.java
index 19dfa4d..cb29a9e 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.register;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -13,11 +13,11 @@
*/
@Data
@NoArgsConstructor
-public class HeartbeatReplyCommand extends BaseCommand {
+public class HeartbeatReplyCmd extends BaseCmd {
private long timestamp; // 时间戳
- public HeartbeatReplyCommand(long timestamp) {
+ public HeartbeatReplyCmd(long timestamp) {
setDataHeader((short) 0x6A77); // 设置帧头
setCmdCode((byte) 0x02); // 设置指令编号
setDataLength((short) (13)); // 数据长度 (指令编号 + 时间戳)
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCmd.java
similarity index 84%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCmd.java
index dfebbfb..f6a8f9d 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.register;// RegisterMessage.java
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
@@ -9,11 +9,11 @@
* @author 刘苏义
* @date 2024/10/22 16:36
*/
-public class RegisterCommand extends BaseCommand {
+public class RegisterCmd extends BaseCmd {
private int userId;
private byte[] accessToken;
- public RegisterCommand(int userId, byte[] accessToken) {
+ public RegisterCmd(int userId, byte[] accessToken) {
setDataHeader((short) 0x7479); // 设置帧头
setDataLength((short) (5 + accessToken.length)); // 数据长度
setCmdCode((byte) 0x01); // 设置命令编号
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCmd.java
similarity index 82%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCmd.java
index 159b2da..e81692b 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.register;// RegisterMessage.java
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -11,10 +11,10 @@
* @date 2024/10/22 16:36
*/
@Data
-public class RegisterReplyCommand extends BaseCommand {
+public class RegisterReplyCmd extends BaseCmd {
private byte success;
- public RegisterReplyCommand(byte success) {
+ public RegisterReplyCmd(byte success) {
setDataHeader((short) 0x6A77); // 设置帧头
setDataLength((short) (6)); // 数据长度
setCmdCode((byte) 0x01); // 设置命令编号
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCmd.java
similarity index 87%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCmd.java
index ec2b494..cf0fabf 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.register;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,13 +12,13 @@
*/
@Data
-public class UavInitInfoCommand extends BaseCommand {
+public class UavInitInfoCmd extends BaseCmd {
private final byte encryptFlag; // 加密标志
private final byte actionCode; // 动作编号
private final byte result; // 执行结果
- public UavInitInfoCommand(byte[] boxSn) {
+ public UavInitInfoCmd(byte[] boxSn) {
setDataHeader((short) 0x7479);
setDataLength((short) 19);
setCmdCode((byte) 0xD1);
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitReplyCmd.java
similarity index 68%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitReplyCmd.java
index 25de8fb..938370e 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitReplyCmd.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.register;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -12,19 +12,17 @@
* @date 2024/10/24 17:18
*/
@Data
-public class UavReadyNotificationCommand extends BaseCommand {
+public class UavInitReplyCmd extends BaseCmd {
- private byte actionCode;
+ private byte actionCode = 0x42;
private TelemetryDataPB.UavInitInfo uavInitInfo;
- public UavReadyNotificationCommand(String boxSn, TelemetryDataPB.UavInitInfo uavInitInfo, byte actionCode) {
+ public UavInitReplyCmd(String boxSn, TelemetryDataPB.UavInitInfo uavInitInfo) {
setDataHeader((short) 0x6A77); // 设置帧头
// setDataLength((short) (1 + uavState.toByteArray().length)); // 数据长度
setBoxSn(boxSn.getBytes());
setCmdCode((byte) 0xD1); // 设置命令编号
-
this.uavInitInfo = uavInitInfo;
- this.actionCode = actionCode;
}
@Override
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/handler/ClientHandler.java b/ard-work/src/main/java/com/ard/tianyu/netty/handler/ClientHandler.java
index f4b544a..1bef005 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/handler/ClientHandler.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/handler/ClientHandler.java
@@ -1,7 +1,7 @@
package com.ard.tianyu.netty.handler;
import com.ard.tianyu.netty.TyNettyTcpClient;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import com.ard.tianyu.service.ITyService;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
@@ -18,7 +18,7 @@
@Component
@Slf4j
@ChannelHandler.Sharable
-public class ClientHandler extends SimpleChannelInboundHandler<BaseCommand> {
+public class ClientHandler extends SimpleChannelInboundHandler<BaseCmd> {
@Resource
private ITyService tyService;
@@ -27,7 +27,7 @@
private TyNettyTcpClient tyNettyTcpClient;
@Override
- public void channelRead0(ChannelHandlerContext ctx, BaseCommand command) {
+ public void channelRead0(ChannelHandlerContext ctx, BaseCmd command) {
InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
String host = ipSocket.getHostString();
int port = ipSocket.getPort();
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java b/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java
index 689ccc8..db9c7d1 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java
@@ -1,16 +1,19 @@
package com.ard.tianyu.netty.handler;// MessageProtocolDecoder.java
import com.ard.tianyu.netty.command.*;
-import com.ard.tianyu.netty.command.camera.CameraModeReplyCommand;
-import com.ard.tianyu.netty.command.camera.CapturePicReplyCommand;
-import com.ard.tianyu.netty.command.camera.RecordStartReplyCommand;
-import com.ard.tianyu.netty.command.camera.RecordStopReplyCommand;
-import com.ard.tianyu.netty.command.real.SignalInfoCommand;
-import com.ard.tianyu.netty.command.real.UavStateCommand;
-import com.ard.tianyu.netty.command.real.UavTelemetryDataCommand;
-import com.ard.tianyu.netty.command.register.HeartbeatReplyCommand;
-import com.ard.tianyu.netty.command.register.RegisterReplyCommand;
-import com.ard.tianyu.netty.command.register.UavReadyNotificationCommand;
+import com.ard.tianyu.netty.command.camera.CameraModeReplyCmd;
+import com.ard.tianyu.netty.command.camera.CapturePicReplyCmd;
+import com.ard.tianyu.netty.command.camera.RecordStartReplyCmd;
+import com.ard.tianyu.netty.command.camera.RecordStopReplyCmd;
+import com.ard.tianyu.netty.command.notice.BoxPowerStatusReplyCmd;
+import com.ard.tianyu.netty.command.notice.FlyWayEndReplyCmd;
+import com.ard.tianyu.netty.command.notice.UavReadyReplyCmd;
+import com.ard.tianyu.netty.command.real.SignalInfoCmd;
+import com.ard.tianyu.netty.command.real.UavStateCmd;
+import com.ard.tianyu.netty.command.real.UavTelemetryDataCmd;
+import com.ard.tianyu.netty.command.register.HeartbeatReplyCmd;
+import com.ard.tianyu.netty.command.register.RegisterReplyCmd;
+import com.ard.tianyu.netty.command.register.UavInitReplyCmd;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
@@ -40,33 +43,38 @@
return;
}
byte cmdCode = in.readByte();
- BaseCommand baseCommand = null;
+ BaseCmd baseCmd = null;
switch (cmdCode) {
case 0x01:
byte success = in.readByte(); // 读取是否成功
log.warn("注册回复: {}", success == 0x01 ? "成功" : "失败");
- baseCommand = new RegisterReplyCommand(success);
+ baseCmd = new RegisterReplyCmd(success);
break;
case 0x02:
long timestamp = in.readLong(); // 读取时间戳
- baseCommand = new HeartbeatReplyCommand(timestamp);
+ baseCmd = new HeartbeatReplyCmd(timestamp);
log.debug("心跳回复: 时间戳 {}", timestamp);
break;
case 0x03:
case 0x04:
break;
+ case 0x0A:
+ byte status = in.readByte();
+ baseCmd = new BoxPowerStatusReplyCmd(status);
+ log.debug("云盒开机/关机通知回复: 状态 {}", String.format("0x%02X", status & 0xFF));
+ break;
case (byte) 0xA8:
byte[] uavStatus = new byte[dataLength - 1];
in.readBytes(uavStatus); // 读取 ProtoBuf 数据
TelemetryDataPB.UavState uavState = TelemetryDataPB.UavState.parseFrom(uavStatus);
- baseCommand = new UavStateCommand(uavState);
+ baseCmd = new UavStateCmd(uavState);
log.debug("无人机状态数据: {}", uavState.getBoxSn());
break;
case (byte) 0xA9:
byte[] uavData = new byte[dataLength - 1];
in.readBytes(uavData);
TelemetryDataPB.TelemetryData telemetryData = TelemetryDataPB.TelemetryData.parseFrom(uavData);
- baseCommand = new UavTelemetryDataCommand(telemetryData);
+ baseCmd = new UavTelemetryDataCmd(telemetryData);
log.debug("遥测数据: {}", telemetryData.getBoxSn());
break;
case (byte) 0x0C:
@@ -77,7 +85,7 @@
uavData = new byte[dataLength - 20];
in.readBytes(uavData);
TelemetryDataPB.SignalInfo signalInfo = TelemetryDataPB.SignalInfo.parseFrom(uavData);
- baseCommand = new SignalInfoCommand(signalInfo);
+ baseCmd = new SignalInfoCmd(signalInfo);
log.debug("信道质量数据: {}", delayTime);
break;
case (byte) 0xD1:
@@ -90,7 +98,7 @@
uavData = new byte[15];
in.readBytes(uavData);
String boxSn = new String(uavData);
- baseCommand = new CameraModeReplyCommand(boxSn, result, errorCode);
+ baseCmd = new CameraModeReplyCmd(boxSn, result, errorCode);
log.debug("设置相机模式回复: {}", boxSn);
break;
case 0x23:
@@ -99,7 +107,7 @@
uavData = new byte[15];
in.readBytes(uavData);
boxSn = new String(uavData);
- baseCommand = new CapturePicReplyCommand(boxSn, result, errorCode);
+ baseCmd = new CapturePicReplyCmd(boxSn, result, errorCode);
log.debug("拍照回复: {}", boxSn);
break;
case 0x24:
@@ -108,7 +116,7 @@
uavData = new byte[15];
in.readBytes(uavData);
boxSn = new String(uavData);
- baseCommand = new RecordStartReplyCommand(boxSn, result, errorCode);
+ baseCmd = new RecordStartReplyCmd(boxSn, result, errorCode);
log.debug("开始录像回复: {}", boxSn);
break;
case 0x25:
@@ -117,8 +125,28 @@
uavData = new byte[15];
in.readBytes(uavData);
boxSn = new String(uavData);
- baseCommand = new RecordStopReplyCommand(boxSn, result, errorCode);
+ baseCmd = new RecordStopReplyCmd(boxSn, result, errorCode);
log.debug("停止录像回复: {}", boxSn);
+ break;
+ case 0x2E:
+ result = in.readByte();
+ errorCode = in.readInt();
+ uavData = new byte[15];
+ in.readBytes(uavData);
+ boxSn = new String(uavData);
+ baseCmd = new FlyWayEndReplyCmd(boxSn, result, errorCode);
+ log.debug("航线结束通知回复: {}", boxSn);
+ break;
+ case 0x3D:
+ byte batteryPower = in.readByte();
+ double longitude = in.readDouble();
+ double latitude = in.readDouble();
+ int altitude = in.readInt();
+ uavData = new byte[dataLength - 24];
+ in.readBytes(uavData);
+ boxSn = new String(uavData);
+ baseCmd = new UavReadyReplyCmd(boxSn, batteryPower, longitude, latitude, altitude);
+ log.debug("无人机准备完成通知回复: 电池电量 {}", String.format("0x%02X", batteryPower & 0xFF));
break;
case 0x42:
byte[] uavData1 = new byte[dataLength - 18];
@@ -127,7 +155,7 @@
in.readBytes(uavData2);
boxSn = new String(uavData2);
TelemetryDataPB.UavInitInfo uavInitInfo = TelemetryDataPB.UavInitInfo.parseFrom(uavData1);
- baseCommand = new UavReadyNotificationCommand(boxSn, uavInitInfo, actionCode);
+ baseCmd = new UavInitReplyCmd(boxSn, uavInitInfo);
log.debug("无人机初始化数据: {}", boxSn);
break;
default:
@@ -144,8 +172,8 @@
String.format("0x%02X", actionCode & 0xFF));//String.format("0x%02X", cmdCode & 0xFF)
}
- if (baseCommand != null) {
- out.add(baseCommand);
+ if (baseCmd != null) {
+ out.add(baseCmd);
}
}
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolEncoder.java b/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolEncoder.java
index e75d256..c4dca37 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolEncoder.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolEncoder.java
@@ -1,17 +1,15 @@
package com.ard.tianyu.netty.handler;// MessageProtocolEncoder.java
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import lombok.extern.slf4j.Slf4j;
-import java.util.Arrays;
-
@Slf4j
-public class MessageProtocolEncoder extends MessageToByteEncoder<BaseCommand> {
+public class MessageProtocolEncoder extends MessageToByteEncoder<BaseCmd> {
@Override
- protected void encode(ChannelHandlerContext ctx, BaseCommand command, ByteBuf out) throws Exception {
+ protected void encode(ChannelHandlerContext ctx, BaseCmd command, ByteBuf out) throws Exception {
command.encode(out); // 编码具体负载
// 打印
diff --git a/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java b/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
index 471f873..d909b47 100644
--- a/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
+++ b/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
@@ -3,9 +3,7 @@
import com.ard.tianyu.model.dto.BoxHistoryDTO;
import com.ard.tianyu.model.dto.BoxPhotosDTO;
import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.CameraModeDTO;
-import com.ard.tianyu.model.dto.camera.CapturePicDTO;
-import com.ard.tianyu.model.dto.camera.RecordDTO;
+import com.ard.tianyu.model.dto.camera.*;
import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
import com.ard.tianyu.model.dto.control.AngleControlDTO;
import com.ard.tianyu.model.dto.control.SpeedControlDTO;
@@ -13,7 +11,7 @@
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
import com.ard.tianyu.model.receiver.*;
-import com.ard.tianyu.netty.command.BaseCommand;
+import com.ard.tianyu.netty.command.BaseCmd;
import com.dtflys.forest.annotation.Var;
import java.util.List;
@@ -99,6 +97,31 @@
void record(RecordDTO recordDto);
/**
+ * 变倍
+ */
+ void zoom(ZoomDTO zoomDTO);
+
+ /**
+ * 变倍到指定倍数
+ */
+ void zoomToLevel(ZoomToLevelDTO zoomToLevelDTO);
+
+ /**
+ * 切换摄像头
+ */
+ void switchCamera(SwitchCameraDTO switchCameraDTO);
+
+ /**
+ * 切换视频源
+ */
+ void switchSource(SwitchSourceDTO switchSourceDTO);
+
+ /**
+ * 打开或关闭照片回传
+ */
+ void photoReturnToggle(PhotoReturnToggleDTO photoReturnToggleDTO);
+
+ /**
* 获取无人机状态
*/
UavState getUavState(String boxSn);
@@ -116,5 +139,5 @@
/**
* 解析天宇服务端发来的消息
*/
- void processMessage(String key, BaseCommand tyMessage);
+ void processMessage(String key, BaseCmd tyMessage);
}
diff --git a/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java b/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
index c056263..637d878 100644
--- a/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
@@ -8,9 +8,7 @@
import com.ard.tianyu.model.dto.BoxHistoryDTO;
import com.ard.tianyu.model.dto.BoxPhotosDTO;
import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.CameraModeDTO;
-import com.ard.tianyu.model.dto.camera.CapturePicDTO;
-import com.ard.tianyu.model.dto.camera.RecordDTO;
+import com.ard.tianyu.model.dto.camera.*;
import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
import com.ard.tianyu.model.dto.control.AngleControlDTO;
import com.ard.tianyu.model.dto.control.SpeedControlDTO;
@@ -24,12 +22,15 @@
import com.ard.tianyu.netty.command.*;
import com.ard.tianyu.netty.TyNettyTcpClient;
import com.ard.tianyu.netty.command.camera.*;
-import com.ard.tianyu.netty.command.control.AbsAngleControlCommand;
-import com.ard.tianyu.netty.command.control.AngleControlCommand;
-import com.ard.tianyu.netty.command.control.SpeedControlCommand;
-import com.ard.tianyu.netty.command.real.SignalInfoCommand;
-import com.ard.tianyu.netty.command.real.UavStateCommand;
-import com.ard.tianyu.netty.command.real.UavTelemetryDataCommand;
+import com.ard.tianyu.netty.command.control.AbsAngleControlCmd;
+import com.ard.tianyu.netty.command.control.AngleControlCmd;
+import com.ard.tianyu.netty.command.control.SpeedControlCmd;
+import com.ard.tianyu.netty.command.notice.BoxPowerStatusReplyCmd;
+import com.ard.tianyu.netty.command.notice.FlyWayEndReplyCmd;
+import com.ard.tianyu.netty.command.notice.UavReadyReplyCmd;
+import com.ard.tianyu.netty.command.real.SignalInfoCmd;
+import com.ard.tianyu.netty.command.real.UavStateCmd;
+import com.ard.tianyu.netty.command.real.UavTelemetryDataCmd;
import com.ard.tianyu.netty.command.register.*;
import com.ard.tianyu.service.ITyService;
import io.netty.channel.Channel;
@@ -135,15 +136,14 @@
@Override
public void registerMessage() {
AccessTokenReceiver tyToken = tyConfiguration.getAccessToken();
- RegisterCommand registerMessage = new RegisterCommand(tyToken.getCompanyId(), tyToken.getAccessToken().getBytes());
+ RegisterCmd registerMessage = new RegisterCmd(tyToken.getCompanyId(), tyToken.getAccessToken().getBytes());
this.sendMessage(tyConfiguration.getIpPort(), registerMessage);
}
-
/**
* 发送消息
*/
- public void sendMessage(String key, BaseCommand msg) {
+ public void sendMessage(String key, BaseCmd msg) {
try {
ChannelFuture future = TyNettyTcpClient.channels.get(key).getChannelFuture();
Channel channel = future.channel();
@@ -166,7 +166,7 @@
*/
@Override
public void angleControl(AngleControlDTO angleControlDto) {
- AngleControlCommand controlAngleCommand = new AngleControlCommand(angleControlDto);
+ AngleControlCmd controlAngleCommand = new AngleControlCmd(angleControlDto);
this.sendMessage(tyConfiguration.getIpPort(), controlAngleCommand);
}
@@ -175,7 +175,7 @@
*/
@Override
public void absAngleControl(AbsAngleControlDTO absAngleControlDto) {
- AbsAngleControlCommand absAngleControlCommand = new AbsAngleControlCommand(absAngleControlDto);
+ AbsAngleControlCmd absAngleControlCommand = new AbsAngleControlCmd(absAngleControlDto);
this.sendMessage(tyConfiguration.getIpPort(), absAngleControlCommand);
}
@@ -184,7 +184,7 @@
*/
@Override
public void speedControl(SpeedControlDTO speedControlDto) {
- SpeedControlCommand speedControlCommand = new SpeedControlCommand(speedControlDto);
+ SpeedControlCmd speedControlCommand = new SpeedControlCmd(speedControlDto);
this.sendMessage(tyConfiguration.getIpPort(), speedControlCommand);
}
@@ -193,7 +193,7 @@
*/
@Override
public void updateCameraMode(CameraModeDTO cameraModeDTO) {
- CameraModeCommand cameraModeCommand = new CameraModeCommand(cameraModeDTO);
+ CameraModeCmd cameraModeCommand = new CameraModeCmd(cameraModeDTO);
this.sendMessage(tyConfiguration.getIpPort(), cameraModeCommand);
}
@@ -202,8 +202,8 @@
*/
@Override
public void capturePic(CapturePicDTO capturePicDto) {
- updateCameraMode(CameraModeDTO.builder().boxSn(capturePicDto.getBoxSn()).actionParam((byte)0x01).build());
- CapturePicCommand capturePicCommand = new CapturePicCommand(capturePicDto);
+ updateCameraMode(CameraModeDTO.builder().boxSn(capturePicDto.getBoxSn()).actionParam((byte) 0x01).build());
+ CapturePicCmd capturePicCommand = new CapturePicCmd(capturePicDto);
this.sendMessage(tyConfiguration.getIpPort(), capturePicCommand);
}
@@ -212,14 +212,59 @@
*/
@Override
public void record(RecordDTO recordDto) {
- BaseCommand baseCommand;
+ BaseCmd baseCmd;
if (recordDto.getIsRecord()) {
- updateCameraMode(CameraModeDTO.builder().boxSn(recordDto.getBoxSn()).actionParam((byte)0x02).build());
- baseCommand = new RecordStartCommand(recordDto);
+ updateCameraMode(CameraModeDTO.builder().boxSn(recordDto.getBoxSn()).actionParam((byte) 0x02).build());
+ baseCmd = new RecordStartCmd(recordDto);
} else {
- baseCommand = new RecordStopCommand(recordDto);
+ baseCmd = new RecordStopCmd(recordDto);
}
- this.sendMessage(tyConfiguration.getIpPort(), baseCommand);
+ this.sendMessage(tyConfiguration.getIpPort(), baseCmd);
+ }
+
+ /**
+ * 变倍
+ */
+ @Override
+ public void zoom(ZoomDTO zoomDTO) {
+ ZoomCmd zoomCommand = new ZoomCmd(zoomDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), zoomCommand);
+ }
+
+ /**
+ * 变倍到指定倍数
+ */
+ @Override
+ public void zoomToLevel(ZoomToLevelDTO zoomToLevelDTO) {
+ ZoomToLevelCmd zoomToLevelCommand = new ZoomToLevelCmd(zoomToLevelDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), zoomToLevelCommand);
+ }
+
+ /**
+ * 切换摄像头
+ */
+ @Override
+ public void switchCamera(SwitchCameraDTO switchCameraDTO) {
+ SwitchCameraCmd switchCameraCmd = new SwitchCameraCmd(switchCameraDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), switchCameraCmd);
+ }
+
+ /**
+ * 切换视频源
+ */
+ @Override
+ public void switchSource(SwitchSourceDTO switchSourceDTO) {
+ SwitchSourceCmd switchSourceCmd = new SwitchSourceCmd(switchSourceDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), switchSourceCmd);
+ }
+
+ /**
+ * 打开或关闭照片回传
+ */
+ @Override
+ public void photoReturnToggle(PhotoReturnToggleDTO photoReturnToggleDTO) {
+ PhotoReturnToggleCmd photoReturnToggleCmd = new PhotoReturnToggleCmd(photoReturnToggleDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), photoReturnToggleCmd);
}
/**
@@ -246,14 +291,17 @@
return UavSignalInfoCache.getUavSignalInfo(boxSn);
}
+ /**
+ * 处理天宇服务器返回的消息
+ */
@Override
- public void processMessage(String key, BaseCommand tyCommand) {
+ public void processMessage(String key, BaseCmd tyCommand) {
byte cmdCode = tyCommand.getCmdCode();
switch (cmdCode) {
case 0x01:
// 处理心跳消息
- RegisterReplyCommand registerReplyCommand = (RegisterReplyCommand) tyCommand;
- log.info("收到注册消息-->处理注册消息{}", registerReplyCommand.getSuccess());
+ RegisterReplyCmd registerReplyCommand = (RegisterReplyCmd) tyCommand;
+ log.debug("收到注册消息-->处理注册消息:{}", registerReplyCommand.getSuccess());
if (registerReplyCommand.getSuccess() != 1) {
// 注册失败,重新注册
log.info("注册失败,重新注册");
@@ -262,8 +310,8 @@
break;
case 0x02:
// 处理注册消息
- HeartbeatReplyCommand heartbeatReplyCommand = (HeartbeatReplyCommand) tyCommand;
- log.debug("收到心跳消息-->处理心跳消息{}", heartbeatReplyCommand.getTimestamp());
+ HeartbeatReplyCmd heartbeatReplyCmd = (HeartbeatReplyCmd) tyCommand;
+ log.debug("收到心跳消息-->处理心跳消息:{}", heartbeatReplyCmd.getTimestamp());
break;
case 0x03:
// 处理订阅消息
@@ -271,62 +319,63 @@
case 0x04:
// 处理取消订阅消息
break;
+ case 0x0A:
+ // 处理云盒开关机通知消息
+ BoxPowerStatusReplyCmd boxPowerStatusReplyCmd = (BoxPowerStatusReplyCmd) tyCommand;
+ log.debug("收到云盒开关机通知消息-->状态:{}", boxPowerStatusReplyCmd.getStatus());
+ break;
case (byte) 0xA8:
// 处理无人机状态消息
log.debug("收到无人机状态消息-->无人机状态消息");
- UavStateCommand uavStateCommand = (UavStateCommand) tyCommand;
- UavState uavState = UavStateConverter.convertProtoToEntity(uavStateCommand.getUavState());
+ UavStateCmd uavStateCmd = (UavStateCmd) tyCommand;
+ UavState uavState = UavStateConverter.convertProtoToEntity(uavStateCmd.getUavState());
UavStateCache.putUavState(uavState);
break;
case (byte) 0xA9:
// 处理无人机遥测消息
log.debug("收到无人机遥测消息-->无人机遥测消息");
- UavTelemetryDataCommand uavTelemetryDataCommand = (UavTelemetryDataCommand) tyCommand;
- TelemetryData telemetryData = UavTelemetryDataConverter.convertProtoToEntity(uavTelemetryDataCommand.getTelemetryData());
+ UavTelemetryDataCmd uavTelemetryDataCmd = (UavTelemetryDataCmd) tyCommand;
+ TelemetryData telemetryData = UavTelemetryDataConverter.convertProtoToEntity(uavTelemetryDataCmd.getTelemetryData());
UavTelemetryDataCache.putUavTelemetryData(telemetryData);
break;
case (byte) 0x0C:
// 处理无人机信道质量数据
log.debug("收到无人机信道质量数据消息-->无人机信道质量数据消息");
- SignalInfoCommand signalInfoCommand = (SignalInfoCommand) tyCommand;
- SignalInfo signalInfo = UavSignalInfoConverter.convertProtoToEntity(signalInfoCommand.getSignalInfo());
+ SignalInfoCmd signalInfoCmd = (SignalInfoCmd) tyCommand;
+ SignalInfo signalInfo = UavSignalInfoConverter.convertProtoToEntity(signalInfoCmd.getSignalInfo());
UavSignalInfoCache.putUavSignalInfoCache(signalInfo);
break;
case (byte) 0xD1:
// 处理无人机
- if (tyCommand instanceof UavReadyNotificationCommand) {
- UavReadyNotificationCommand droneReadyNotificationCommand = (UavReadyNotificationCommand) tyCommand;
- if (droneReadyNotificationCommand.getActionCode() == (byte) 0x42) {
- UavInitInfoCommand uavInitCommand = new UavInitInfoCommand(droneReadyNotificationCommand.getBoxSn());
- this.sendMessage(tyConfiguration.getIpPort(), uavInitCommand);
- log.info("收到无人机初始化详情-回复防止再次发送");
- }
+ if (tyCommand instanceof UavInitReplyCmd) {
+ UavInitReplyCmd uavInitReplyCmd = (UavInitReplyCmd) tyCommand;
+ UavInitInfoCmd uavInitCommand = new UavInitInfoCmd(uavInitReplyCmd.getBoxSn());
+ this.sendMessage(tyConfiguration.getIpPort(), uavInitCommand);
+ log.info("收到无人机初始化详情-回复防止再次发送");
}
- if (tyCommand instanceof CameraModeReplyCommand) {
- CameraModeReplyCommand cameraModeReplyCommand = (CameraModeReplyCommand) tyCommand;
- if (cameraModeReplyCommand.getActionCode() == (byte) 0x22) {
- log.info("收到无人机设置相机模式回复:{} 错误码:{}", String.format("0x%02X", cameraModeReplyCommand.getResult() & 0xFF), cameraModeReplyCommand.getErrorCode());
- }
+ if (tyCommand instanceof UavReadyReplyCmd) {
+ UavReadyReplyCmd uavReadyReplyCmd = (UavReadyReplyCmd) tyCommand;
+ log.info("收到无人机准备完成通知,电池电量{} 经度{} 纬度{} 海拔{}",uavReadyReplyCmd.getBatteryPower(),uavReadyReplyCmd.getLongitude(),uavReadyReplyCmd.getLatitude(),uavReadyReplyCmd.getAltitude());
}
-
- if (tyCommand instanceof CapturePicReplyCommand) {
- CapturePicReplyCommand capturePicReplyCommand = (CapturePicReplyCommand) tyCommand;
- if (capturePicReplyCommand.getActionCode() == (byte) 0x23) {
- log.info("收到无人机拍照回复:{} 错误码:{}", String.format("0x%02X", capturePicReplyCommand.getResult() & 0xFF), capturePicReplyCommand.getErrorCode());
- }
+ if (tyCommand instanceof CameraModeReplyCmd) {
+ CameraModeReplyCmd cameraModeReplyCommand = (CameraModeReplyCmd) tyCommand;
+ log.info("收到无人机设置相机模式回复:{} 错误码:{}", String.format("0x%02X", cameraModeReplyCommand.getResult() & 0xFF), cameraModeReplyCommand.getErrorCode());
}
-
- if (tyCommand instanceof RecordStartReplyCommand) {
- RecordStartReplyCommand recordStartReplyCommand = (RecordStartReplyCommand) tyCommand;
- if (recordStartReplyCommand.getActionCode() == (byte) 0x24) {
- log.info("收到无人机开始录像回复:{} 错误码:{}", String.format("0x%02X", recordStartReplyCommand.getResult() & 0xFF), recordStartReplyCommand.getErrorCode());
- }
+ if (tyCommand instanceof FlyWayEndReplyCmd) {
+ FlyWayEndReplyCmd flyWayEndReplyCmd = (FlyWayEndReplyCmd) tyCommand;
+ log.info("收到无人机飞行结束通知:状态:{}",flyWayEndReplyCmd.getResult());
}
- if (tyCommand instanceof RecordStopReplyCommand) {
- RecordStopReplyCommand recordStopReplyCommand = (RecordStopReplyCommand) tyCommand;
- if (recordStopReplyCommand.getActionCode() == (byte) 0x25) {
- log.info("收到无人机停止录像回复:{} 错误码:{}", String.format("0x%02X", recordStopReplyCommand.getResult() & 0xFF), recordStopReplyCommand.getErrorCode());
- }
+ if (tyCommand instanceof CapturePicReplyCmd) {
+ CapturePicReplyCmd capturePicReplyCommand = (CapturePicReplyCmd) tyCommand;
+ log.info("收到无人机拍照回复:{} 错误码:{}", String.format("0x%02X", capturePicReplyCommand.getResult() & 0xFF), capturePicReplyCommand.getErrorCode());
+ }
+ if (tyCommand instanceof RecordStartReplyCmd) {
+ RecordStartReplyCmd recordStartReplyCommand = (RecordStartReplyCmd) tyCommand;
+ log.info("收到无人机开始录像回复:{} 错误码:{}", String.format("0x%02X", recordStartReplyCommand.getResult() & 0xFF), recordStartReplyCommand.getErrorCode());
+ }
+ if (tyCommand instanceof RecordStopReplyCmd) {
+ RecordStopReplyCmd recordStopReplyCommand = (RecordStopReplyCmd) tyCommand;
+ log.info("收到无人机停止录像回复:{} 错误码:{}", String.format("0x%02X", recordStopReplyCommand.getResult() & 0xFF), recordStopReplyCommand.getErrorCode());
}
break;
default:
@@ -339,7 +388,7 @@
public void sendHeartBeat() {
long timestamp = System.currentTimeMillis();
log.debug("定时向天宇发送⼼跳,时间戳{}", timestamp);
- HeartbeatCommand heartbeatMessage = new HeartbeatCommand(timestamp);
+ HeartbeatCmd heartbeatMessage = new HeartbeatCmd(timestamp);
this.sendMessage(tyConfiguration.getIpPort(), heartbeatMessage);
}
}
\ No newline at end of file
--
Gitblit v1.9.3