package com.ard.tianyu.netty.command.wayline; import com.ard.tianyu.domain.dto.converter.wayline.PlanLineDataConverter; import com.ard.tianyu.domain.dto.wayline.PlanLineData; import com.ard.tianyu.domain.dto.wayline.WayLineUploadDTO; import com.ard.tianyu.netty.command.BaseCmd; import com.ard.tianyu.netty.protobuf.TelemetryDataPB; import io.netty.buffer.ByteBuf; /** * 上传航线指令 * * @author liusuyi * @date 2024年10月30日16:20 **/ public class WayLineUploadCmd extends BaseCmd { private final byte[] wayLineData; //动作参数 public WayLineUploadCmd(WayLineUploadDTO wayLineUploadDTO) { PlanLineData planLineData = wayLineUploadDTO.getWayLineData(); TelemetryDataPB.PlanLineData planLineDataPB = PlanLineDataConverter.convertEntityToProto(planLineData); this.wayLineData = planLineDataPB.toByteArray(); setDataHeader((short) 0x7479); setDataLength((short) (18 + wayLineData.length)); setBoxSn(wayLineUploadDTO.getBoxSn().getBytes()); setCmdCode((byte) 0xD1); } public void encode(ByteBuf out) { out.writeShort(getDataHeader()); // 写入数据头 out.writeShort(getDataLength()); // 写入数据长度 out.writeBytes(getBoxSn()); // 写入盒子SN out.writeByte(getCmdCode()); // 写入命令码 out.writeByte(0x00); // 写入加密标志 out.writeByte(0x10); // 写入动作编号 out.writeBytes(this.wayLineData); // 写入航线数据 } }