[630][adas] 修改回执消息,增加数据解析失败状态

This commit is contained in:
xinfengkun
2024-03-04 11:49:41 +08:00
parent dadd787908
commit beaf7c537c
3 changed files with 80 additions and 35 deletions

View File

@@ -102,7 +102,7 @@ public enum MessageType {
public final long timeoutMillis;
MessageType(MessagePad.MessageType typeCode, String desc) {
this(typeCode, desc, 0);
this(typeCode, desc, 0L);
}
MessageType(MessagePad.MessageType typeCode, String desc, long timeoutMillis) {

View File

@@ -1,6 +1,9 @@
package com.zhjt.mogo.adas.data.bean;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.protobuf.TextFormat;
import com.zhjt.mogo.adas.common.MessageType;
import com.zhjt.mogo.adas.utils.ByteUtil;
@@ -12,30 +15,61 @@ import mogo.telematics.pad.MessagePad;
*/
public class ReceivedAck {
/**
* 是否超时,如果超时 receiveTime和receivedAck不会被赋值
* 超时时间定义在{@link MessageType}中,根据定义的超时时间实际返回的超时时间 ±1 秒内
* 是否超时,如果超时
*/
private boolean isTimeout = false;
@NonNull
private Status status = Status.NORMAL;
private final long sendTime;//数据发送时间
private long receiveTime;//回执接收时间
private final long msgId;//消息ID
private final MessageType messageType;//具体消息
private final byte[] sendData;//发送的数据
private MessagePad.ReceivedAck receivedAck;//回执的数据
private final long msgId;//PAD发送的消息ID
@NonNull
private final MessageType messageType;//PAD发送的具体消息类型
@Nullable
private final byte[] sendData;//PAD发送的数据
@Nullable
private MessagePad.ReceivedAck receivedAck;//PAD接收到回执的数据
public ReceivedAck(long sendTime, long msgId, MessageType messageType, byte[] sendData) {
/**
* 回执状态
*/
public enum Status {
/**
* 正常的
* 所有字段均会被赋值
*/
NORMAL,
/**
* 接收域控回执数据超时
* receiveTime和receivedAck不会被赋值
* 超时时间定义在{@link MessageType}中,根据定义的超时时间实际返回的超时时间 ±1 秒内
*/
TIMEOUT,
/**
* 收到域控发送的回执消息,但是消息存在异常
* sendTime和msgId和messageType和sendData不会被赋值
*/
RECEIVED_ACK_DATA_ERROR,
/**
* 收到域控发送的回执消息,但是本地发送命令的缓存列表中没有任何数据,无法确认收到的回执数据属于那条命令发出的
* sendTime和msgId和messageType和sendData不会被赋值
*/
WAITING_RECEIVED_ACK_LIST_EMPTY;
}
public ReceivedAck(long sendTime, long msgId, @NonNull MessageType messageType, @Nullable byte[] sendData) {
this.sendTime = sendTime;
this.msgId = msgId;
this.messageType = messageType;
this.sendData = sendData;
}
public boolean isTimeout() {
return isTimeout;
@NonNull
public Status getStatus() {
return status;
}
public void setTimeout(boolean timeout) {
isTimeout = timeout;
public void setStatus(@NonNull Status status) {
this.status = status;
}
public long getSendTime() {
@@ -54,30 +88,33 @@ public class ReceivedAck {
return msgId;
}
@NonNull
public MessageType getMessageType() {
return messageType;
}
@Nullable
public byte[] getSendData() {
return sendData;
}
@Nullable
public MessagePad.ReceivedAck getReceivedAck() {
return receivedAck;
}
public void setReceivedAck(MessagePad.ReceivedAck receivedAck) {
public void setReceivedAck(@Nullable MessagePad.ReceivedAck receivedAck) {
this.receivedAck = receivedAck;
}
@Override
public String toString() {
return "{" +
"是否超时=" + isTimeout +
"状态=" + status +
", 发送时间=" + sendTime +
", 接收时间=" + receiveTime +
", 消息ID=" + msgId +
", 消息类型=" + messageType +
", 回执接收时间=" + receiveTime +
", 发送消息ID=" + msgId +
", 发送类型=" + messageType +
", 发送数据=" + (sendData == null ? null : ByteUtil.byteArrToHex(sendData)) +
", 回执数据=" + (receivedAck == null ? null : TextFormat.printer().escapingNonAscii(false).printToString(receivedAck)) +
'}';