与工控机联调完成
This commit is contained in:
@@ -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 }
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user