package com.example.agvcontroller.protocol;
|
|
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBufUtil;
|
|
import java.util.Objects;
|
|
/**
|
* AGV报文模型
|
* Created by vincent on 2023/3/10
|
*/
|
public class AgvPackage {
|
|
/**
|
* 源数据包缓冲区(引用)
|
*/
|
private ByteBuf sourceBuff;
|
|
/**
|
* 原始消息对应的16进制字符串
|
*/
|
private String sourceHexStr;
|
|
/**
|
* 消息头部
|
*/
|
private PacHeader header;
|
|
/**
|
* 消息体
|
*/
|
private PacBody body;
|
|
/**
|
* 消息的校正码
|
*/
|
private int validCode;
|
|
/**
|
* 是否为校验异常包
|
*/
|
private boolean errorPac;
|
|
/**
|
* 校验异常类型
|
*/
|
private PacErrorType pacErrorType;
|
|
public static AgvPackage valueOfEmpty() {
|
AgvPackage agvPackage = new AgvPackage();
|
agvPackage.setHeader(new PacHeader())
|
.setBody(new PacBody())
|
.setValidCode((short) 0)
|
.setErrorPac(false);
|
return agvPackage;
|
}
|
|
//public String toLogString() {
|
// StringBuilder pacSb = new StringBuilder();
|
// pacSb.append("AGV(").append(getHeader().getUniqueNo()).append(")")
|
// .append("上传")
|
// .append("[").append(getHeader().getProtocolType().getDes()).append("]消息.")
|
// .append("原始消息[").append(getSourceHexStr()).append("]");
|
// return pacSb.toString();
|
//}
|
|
public ByteBuf getSourceBuff() {
|
// 因为处理buffer时,总是希望拿到一个重置了readerIndex的buf
|
if (Objects.nonNull(this.sourceBuff)) {
|
this.sourceBuff.resetReaderIndex();
|
}
|
return this.sourceBuff;
|
}
|
|
public AgvPackage setSourceBuff(ByteBuf sourceBuff) {
|
this.sourceBuff = sourceBuff;
|
if (Cools.isEmpty(this.sourceHexStr)) {
|
this.sourceBuff.resetReaderIndex();
|
this.sourceHexStr = ByteBufUtil.hexDump(this.sourceBuff).toUpperCase();
|
this.sourceBuff.resetReaderIndex();
|
}
|
return this;
|
}
|
|
public PacHeader getHeader() {
|
return header;
|
}
|
|
public AgvPackage setHeader(PacHeader header) {
|
this.header = header;
|
return this;
|
}
|
|
public PacBody getBody() {
|
return body;
|
}
|
|
public AgvPackage setBody(PacBody body) {
|
this.body = body;
|
return this;
|
}
|
|
public int getValidCode() {
|
return validCode;
|
}
|
|
public AgvPackage setValidCode(int validCode) {
|
this.validCode = validCode;
|
return this;
|
}
|
|
public boolean isErrorPac() {
|
return errorPac;
|
}
|
|
public AgvPackage setErrorPac(boolean errorPac) {
|
this.errorPac = errorPac;
|
return this;
|
}
|
|
public String getSourceHexStr() {
|
return sourceHexStr;
|
}
|
|
public AgvPackage setSourceHexStr(String sourceHexStr) {
|
this.sourceHexStr = sourceHexStr;
|
return this;
|
}
|
|
public PacErrorType getPacErrorType() {
|
return pacErrorType;
|
}
|
|
public AgvPackage setPacErrorType(PacErrorType pacErrorType) {
|
this.pacErrorType = pacErrorType;
|
return this;
|
}
|
|
// public ByteBuf convert(ByteBuf byteBuf){
|
// byteBuf.writeByte(this.getHeader().getStartSymbol())
|
// .writeShort(this.getHeader().getContentLength())
|
// .writeByte(this.getHeader().getProtocolType().getCode())
|
// .writeBytes(this.getHeader().getUniqueNo().getBytes(AgvConstant.CHARSET_GBK))
|
// .writeByte(this.getHeader().getEncryptType().getCode())
|
// .writeBytes(this.getBody().getContent())
|
// .writeByte(this.getValidCode());
|
// // 计算并设置校验码
|
//// this.setValidCode(ValidUtil.caculateValidByteFromBuff(byteBuf));
|
// byteBuf.resetReaderIndex();
|
// byteBuf.writerIndex(byteBuf.readableBytes() - 1).writeByte(this.getValidCode());
|
// return byteBuf;
|
// }
|
|
}
|