diff --git a/build.gradle b/build.gradle index 1615fa6dd6..8da9516e51 100644 --- a/build.gradle +++ b/build.gradle @@ -35,7 +35,7 @@ buildscript { classpath 'com.volcengine:apm_insight_plugin:1.4.1' classpath 'com.mogo.cloud:thread_opt:1.0.1' classpath 'com.mogo.cloud:systrace:1.0.1' - classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8' + classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' // classpath ("com.tencent.matrix:matrix-gradle-plugin:0.6.6") { changing = true } } diff --git a/core/mogo-core-data/src/main/proto/message_pad.proto b/core/mogo-core-data/src/main/proto/message_pad.proto index 163047566e..ae6b05880c 100644 --- a/core/mogo-core-data/src/main/proto/message_pad.proto +++ b/core/mogo-core-data/src/main/proto/message_pad.proto @@ -183,7 +183,7 @@ message CarConfigResp // message definition for MsgTypeRecordCause message RecordCause { - string key = 1; //bag key 唯一标识 + uint64 key = 1; //bag key 唯一标识 string filename = 2; //文件路径 string reason = 3; //接管原因 string reasonID = 4; //接管原因id diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 77aecf2f28..eeb777a3bb 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -6,6 +6,8 @@ import static com.mogo.eagle.core.data.chain.ChainConstant.CHAIN_LINK_LOG_CONNEC import android.text.TextUtils; +import androidx.annotation.NonNull; + import com.google.gson.Gson; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.bean.BaseInfo; @@ -16,17 +18,19 @@ import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.Define; import com.zhidao.support.adas.high.common.IPCFixationIPHelper; import com.zhidao.support.adas.high.common.MessageType; +import com.zhidao.support.adas.high.common.ProtocolStatus; import com.zhidao.support.adas.high.common.RSATool; import com.zhidao.support.adas.high.common.RegexUtils; import com.zhidao.support.adas.high.common.SSH; import com.zhidao.support.adas.high.common.ThreadPoolManager; +import com.zhidao.support.adas.high.msg.IMsg; import com.zhidao.support.adas.high.msg.MyMessageFactory; +import com.zhidao.support.adas.high.protocol.RawData; import com.zhidao.support.adas.high.protocol.RawPack; +import com.zhidao.support.adas.high.protocol.RawUnpack; import com.zhidao.support.adas.high.queue.WSByteQueueManager; import com.zhidao.support.adas.high.queue.WebSocketQueueManager; import com.zhidao.support.adas.high.socket.FpgaSocket; -import com.zhidao.support.adas.high.protocol.RawData; -import com.zhidao.support.adas.high.protocol.RawUnpack; import com.zhjt.service.chain.ChainLog; import com.zhjt.service.chain.TracingConstants; @@ -129,11 +133,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec /** * 创建对象时会自动连接工控机,如果使用setListener 会出现 listener=null而调用回调的情况,所以将所使用到的接口 * - * @param context * @param options * @param onAdasConnectStatusListener */ - AdasChannel( AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) { + AdasChannel(AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) { this.adasConnectStatusListener = onAdasConnectStatusListener; initData(); //配置为null默认是乘客屏幕 @@ -331,21 +334,32 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec try { if (rawUnpack != null) { RawData raw = rawUnpack.read(byteString); - if (raw.isUnpackSucceed()) { + if (raw.getProtocolStatus() == ProtocolStatus.SUCCEED) { MessagePad.Header header = MessagePad.Header.parseFrom(raw.getHeader()); MessagePad.MessageType messageType = header.getMsgType(); CupidLogUtils.w("--->websocket byte read header = " + messageType.toString()); - myMessageFactory.createMessage(messageType).handlerMsg(header, raw.getPayload(), mAdasListener); + IMsg iMsg = myMessageFactory.createMessage(messageType); + if (iMsg == null) { + callError(ProtocolStatus.MESSAGE_TYPE_UNKNOWN, bytes); + return; + } + iMsg.handlerMsg(header, raw.getPayload(), mAdasListener); } else { - CupidLogUtils.w("数据解析失败=" + byteString.hex()); + callError(raw.getProtocolStatus(), bytes); } - } } catch (Exception e) { + callError(ProtocolStatus.BUSINESS_DATA_PARSE_FAILED, bytes); e.printStackTrace(); } } + private void callError(ProtocolStatus status, byte[] bytes) { + if (mAdasListener != null) { + mAdasListener.onError(status, bytes); + } + } + @Override public AdasOptions getAdasOptions() { return adasOptions; @@ -566,7 +580,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @return */ @Override - public boolean sendBasicInfoResp(String sn, int environment) { + public boolean sendBasicInfoResp(@NonNull String sn, int environment) { + if (sn == null) { + sn = ""; + } MessagePad.BasicInfoResp resp = MessagePad.BasicInfoResp .newBuilder() .setSn(sn) @@ -632,7 +649,19 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @return */ @Override - public boolean sendRecordCause(String key, String filename, String reasonID, String reason) { + public boolean sendRecordCause(long key, @NonNull String filename, @NonNull String reasonID, @NonNull String reason) { + if (filename == null) { + filename = ""; + } + if (filename == null) { + filename = ""; + } + if (reasonID == null) { + reasonID = ""; + } + if (reason == null) { + reason = ""; + } MessagePad.RecordCause resp = MessagePad.RecordCause .newBuilder() .setKey(key) @@ -733,9 +762,18 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @return */ @Override - public boolean sendTrafficLightData(String crossID, double latitude, double longitude, - String heading, String direction, int lightId, int laneNo, + public boolean sendTrafficLightData(@NonNull String crossID, double latitude, double longitude, + @NonNull String heading, @NonNull String direction, int lightId, int laneNo, int arrowNo, int flashYellow, MessagePad.TrafficLightDetail laneDetail) { + if (crossID == null) { + crossID = ""; + } + if (heading == null) { + heading = ""; + } + if (direction == null) { + direction = ""; + } MessagePad.TrafficLightData.Builder builder = MessagePad.TrafficLightData.newBuilder(); builder.setCrossID(crossID); builder.setLatitude(latitude); diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index ff81237b91..496c330df7 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -2,6 +2,8 @@ package com.zhidao.support.adas.high; import android.content.Context; +import androidx.annotation.NonNull; + import com.zhidao.support.adas.high.bean.BaseInfo; import com.zhidao.support.adas.high.common.AppPreferenceHelper; import com.zhidao.support.adas.high.common.Constants; @@ -203,7 +205,7 @@ public class AdasManager implements IAdasNetCommApi { } @Override - public boolean sendBasicInfoResp(String sn, int environment) { + public boolean sendBasicInfoResp(@NonNull String sn, int environment) { return mChannel != null && mChannel.sendBasicInfoResp(sn, environment); } @@ -223,7 +225,7 @@ public class AdasManager implements IAdasNetCommApi { } @Override - public boolean sendRecordCause(String key, String filename, String reasonID, String reason) { + public boolean sendRecordCause(long key, @NonNull String filename, @NonNull String reasonID, @NonNull String reason) { return mChannel != null && mChannel.sendRecordCause(key, filename, reasonID, reason); } @@ -253,7 +255,7 @@ public class AdasManager implements IAdasNetCommApi { } @Override - public boolean sendTrafficLightData(String crossID, double latitude, double longitude, String heading, String direction, int lightId, int laneNo, int arrowNo, int flashYellow, MessagePad.TrafficLightDetail laneDetail) { + public boolean sendTrafficLightData(@NonNull String crossID, double latitude, double longitude, @NonNull String heading, @NonNull String direction, int lightId, int laneNo, int arrowNo, int flashYellow, MessagePad.TrafficLightDetail laneDetail) { return mChannel != null && mChannel.sendTrafficLightData(crossID, latitude, longitude, heading, direction, lightId, laneNo, arrowNo, flashYellow, laneDetail); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index eb256bc4a8..9e1b259a84 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -1,5 +1,7 @@ package com.zhidao.support.adas.high; +import androidx.annotation.NonNull; + import com.zhidao.support.adas.high.bean.BaseInfo; import com.zhidao.support.adas.high.common.Constants; @@ -58,7 +60,7 @@ public interface IAdasNetCommApi { * @param environment 1: 研发环境, 2:测试环境, 3:生产环境 4:演示环境 * @return */ - boolean sendBasicInfoResp(String sn, int environment); + boolean sendBasicInfoResp(@NonNull String sn, int environment); /** * 设置自动驾驶模式 启动自动驾驶 @@ -94,7 +96,7 @@ public interface IAdasNetCommApi { * @param reason 接管原因 * @return */ - boolean sendRecordCause(String key, String filename, String reasonID, String reason); + boolean sendRecordCause(long key, @NonNull String filename, @NonNull String reasonID, @NonNull String reason); /** * 同下 @@ -158,8 +160,8 @@ public interface IAdasNetCommApi { * @param laneDetail 灯态具体信息 * @return */ - boolean sendTrafficLightData(String crossID, double latitude, double longitude, - String heading, String direction, int lightId, int laneNo, + boolean sendTrafficLightData(@NonNull String crossID, double latitude, double longitude, + @NonNull String heading, @NonNull String direction, int lightId, int laneNo, int arrowNo, int flashYellow, MessagePad.TrafficLightDetail laneDetail); /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index fd4b3a96ea..add626b0f1 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -2,6 +2,7 @@ package com.zhidao.support.adas.high; import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo; import com.zhidao.support.adas.high.bean.SSHResult; +import com.zhidao.support.adas.high.common.ProtocolStatus; import chassis.VehicleStateOuterClass; import mogo.telematics.pad.MessagePad; @@ -136,5 +137,12 @@ public interface OnAdasListener { */ void onSSHResult(SSHResult info); + /** + * 数据错误 + * + * @param status 错误原因 + * @param bytes 原始数据 + */ + void onError(ProtocolStatus status, byte[] bytes); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ProtocolStatus.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ProtocolStatus.java new file mode 100644 index 0000000000..52f6bb9168 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ProtocolStatus.java @@ -0,0 +1,31 @@ +package com.zhidao.support.adas.high.common; + +/** + * 数据协议解析状态 + */ +public enum ProtocolStatus { + + + SUCCEED(0x00, "数据解析成功"), + MAGIC_CODE_CHECK_FAILED(0x01, "数据头校验失败"), + PACKAGE_LENGTH_CHECK_FAILED(0x02, "数据包长度校验失败"), + MESSAGE_TYPE_UNKNOWN(0x03, "MessageType未知"), + BUSINESS_DATA_PARSE_FAILED(0x04, "业务数据解析失败"); + + public final int code; + + /** + * 描述 + */ + public final String desc; + + ProtocolStatus(int code, String desc) { + this.code = code; + this.desc = desc; + } + + @Override + public String toString() { + return desc; + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RSATool.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RSATool.java index 7f112faf19..fa4ce4e790 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RSATool.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RSATool.java @@ -1,6 +1,6 @@ package com.zhidao.support.adas.high.common; -import android.util.Log; + import java.nio.charset.StandardCharsets; @@ -53,13 +53,13 @@ public class RSATool { // 将公私钥转为base64-法2 String privateBase64 = Base64.encodeBase64String(privateKey); String publicBase64 = Base64.encodeBase64String(publicKey); - Log.i("RSATool", "privateBase64=" + privateBase64); - Log.i("RSATool", "publicBase64=" + publicBase64); + CupidLogUtils.i("RSATool", "privateBase64=" + privateBase64); + CupidLogUtils.i("RSATool", "publicBase64=" + publicBase64); String data = "mogo@ZHIDAO10"; String encryptData = encryptByPublicKey(data, publicKey); - Log.i("RSATool", "encryptData=" + encryptData); + CupidLogUtils.i("RSATool", "encryptData=" + encryptData); String decodeData = decodeByPrivateKey(encryptData, Base64.decodeBase64(privateBase64)); - Log.i("RSATool", "decodeData=" + decodeData); + CupidLogUtils.i("RSATool", "decodeData=" + decodeData); } catch (Exception e) { e.printStackTrace(); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RequestWsMsgType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RequestWsMsgType.java deleted file mode 100644 index 6eb1ffa5b2..0000000000 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/RequestWsMsgType.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.zhidao.support.adas.high.common; - -/** - * @author nie yunlong - * @description 请求值 - * @date 2018/7/3 - */ -public enum RequestWsMsgType { - - /** - * 获取视频信息 - */ - MSG_GET_VIDEO_INFO(1, "get video info"), - /** - * 视频分辨率 - */ - MSG_SEND_LOCATION(2, "视频分辨率"), - /** - * 上传配置 - */ - MSG_SEND_UPLOAD_CONFIG(3, "上传配置"), - - MSG_SEND_CLOSE(5, "关闭socket"); - int mMsgType; - /** - * 描述 - */ - String mMsgDesc; - - RequestWsMsgType(int msgType, String msgDesc) { - this.mMsgType = msgType; - this.mMsgDesc = msgDesc; - } - - /** - * 获取msgType - * - * @return - */ - public int getMsgType() { - return mMsgType; - } - - /** - * 获取描述 - * - * @return - */ - public String getmMsgDesc() { - return mMsgDesc; - } -} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java index fe07077a6e..ef5f593336 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java @@ -21,8 +21,9 @@ public class ArrivalNotificationMessage extends MyAbstractMessageHandler { MessagePad.ArrivalNotification arrivalNotification = MessagePad.ArrivalNotification.parseFrom(msg); if (adasListener != null) { adasListener.onArrivalNotification(header, arrivalNotification); - CupidLogUtils.e("到站提醒--->" + arrivalNotification.toString()); + } + CupidLogUtils.e("到站提醒--->" + arrivalNotification.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java index f9eb44e9e8..18631c0847 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java @@ -22,8 +22,8 @@ public class AutopilotStateMessage extends MyAbstractMessageHandler { MessagePad.AutopilotState autopilotState = MessagePad.AutopilotState.parseFrom(msg); if (adasListener != null) { adasListener.onAutopilotState(header, autopilotState); - CupidLogUtils.e("自动驾驶状态--->" + autopilotState.toString()); } + CupidLogUtils.e("自动驾驶状态--->" + autopilotState.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java index 501b2852cc..7ba1c80cf4 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java @@ -21,8 +21,8 @@ public class BasicInfoReqMessage extends MyAbstractMessageHandler { MessagePad.BasicInfoReq autopilotState = MessagePad.BasicInfoReq.parseFrom(msg); if (adasListener != null) { adasListener.onBasicInfoReq(header, autopilotState); - CupidLogUtils.e("自动驾驶设备基础信息请求--->" + autopilotState.toString()); } + CupidLogUtils.e("自动驾驶设备基础信息请求--->" + autopilotState.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java index 18b19b872c..2747885d44 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java @@ -21,8 +21,8 @@ public class CarConfigRespMessage extends MyAbstractMessageHandler { MessagePad.CarConfigResp carConfigResp = MessagePad.CarConfigResp.parseFrom(msg); if (adasListener != null) { adasListener.onCarConfigResp(header, carConfigResp); - CupidLogUtils.e("车机基础信息应答--->" + carConfigResp.toString()); } + CupidLogUtils.e("车机基础信息应答--->" + carConfigResp.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java index 77fc871b46..4e050e7ed8 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java @@ -21,8 +21,8 @@ public class GlobalPathRespMessage extends MyAbstractMessageHandler { MessagePad.GlobalPathResp globalPathResp = MessagePad.GlobalPathResp.parseFrom(msg); if (adasListener != null) { adasListener.onGlobalPathResp(header, globalPathResp); - CupidLogUtils.e("自动驾驶路径应答--->" + globalPathResp.toString()); } + CupidLogUtils.e("自动驾驶路径应答--->" + globalPathResp.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java index c9cb551b22..dd3bf3078d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java @@ -21,8 +21,8 @@ public class GnssInfoMessage extends MyAbstractMessageHandler { MessagePad.GnssInfo trajectory = MessagePad.GnssInfo.parseFrom(msg); if (adasListener != null) { adasListener.onGnssInfo(header, trajectory); - CupidLogUtils.e("惯导信息--->" + trajectory.toString()); } + CupidLogUtils.e("惯导信息--->" + trajectory.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java index 389c1474d8..6e6939e767 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java @@ -48,7 +48,6 @@ public class MyMessageFactory implements IMyMessageFactory { @Override public IMsg createMessage(MessagePad.MessageType messageType) { - if (messageType == MessageType.TYPE_RECEIVE_TRAJECTORY.typeCode) { //局部轨迹 if (trajectoryMessage == null) { @@ -123,10 +122,7 @@ public class MyMessageFactory implements IMyMessageFactory { return arrivalNotificationMessage; } else { //MessageType.TYPE_DEFAULT.typeCode - if (nuImplMessage == null) { - nuImplMessage = new NuImplMessage(); - } - return nuImplMessage; + return null; } } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java index 45eeeeafd4..5ac4ca7ef2 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java @@ -2,6 +2,7 @@ package com.zhidao.support.adas.high.msg; import com.google.gson.Gson; import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.TextFormat; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.CupidLogUtils; @@ -22,8 +23,8 @@ public class RecordResultMessage extends MyAbstractMessageHandler { RecordPanelOuterClass.RecordPanel recordPanel = RecordPanelOuterClass.RecordPanel.parseFrom(msg); if (adasListener != null) { adasListener.onRecordResult(header, recordPanel); - CupidLogUtils.e("数据采集结果--->" + recordPanel.toString()); } + CupidLogUtils.e("数据采集结果--->" + recordPanel.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java index 7821d756f6..20d5b866fc 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java @@ -22,8 +22,8 @@ public class ReportMessage extends MyAbstractMessageHandler { MogoReportMsg.MogoReportMessage mogoReportMessage = MogoReportMsg.MogoReportMessage.parseFrom(msg); if (adasListener != null) { adasListener.onReportMessage(header, mogoReportMessage); - CupidLogUtils.e("到站提醒--->" + mogoReportMessage.toString()); } + CupidLogUtils.e("监控事件报告--->" + mogoReportMessage.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java index 681b716fbe..d9835bbaee 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java @@ -28,8 +28,8 @@ public class TrackedObjectsMessage extends MyAbstractMessageHandler { MessagePad.TrackedObjects trackedObjects = MessagePad.TrackedObjects.parseFrom(msg); if (adasListener != null) { adasListener.onTrackedObjects(header, trackedObjects); - CupidLogUtils.e("障碍物--->" + trackedObjects.toString()); } + CupidLogUtils.e("障碍物信息--->" + trackedObjects.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java index b7649d8b7f..dc29e77095 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java @@ -8,7 +8,7 @@ import com.zhidao.support.adas.high.common.CupidLogUtils; import mogo.telematics.pad.MessagePad; /** - * 自动驾驶局部轨迹 前车引导线 + * 自动驾驶局部轨迹 车前引导线 */ public class TrajectoryMessage extends MyAbstractMessageHandler { @@ -21,8 +21,8 @@ public class TrajectoryMessage extends MyAbstractMessageHandler { MessagePad.Trajectory trajectory = MessagePad.Trajectory.parseFrom(msg); if (adasListener != null) { adasListener.onTrajectory(header, trajectory); - CupidLogUtils.e("自动驾驶局部轨迹 前车引导线--->" + trajectory.toString()); } + CupidLogUtils.e("车前引导线--->" + trajectory.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java index 5b51ecf016..00d0888ff7 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java @@ -22,8 +22,8 @@ public class VehicleStateMessage extends MyAbstractMessageHandler { VehicleStateOuterClass.VehicleState vehicleState = VehicleStateOuterClass.VehicleState.parseFrom(msg); if (adasListener != null) { adasListener.onVehicleState(header, vehicleState); - CupidLogUtils.e("惯导信息--->" + vehicleState.toString()); } + CupidLogUtils.e("底盘信息--->" + vehicleState.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java index a631d26894..6ada9d89e3 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java @@ -22,8 +22,8 @@ public class WarnMessage extends MyAbstractMessageHandler { MessagePad.Warn warn = MessagePad.Warn.parseFrom(msg); if (adasListener != null) { adasListener.onWarn(header, warn); - CupidLogUtils.e("自动驾驶路径应答--->" + warn.toString()); } + CupidLogUtils.e("预警数据--->" + warn.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WsAutopilotUpgradeStatusMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WsAutopilotUpgradeStatusMessage.java index d4f40be30e..398d1b927a 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WsAutopilotUpgradeStatusMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WsAutopilotUpgradeStatusMessage.java @@ -17,11 +17,11 @@ public class WsAutopilotUpgradeStatusMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(Gson gson, OnAdasListener adasListener, String msg) { - CupidLogUtils.i("工控机升级", "msg=" + msg); IPCUpgradeStateInfo autopilotStatus = gson.fromJson(msg, IPCUpgradeStateInfo.class); if (adasListener != null) { adasListener.onUpgradeStateInfo(autopilotStatus); } + CupidLogUtils.i("工控机升级", "msg=" + msg); } @Override diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java index 06f5189ada..b8abc9134e 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java @@ -1,8 +1,7 @@ package com.zhidao.support.adas.high.protocol; import com.zhidao.support.adas.high.common.DigitalTrans; - -import java.io.Serializable; +import com.zhidao.support.adas.high.common.ProtocolStatus; /** * 原始数据协议 @@ -12,11 +11,12 @@ import java.io.Serializable; * @date 2021/10/20 * 原始数据格式:MagicCode(2字节 6d67) 偏移量(2字节 从原始数据头开始一直到Body头) 数据包总长度(4字节) Header Body */ -public class RawData implements Serializable { +public class RawData { + /** * 数据拆包是否成功 */ - private boolean isUnpackSucceed = true; + private ProtocolStatus protocolStatus; /** * 用于检查数据是否为正确数据 @@ -110,13 +110,6 @@ public class RawData implements Serializable { this.payload = payload; } - public boolean isUnpackSucceed() { - return isUnpackSucceed; - } - - public void setUnpackSucceed(boolean unpackSucceed) { - isUnpackSucceed = unpackSucceed; - } public int getOffsetValue() { return offsetValue; @@ -125,4 +118,23 @@ public class RawData implements Serializable { public long getPackageLengthValue() { return packageLengthValue; } + + public ProtocolStatus getProtocolStatus() { + return protocolStatus; + } + + public void setProtocolStatus(ProtocolStatus protocolStatus) { + this.protocolStatus = protocolStatus; + } + + + public void clear() { + magicCode = null; + offset = null; + offsetValue = 0; + packageLength = null; + packageLengthValue = 0L; + header = null; + payload = null; + } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawUnpack.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawUnpack.java index 6cb735ae37..b911b88bc0 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawUnpack.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawUnpack.java @@ -3,6 +3,7 @@ package com.zhidao.support.adas.high.protocol; import com.zhidao.support.adas.high.common.Constants; import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.DigitalTrans; +import com.zhidao.support.adas.high.common.ProtocolStatus; import java.util.Arrays; @@ -18,14 +19,15 @@ import okio.ByteString; public class RawUnpack { private static final String TAG = RawUnpack.class.getSimpleName(); private final DefaultMessageProtocol messageProtocol; - + private RawData originalData; public RawUnpack() { messageProtocol = new DefaultMessageProtocol(); } public RawData read(ByteString bytes) { - RawData originalData = new RawData(); + if (originalData == null) + originalData = new RawData(); unpack(bytes, originalData); return originalData; @@ -47,6 +49,11 @@ public class RawUnpack { ByteString packageLength = bytes.substring(messageProtocol.getMagicCodeLength() + messageProtocol.getOffsetLength(), messageProtocol.getOutHeader()); byte[] packageLengthB = packageLength.toByteArray(); raw.setPackageLength(packageLengthB, getPackageLengthValue(packageLengthB)); + if (bytes.size() != raw.getPackageLengthValue()) { + raw.setProtocolStatus(ProtocolStatus.PACKAGE_LENGTH_CHECK_FAILED); + raw.clear(); + return; + } CupidLogUtils.w(TAG, "WS 数据包从长度 bytes=" + packageLength.hex() + " 数据包从长度=" + raw.getPackageLengthValue()); //读取header ByteString header = bytes.substring(messageProtocol.getOutHeader(), raw.getOffsetValue()); @@ -55,9 +62,11 @@ public class RawUnpack { //读取payload ByteString payload = bytes.substring(raw.getOffsetValue()); raw.setPayload(payload.toByteArray()); + raw.setProtocolStatus(ProtocolStatus.SUCCEED); CupidLogUtils.w(TAG, "WS IPC数据=" + payload.hex() + " IPC数据长度=" + messageProtocol.getPayloadLength(raw.getPackageLengthValue(), raw.getOffsetValue())); } else { - raw.setUnpackSucceed(false); + raw.setProtocolStatus(ProtocolStatus.MAGIC_CODE_CHECK_FAILED); + raw.clear(); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java index ef456b1157..608011c16c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java @@ -244,7 +244,7 @@ public class FpgaSocket implements IWebSocket { @Override public void onMessage(@NonNull WebSocket webSocket, @NonNull ByteString bytes) { super.onMessage(webSocket, bytes); -// CupidLogUtils.i(TAG, "WebSocket onMessage bytes= " + bytes.hex()); + CupidLogUtils.i(TAG, "WebSocket onMessage bytes= " + bytes.size()); if (AdasChannel.isUseQueue) { WSByteQueueManager.getInstance().addQueueData(bytes); } else {