1. 增加传感器状态上报协议解析
This commit is contained in:
parent
e4270b51b8
commit
ea70b9416e
|
@ -4,6 +4,7 @@ import com.zjyr.beidouservice.common.CommonEnumHandler;
|
|||
import com.zjyr.beidouservice.common.impl.BeidouStatusName;
|
||||
import com.zjyr.beidouservice.common.impl.ControlCommandName;
|
||||
import com.zjyr.beidouservice.common.impl.SendStatusName;
|
||||
import com.zjyr.beidouservice.common.impl.SensorControlTunnelName;
|
||||
import com.zjyr.beidouservice.common.impl.SensorStatusName;
|
||||
import com.zjyr.beidouservice.common.impl.TelphoneStatusName;
|
||||
import com.zjyr.beidouservice.common.impl.WirelessStatusName;
|
||||
|
@ -11,6 +12,8 @@ import com.zjyr.beidouservice.pojo.vo.binary.BaseBinaryProtocol;
|
|||
import com.zjyr.beidouservice.pojo.vo.binary.ControllerStatus;
|
||||
import com.zjyr.beidouservice.pojo.vo.binary.MessageContent;
|
||||
import com.zjyr.beidouservice.pojo.vo.binary.SensorCotrolAck;
|
||||
import com.zjyr.beidouservice.pojo.vo.binary.SensorStatusAck;
|
||||
import com.zjyr.beidouservice.pojo.vo.binary.SensorStatusInfo;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufUtil;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -19,6 +22,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -109,6 +113,59 @@ public class YuanRongProtocolDecode extends ByteToMessageDecoder {
|
|||
.build());
|
||||
}
|
||||
case COMMAND_REPORT_QUERY_SENSOR -> {
|
||||
int nItems = buf.readByte();
|
||||
SensorStatusAck sensorAck = SensorStatusAck.builder().sensorStatus(new ArrayList<>()).build();
|
||||
|
||||
MessageContent<SensorStatusAck> msgCtx = MessageContent.<SensorStatusAck>builder().msgType(
|
||||
msgType).msgSize(msgSize).msgBody(sensorAck).build();
|
||||
|
||||
for (int i = 0; i < nItems; i++) {
|
||||
short tmInfo = buf.readShort();
|
||||
SensorControlTunnelName tn = CommonEnumHandler.codeOf(SensorControlTunnelName.class,
|
||||
buf.readByte());
|
||||
int cmdType = buf.readByte();
|
||||
short sa = buf.readShort();
|
||||
short sid = buf.readShort();
|
||||
int warrStatus = buf.readByte();
|
||||
byte[] emStatus = new byte[3];
|
||||
buf.readBytes(emStatus, 0, 3);
|
||||
byte[] speakerStatus = new byte[3];
|
||||
buf.readBytes(speakerStatus, 0, 3);
|
||||
int runStatus = buf.readByte();
|
||||
byte[] signale = new byte[5];
|
||||
buf.readBytes(signale, 0, 5);
|
||||
byte[] id = new byte[3];
|
||||
buf.readBytes(id, 0, 3);
|
||||
|
||||
SensorStatusInfo si = SensorStatusInfo.builder()
|
||||
.dtInfo(tmInfo)
|
||||
.tunnelName(tn)
|
||||
.command(cmdType)
|
||||
.startAddr(sa)
|
||||
.sensorId(sid)
|
||||
.warrningStatus(warrStatus)
|
||||
.emgryStatus(emStatus)
|
||||
.speakerStatus(speakerStatus)
|
||||
.runStatus(runStatus)
|
||||
.signalStrength(signale)
|
||||
.beidouId(id)
|
||||
.build();
|
||||
|
||||
sensorAck.getSensorStatus().add(si);
|
||||
}
|
||||
|
||||
list.add(BaseBinaryProtocol.<SensorStatusAck>builder()
|
||||
.msgLength(msgLength)
|
||||
.version(version)
|
||||
.recvMajorId(recvMajorId)
|
||||
.recvMinorId(recvMinorId)
|
||||
.sendMajorId(sendMajorId)
|
||||
.sendMinorId(sendMinorId)
|
||||
.cryptoType(cryptCytp)
|
||||
.timeStamp(timeStamp)
|
||||
.statusCode(statusCode)
|
||||
.msgContent(msgCtx)
|
||||
.build());
|
||||
}
|
||||
default -> log.error("Unsupport Command: {}({})", cmd, msgType);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package com.zjyr.beidouservice.pojo.vo.binary;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class SensorStatusAck {
|
||||
private List<SensorStatusInfo> sensorStatus;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.zjyr.beidouservice.pojo.vo.binary;
|
||||
|
||||
import com.zjyr.beidouservice.common.impl.SensorControlTunnelName;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class SensorStatusInfo {
|
||||
private Short dtInfo;
|
||||
private SensorControlTunnelName tunnelName;
|
||||
private Integer command;
|
||||
private Short startAddr;
|
||||
private Short sensorId;
|
||||
private Integer warrningStatus;
|
||||
private byte[] emgryStatus;
|
||||
private byte[] speakerStatus;
|
||||
private Integer runStatus;
|
||||
private byte[] signalStrength;
|
||||
private byte[] beidouId;
|
||||
}
|
Loading…
Reference in New Issue