liusuyi
2025-12-08 3e64fc031eb42fb66f78104d0ff0f6cf797db0f0
ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolDecoder.java
@@ -1,6 +1,7 @@
package com.ard.work.component.netty.handler;// MessageProtocolDecoder.java
import com.ard.common.utils.ByteUtils;
import com.ard.work.component.netty.command.camera.*;
import com.ard.work.component.netty.command.manual.*;
import com.ard.work.component.netty.command.wayline.*;
import com.ard.work.domain.dto.converter.realdata.UavSignalInfoConverter;
@@ -10,13 +11,8 @@
import com.ard.work.domain.dto.state.UavState;
import com.ard.work.domain.dto.telemetry.TelemetryData;
import com.ard.work.component.netty.command.BaseCmd;
import com.ard.work.component.netty.command.camera.CameraModeReplyCmd;
import com.ard.work.component.netty.command.camera.CapturePicReplyCmd;
import com.ard.work.component.netty.command.camera.RecordStartReplyCmd;
import com.ard.work.component.netty.command.camera.RecordStopReplyCmd;
import com.ard.work.component.netty.command.notice.BoxPowerStatusReplyCmd;
import com.ard.work.component.netty.command.notice.FlyWayEndReplyCmd;
import com.ard.work.component.netty.command.camera.PicUploadCompletedReplyCmd;
import com.ard.work.component.netty.command.notice.UavReadyReplyCmd;
import com.ard.work.component.netty.command.real.SignalInfoCmd;
import com.ard.work.component.netty.command.real.UavStateCmd;
@@ -32,6 +28,7 @@
import io.netty.handler.codec.ByteToMessageDecoder;
import lombok.extern.slf4j.Slf4j;
import java.nio.charset.StandardCharsets;
import java.util.List;
@Slf4j
@@ -78,8 +75,9 @@
                in.readBytes(boxSn);// 读取boxSn
                byte[] pic = new byte[dataLength - 49];
                in.readBytes(pic);// 读取原图地址
                String picPath = new String(pic, StandardCharsets.UTF_8);
                baseCmd = new PicUploadCompletedReplyCmd(longitude, latitude, timestamp, picLength, boxSn, pic);
                log.debug("图片上传完成通知回复: 图片长度 {}", picLength);
                log.warn("图片上传完成通知回复: 图片 {}", picPath);
                break;
            case 0x0A:
                byte status = in.readByte();
@@ -176,6 +174,8 @@
                return new EmergencyBrakeReplyCmd(boxSn, result, errorCode);
            case 0x39:
                return new PointControlReachedReplyCmd(boxSn, result, errorCode);
            case 0x3B:
                return new FlyRoundReplyCmd(boxSn, result, errorCode);
            case 0x22:
                return new CameraModeReplyCmd(boxSn, result, errorCode);
            case 0x23:
@@ -188,6 +188,8 @@
                return new FlyWayEndReplyCmd(boxSn, result, errorCode);
            // Special cases
            case 0x3D:
            case 0x40:
                return new FormatSdCardReplyCmd(boxSn, result, errorCode);
            case 0x42:
                return processSpecialD1ReplyCmd(in, actionCode, boxSn);
            // Add other cases...