[Change]修改调试程序

This commit is contained in:
xinfengkun
2022-04-08 15:40:12 +08:00
parent 4013e7acee
commit b1171724be
20 changed files with 313 additions and 75 deletions

View File

@@ -0,0 +1,154 @@
package com.zhidao.adas.client;
import com.zhidao.adas.client.bean.ArrivalNotification;
import com.zhidao.adas.client.bean.AutopilotState;
import com.zhidao.adas.client.bean.BasicInfoReq;
import com.zhidao.adas.client.bean.CarConfigResp;
import com.zhidao.adas.client.bean.GlobalPathResp;
import com.zhidao.adas.client.bean.GnssInfo;
import com.zhidao.adas.client.bean.MogoReportMessage;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
import com.zhidao.adas.client.bean.RecordPanel;
import com.zhidao.adas.client.bean.TrackedObjects;
import com.zhidao.adas.client.bean.Trajectory;
import com.zhidao.adas.client.bean.VehicleState;
import com.zhidao.adas.client.bean.Warn;
import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo;
import com.zhidao.support.adas.high.bean.SSHResult;
import com.zhidao.support.adas.high.common.ProtocolStatus;
public abstract class OnAdasClientListener {
/**
* 自动驾驶局部轨迹 车前引导线
*
* @param trajectory 数据
*/
public void onTrajectory(Trajectory trajectory) {
}
/**
* 障碍物 他车数据
*
* @param trackedObjects 数据
*/
public void onTrackedObjects(TrackedObjects trackedObjects) {
}
/**
* 惯导信息
*
* @param gnssInfo 数据
*/
public void onGnssInfo(GnssInfo gnssInfo) {
}
/**
* 底盘信息, 透传底盘状态pb参考底盘
*
* @param vehicleState 数据
*/
public void onVehicleState(VehicleState vehicleState) {
}
/**
* 自动驾驶状态
*
* @param autopilotState 数据
*/
public void onAutopilotState(AutopilotState autopilotState) {
}
/**
* 监控事件报告
*
* @param mogoReportMessage 数据
*/
public void onReportMessage(MogoReportMessage mogoReportMessage) {
}
/**
* 感知红绿灯
*
* @param trafficLights 感知红绿灯
*/
public void onPerceptionTrafficLight(PerceptionTrafficLight trafficLights) {
}
/**
* 自动驾驶设备基础信息请求
*
* @param basicInfoReq 数据 目前没有任何参数
*/
public void onBasicInfoReq(BasicInfoReq basicInfoReq) {
}
/**
* 车机基础信息应答
*
* @param carConfigResp 数据
*/
public void onCarConfigResp(CarConfigResp carConfigResp) {
}
/**
* 数据采集结果
*
* @param recordPanel 数据
*/
public void onRecordResult(RecordPanel recordPanel) {
}
/**
* 自动驾驶路径应答
*
* @param globalPathResp 数据
*/
public void onGlobalPathResp(GlobalPathResp globalPathResp) {
}
/**
* 报警信息
* 暂时保留,目前没有使用
*
* @param warn 数据
*/
@Deprecated
public void onWarn(Warn warn) {
}
/**
* 到站提醒 自动驾驶站点
*
* @param arrivalNotification 数据
*/
public void onArrivalNotification(ArrivalNotification arrivalNotification) {
}
/**
* 升级状态
*
* @param info
*/
@Deprecated
public void onUpgradeStateInfo(IPCUpgradeStateInfo info) {
}
/**
* 向IPC发送命令返回结果
*
* @param info
*/
public void onSSHResult(SSHResult info) {
}
/**
* 数据错误
*
* @param status 错误原因
* @param bytes 原始数据
*/
public void onError(ProtocolStatus status, byte[] bytes) {
}
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class ArrivalNotification extends Base {
public class ArrivalNotification extends BaseInfo {
public final MessagePad.ArrivalNotification bean;
public ArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class AutopilotState extends Base {
public class AutopilotState extends BaseInfo {
public final MessagePad.AutopilotState bean;
public AutopilotState(MessagePad.Header header, MessagePad.AutopilotState bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -1,21 +0,0 @@
package com.zhidao.adas.client.bean;
import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public abstract class Base {
public final MessagePad.Header header;
public final int len;
public Base(int len, MessagePad.Header header) {
this.len = 8 + header.getSerializedSize() + len;
this.header = header;
}
@Override
public String toString() {
return len + "##Header:[" + TextFormat.printer().escapingNonAscii(false).shortDebugString(header)+"]\n";
}
}

View File

@@ -0,0 +1,32 @@
package com.zhidao.adas.client.bean;
import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public abstract class BaseInfo {
public final String action;
public final long nowTime;
public final MessagePad.Header header;
public final int len;
public BaseInfo(String action, int len, MessagePad.Header header) {
this.action = action;
nowTime = System.currentTimeMillis();
this.len = 8 + header.getSerializedSize() + len;
this.header = header;
}
public BaseInfo(String action, int len) {
this.action = action;
nowTime = System.currentTimeMillis();
this.len = len;
this.header = null;
}
@Override
public String toString() {
return len + "##Header:[" + TextFormat.printer().escapingNonAscii(false).shortDebugString(header) + "]\n";
}
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class BasicInfoReq extends Base {
public class BasicInfoReq extends BaseInfo {
public final MessagePad.BasicInfoReq bean;
public BasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class CarConfigResp extends Base {
public class CarConfigResp extends BaseInfo {
public final MessagePad.CarConfigResp bean;
public CarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -3,11 +3,12 @@ package com.zhidao.adas.client.bean;
import com.zhidao.support.adas.high.common.DigitalTrans;
import com.zhidao.support.adas.high.common.ProtocolStatus;
public class ErrorData {
public class ErrorData extends BaseInfo {
private final ProtocolStatus status;
private final byte[] bytes;
public ErrorData(ProtocolStatus status, byte[] bytes) {
super("接收", bytes.length);
this.status = status;
this.bytes = bytes;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class GlobalPathResp extends Base {
public class GlobalPathResp extends BaseInfo {
public final MessagePad.GlobalPathResp bean;
public GlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class GnssInfo extends Base {
public class GnssInfo extends BaseInfo {
public final MessagePad.GnssInfo bean;
public GnssInfo(MessagePad.Header header, MessagePad.GnssInfo bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -5,11 +5,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
public class MogoReportMessage extends Base {
public class MogoReportMessage extends BaseInfo {
public final MogoReportMsg.MogoReportMessage bean;
public MogoReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -0,0 +1,10 @@
package com.zhidao.adas.client.bean;
public class MySSHResult extends BaseInfo {
public final String info;
public MySSHResult(String info, int len) {
super("接收", len);
this.info = info;
}
}

View File

@@ -5,11 +5,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
import perception.TrafficLightOuterClass;
public class PerceptionTrafficLight extends Base {
public class PerceptionTrafficLight extends BaseInfo {
public final TrafficLightOuterClass.TrafficLights bean;
public PerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -5,11 +5,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
import record_cache.RecordPanelOuterClass;
public class RecordPanel extends Base {
public class RecordPanel extends BaseInfo {
public final RecordPanelOuterClass.RecordPanel bean;
public RecordPanel(MessagePad.Header header, RecordPanelOuterClass.RecordPanel bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class TrackedObjects extends Base {
public class TrackedObjects extends BaseInfo {
private MessagePad.TrackedObjects bean;
public TrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class Trajectory extends Base {
public class Trajectory extends BaseInfo {
public final MessagePad.Trajectory bean;
public Trajectory(MessagePad.Header header, MessagePad.Trajectory bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}
@Override

View File

@@ -5,11 +5,11 @@ import com.google.protobuf.TextFormat;
import chassis.VehicleStateOuterClass;
import mogo.telematics.pad.MessagePad;
public class VehicleState extends Base {
public class VehicleState extends BaseInfo {
public final VehicleStateOuterClass.VehicleState bean;
public VehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,11 +4,11 @@ import com.google.protobuf.TextFormat;
import mogo.telematics.pad.MessagePad;
public class Warn extends Base {
public class Warn extends BaseInfo {
public final MessagePad.Warn bean;
public Warn(MessagePad.Header header, MessagePad.Warn bean) {
super(bean.getSerializedSize(), header);
super("接收", bean.getSerializedSize(), header);
this.bean = bean;
}

View File

@@ -4,6 +4,21 @@ import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import com.zhidao.adas.client.OnAdasClientListener;
import com.zhidao.adas.client.bean.ArrivalNotification;
import com.zhidao.adas.client.bean.AutopilotState;
import com.zhidao.adas.client.bean.BaseInfo;
import com.zhidao.adas.client.bean.BasicInfoReq;
import com.zhidao.adas.client.bean.CarConfigResp;
import com.zhidao.adas.client.bean.GlobalPathResp;
import com.zhidao.adas.client.bean.GnssInfo;
import com.zhidao.adas.client.bean.MogoReportMessage;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
import com.zhidao.adas.client.bean.RecordPanel;
import com.zhidao.adas.client.bean.TrackedObjects;
import com.zhidao.adas.client.bean.Trajectory;
import com.zhidao.adas.client.bean.VehicleState;
import com.zhidao.adas.client.bean.Warn;
import com.zhidao.support.adas.high.common.ThreadPoolManager;
import java.io.BufferedWriter;
@@ -11,7 +26,9 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
@@ -25,12 +42,13 @@ public class LogSave {
private static final String LOG_FILE_NAME = "%s.log";//文件名称
private volatile static LogSave INSTANCE;
private static final long MAX_CAPACITY = 20 * 1024 * 1024L;//单文件最大存储容量 kb
private final LinkedBlockingQueue<String> queue;
private final LinkedBlockingQueue<BaseInfo> queue;
private BufferedWriter buff = null;
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.getDefault());
private File file;
private volatile long capacity = MAX_CAPACITY;
private Future future;
private List<OnAdasClientListener> listeners = new ArrayList<>();
private LogSave() {
queue = new LinkedBlockingQueue<>();
@@ -47,6 +65,15 @@ public class LogSave {
return INSTANCE;
}
public void registerOnAdasClientListener(OnAdasClientListener listener) {
if (!listeners.contains(listener)) {
listeners.add(listener);
}
}
public void unregisterOnAdasClientListener(OnAdasClientListener listener) {
listeners.remove(listener);
}
public boolean isSdcardUse() {
boolean bl = false;
@@ -74,13 +101,12 @@ public class LogSave {
}
public void saveLog(String action, String data) {
long nowTime = System.currentTimeMillis();
String time = sdf.format(new Date(nowTime));
String builder = time + " [action]:" + action + " [data]:" + data;
queue.add(builder);
}
public void saveLog(BaseInfo info) {
if (isStart()) {
queue.add(info);
}
}
public boolean isStart() {
return future != null;
}
@@ -128,9 +154,43 @@ public class LogSave {
closeBufferedWriter();
getFile();
}
String data = queue.take();
if (!TextUtils.isEmpty(data)) {
buff.write(data);
BaseInfo data = queue.take();
if (!listeners.isEmpty()) {
for (OnAdasClientListener listener : listeners) {
if (data instanceof Trajectory) {
listener.onTrajectory((Trajectory) data);
} else if (data instanceof TrackedObjects) {
listener.onTrackedObjects((TrackedObjects) data);
}else if (data instanceof GnssInfo) {
listener.onGnssInfo((GnssInfo) data);
}else if (data instanceof VehicleState) {
listener.onVehicleState((VehicleState) data);
}else if (data instanceof AutopilotState) {
listener.onAutopilotState((AutopilotState) data);
}else if (data instanceof MogoReportMessage) {
listener.onReportMessage((MogoReportMessage) data);
}else if (data instanceof PerceptionTrafficLight) {
listener.onPerceptionTrafficLight((PerceptionTrafficLight) data);
}else if (data instanceof BasicInfoReq) {
listener.onBasicInfoReq((BasicInfoReq) data);
}else if (data instanceof CarConfigResp) {
listener.onCarConfigResp((CarConfigResp) data);
}else if (data instanceof RecordPanel) {
listener.onRecordResult((RecordPanel) data);
}else if (data instanceof GlobalPathResp) {
listener.onGlobalPathResp((GlobalPathResp) data);
}else if (data instanceof Warn) {
listener.onWarn((Warn) data);
}else if (data instanceof ArrivalNotification) {
listener.onArrivalNotification((ArrivalNotification) data);
}
}
}
String time = sdf.format(new Date(data.nowTime));
String builder = time + " [action]:" + data.action + " [data]:" + data.toString();
if (!TextUtils.isEmpty(builder)) {
buff.write(builder);
buff.newLine();
buff.flush();
}

View File

@@ -54,6 +54,7 @@ import com.zhidao.adas.client.bean.GlobalPathResp;
import com.zhidao.adas.client.bean.GnssInfo;
import com.zhidao.adas.client.bean.IPCConnectState;
import com.zhidao.adas.client.bean.MogoReportMessage;
import com.zhidao.adas.client.bean.MySSHResult;
import com.zhidao.adas.client.bean.PerceptionTrafficLight;
import com.zhidao.adas.client.bean.RecordPanel;
import com.zhidao.adas.client.bean.TrackedObjects;
@@ -632,7 +633,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
@Override
public void onSSHResult(final SSHResult info) {
LogSave.getInstance().saveLog("接收", info.toString());
MySSHResult result = new MySSHResult(info.toString(), 0);
LogSave.getInstance().saveLog(result);
showToastCenter("IPC命令下发结果" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg);
CupidLogUtils.w(TAG, "IPC命令下发结果" + info.code + " 命令:" + info.cmd + " 信息:" + info.msg);
}
@@ -640,63 +642,63 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
@Override
public void onError(ProtocolStatus status, byte[] bytes) {
ErrorData base = new ErrorData(status, bytes);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory) {
Trajectory base = new Trajectory(header, trajectory);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects) {
TrackedObjects base = new TrackedObjects(header, trackedObjects);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo) {
GnssInfo base = new GnssInfo(header, gnssInfo);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) {
VehicleState base = new VehicleState(header, vehicleState);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState) {
AutopilotState base = new AutopilotState(header, autopilotState);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage) {
MogoReportMessage base = new MogoReportMessage(header, mogoReportMessage);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights) {
PerceptionTrafficLight base = new PerceptionTrafficLight(header, trafficLights);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) {
BasicInfoReq info = new BasicInfoReq(header, basicInfoReq);
LogSave.getInstance().saveLog("接收", info.toString());
LogSave.getInstance().saveLog(info);
AdasManager.getInstance().sendBasicInfoResp("X202021111192N41VY", 1);
showToastCenter("收到车机基础信息请求:" + info.toString());
// EventBus.getDefault().post(new BasicInfoReq(header, basicInfoReq));
@@ -705,14 +707,14 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
@Override
public void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp) {
CarConfigResp base = new CarConfigResp(header, carConfigResp);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().postSticky(base);
}
@Override
public void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel) {
RecordPanel base = new RecordPanel(header, recordPanel);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
recordKey = recordPanel.getKey();
recordFileName = recordPanel.getFilename();
EventBus.getDefault().post(base);
@@ -721,27 +723,27 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
@Override
public void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp) {
GlobalPathResp base = new GlobalPathResp(header, globalPathResp);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onWarn(MessagePad.Header header, MessagePad.Warn warn) {
Warn base = new Warn(header, warn);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification) {
ArrivalNotification base = new ArrivalNotification(header, arrivalNotification);
LogSave.getInstance().saveLog("接收", base.toString());
LogSave.getInstance().saveLog(base);
EventBus.getDefault().post(base);
}
@Override
public void onUpgradeStateInfo(final IPCUpgradeStateInfo info) {
LogSave.getInstance().saveLog("接收", info.toString());
// LogSave.getInstance().saveLog("接收", info.toString());
EventBus.getDefault().post(info);
}
@@ -898,7 +900,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
}
getHandler().sendEmptyMessage(WHAT_IPC_IP);
}
LogSave.getInstance().saveLog("连接状态", status);
// LogSave.getInstance().saveLog("连接状态", status);
CupidLogUtils.i(TAG, "connectStatus=" + status);
}