diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java
index 3ebdd3292f..74e5eb6eaa 100644
--- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java
+++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/AutoPilotModeDialog.java
@@ -129,6 +129,14 @@ public class AutoPilotModeDialog extends Dialog {
getContext().startActivity(new Intent(getContext(), AutopilotConfigActivity.class));
}
});
+ findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ MessagePad.RouteInfo.Builder builder = MessagePad.RouteInfo.newBuilder();
+ AdasManager.getInstance().sendAutoPilotModeReq(0, 0, builder.build());
+ AutoPilotModeDialog.this.dismiss();
+ }
+ });
}
diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java
index fb15c5051a..dc83ac33f2 100644
--- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java
+++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java
@@ -42,6 +42,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
+import com.google.protobuf.TextFormat;
import com.mogo.telematic.MogoProtocolMsg;
import com.mogo.telematic.NSDNettyManager;
import com.mogo.telematic.client.listener.NettyClientListener;
@@ -85,6 +86,7 @@ import com.zhidao.support.adas.high.OnAdasConnectStatusListener;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.OnMultiDeviceListener;
import com.zhidao.support.adas.high.bean.AutopilotAbility;
+import com.zhidao.support.adas.high.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.bean.VersionCompatibility;
import com.zhidao.support.adas.high.common.ByteUtil;
import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS;
@@ -839,13 +841,23 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
for (SystemStatusInfo.HealthInfo healthInfo : ability.statusInfo.getHealthInfoList()) {
if (healthInfo.getState() == SystemStatusInfo.HealthState.FAULT) {
isAutopilotAbility = false;
- autopilotAbilityReason = healthInfo.getName() + " Topic异常";
+ autopilotAbilityReason = healthInfo.getName() + " 节点异常";
break;
}
}
Log.i(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + autopilotAbilityReason);
}
+ @Override
+ public void onStartAutopilotFailed(MogoReportMsg.MogoReportMessage message) {
+
+ }
+
+ @Override
+ public void onAutopilotStatistics(AutopilotStatistics statistics) {
+ Log.i(TAG, "启动自动驾驶状态=" + statistics.status + " 用时=" + statistics.usedTime + " SetAutopilotModeReq=" + TextFormat.printer().escapingNonAscii(false).printToString(statistics.req) + " failedMessage=" + (statistics.failedMessage == null ? null : TextFormat.printer().escapingNonAscii(false).printToString(statistics.failedMessage)));
+ }
+
@Override
public void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory) {
Trajectory base = new Trajectory(header, trajectory, sdf);
diff --git a/app_ipc_monitoring/src/main/res/layout/dialog_autopilot_mode.xml b/app_ipc_monitoring/src/main/res/layout/dialog_autopilot_mode.xml
index f1829fc2dc..554e402df0 100644
--- a/app_ipc_monitoring/src/main/res/layout/dialog_autopilot_mode.xml
+++ b/app_ipc_monitoring/src/main/res/layout/dialog_autopilot_mode.xml
@@ -4,7 +4,20 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_adas_dialog">
-
+
=
+ ConcurrentHashMap()
+
+ /**
+ * 添加监听
+ * @param tag 标记,用来注销监听使用
+ * @param listener 监听回调
+ */
+ fun addListener(
+ @Nullable tag: String,
+ @Nullable listener: IMoGoStartAutopilotFailedListener
+ ) {
+ if (M_START_AUTOPILOT_FAILED_LISTENER.containsKey(tag)) {
+ return
+ }
+ M_START_AUTOPILOT_FAILED_LISTENER[tag] = listener
+ }
+
+ /**
+ * 删除监听
+ * @param tag 标记,用来注销监听使用
+ */
+ fun removeListener(@Nullable tag: String) {
+ if (!M_START_AUTOPILOT_FAILED_LISTENER.containsKey(tag)) {
+ return
+ }
+ M_START_AUTOPILOT_FAILED_LISTENER.remove(tag)
+ }
+
+ /**
+ * 删除监听
+ * @param listener 要删除的监听对象
+ */
+ fun removeListener(@Nullable listener: IMoGoStartAutopilotFailedListener) {
+ M_START_AUTOPILOT_FAILED_LISTENER.forEach {
+ if (it.value == listener) {
+ M_START_AUTOPILOT_FAILED_LISTENER.remove(it.key)
+ }
+ }
+ }
+
+ @Synchronized
+ fun invokeStartAutopilotFailed(message: MogoReportMsg.MogoReportMessage?) {
+ M_START_AUTOPILOT_FAILED_LISTENER.forEach {
+ val listener = it.value
+ listener.onStartAutopilotFailed(message)
+ }
+ }
+}
\ No newline at end of file
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 e30c0fa60a..9eaad29ddb 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
@@ -19,8 +19,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.protobuf.InvalidProtocolBufferException;
+import com.zhidao.support.adas.high.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.bean.VersionCompatibility;
import com.zhidao.support.adas.high.common.AutopilotAbilityManager;
+import com.zhidao.support.adas.high.common.AutopilotReview;
import com.zhidao.support.adas.high.common.ByteUtil;
import com.zhidao.support.adas.high.common.Constants;
import com.zhidao.support.adas.high.common.CupidLogUtils;
@@ -92,6 +94,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
* 消息工厂
*/
private MyMessageFactory myMessageFactory;
+ /**
+ * 自动驾驶统计
+ */
+ private AutopilotReview autopilotReview;
/**
* 工控机连接配置
*/
@@ -164,13 +170,26 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
//原始数据解析类
rawUnpack = new RawUnpack();
rawPack = new RawPack();
+ autopilotReview = new AutopilotReview(onAutopilotReviewListener);
//消息工厂
- myMessageFactory = new MyMessageFactory();
+ myMessageFactory = new MyMessageFactory(autopilotReview);
//启用线程分发
defaultDispatchHandler = new DispatchHandler(MessagePad.MessageType.MsgTypeDefault, this);//默认分发线程 不要添加到Map中
initOtherDispatchHandler();
}
+ /**
+ * 启动自动驾驶状态统计回调
+ */
+ private final AutopilotReview.OnAutopilotReviewListener onAutopilotReviewListener = new AutopilotReview.OnAutopilotReviewListener() {
+ @Override
+ public void onReview(AutopilotStatistics statistics) {
+ if (mAdasListener != null) {
+ mAdasListener.onAutopilotStatistics(statistics);
+ }
+ }
+ };
+
/**
* 初始化其他分发线程
*/
@@ -757,6 +776,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
if (routeInfo != null)
builder.setRouteInfo(routeInfo);
MessagePad.SetAutopilotModeReq req = builder.build();
+ if (autopilotReview != null) autopilotReview.onAutopilotCommandTrigger(req);
return sendPBMessage(MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ.typeCode, req.toByteArray());
}
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 6f9d7f09ba..649cbf48d7 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
@@ -1,6 +1,7 @@
package com.zhidao.support.adas.high;
import com.zhidao.support.adas.high.bean.AutopilotAbility;
+import com.zhidao.support.adas.high.bean.AutopilotStatistics;
import com.zhidao.support.adas.high.common.ProtocolStatus;
import chassis.VehicleStateOuterClass;
@@ -179,13 +180,6 @@ public interface OnAdasListener {
*/
void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg);
- /**
- * 数据错误
- *
- * @param status 错误原因
- * @param bytes 原始数据
- */
- void onError(ProtocolStatus status, byte[] bytes);
/**
* 是否有能力启动自动驾驶
@@ -193,4 +187,31 @@ public interface OnAdasListener {
* @param ability 是否可以启动自动驾驶
*/
void onAutopilotAbility(AutopilotAbility ability);
+
+ /**
+ * 启动自动驾驶失败回调
+ * 根据MAP 系统监控状态返回过滤
+ * message.getMsg() 获取详细错误说明
+ * message.getCode() 可用于判断属于什么类型
+ *
+ * @param message 数据
+ */
+ void onStartAutopilotFailed(MogoReportMsg.MogoReportMessage message);
+
+ /**
+ * 启动自动驾驶状态统计
+ * 触发机制:下发启动自动驾驶命令,根据MAP返回状态判断成功或失败
+ * 统计四种状态:成功 失败 取消 超时
+ *
+ * @param statistics 统计数据
+ */
+ void onAutopilotStatistics(AutopilotStatistics statistics);
+
+ /**
+ * 数据错误
+ *
+ * @param status 错误原因
+ * @param bytes 原始数据
+ */
+ void onError(ProtocolStatus status, byte[] bytes);
}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AutopilotStatistics.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AutopilotStatistics.java
new file mode 100644
index 0000000000..c6acda417b
--- /dev/null
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AutopilotStatistics.java
@@ -0,0 +1,46 @@
+package com.zhidao.support.adas.high.bean;
+
+import com.zhidao.support.adas.high.common.Define;
+
+import mogo.telematics.pad.MessagePad;
+import mogo_msg.MogoReportMsg;
+
+/**
+ * 自动驾驶启动统计
+ */
+public class AutopilotStatistics {
+
+ /**
+ * 启动自动驾驶后状态
+ * 0 成功
+ * 1 失败
+ * 2 取消
+ * 3 超时
+ * {@link com.zhidao.support.adas.high.common.Constants.AUTOPILOT_START_STATUS}
+ */
+ @Define.AutopilotStartStatus
+ public final int status;
+
+ /**
+ * 用时
+ * 单位:ms
+ */
+ public final long usedTime;
+
+ /**
+ * 下发的启动自动驾驶命令
+ */
+ public final MessagePad.SetAutopilotModeReq req;
+
+ /**
+ * 失败的消息
+ */
+ public final MogoReportMsg.MogoReportMessage failedMessage;
+
+ public AutopilotStatistics(@Define.AutopilotStartStatus int status, long usedTime, MessagePad.SetAutopilotModeReq req, MogoReportMsg.MogoReportMessage failedMessage) {
+ this.status = status;
+ this.usedTime = usedTime;
+ this.req = req;
+ this.failedMessage = failedMessage;
+ }
+}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotReview.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotReview.java
new file mode 100644
index 0000000000..3449c5ae8f
--- /dev/null
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotReview.java
@@ -0,0 +1,117 @@
+package com.zhidao.support.adas.high.common;
+
+import android.os.SystemClock;
+
+import androidx.annotation.NonNull;
+
+import com.zhidao.support.adas.high.bean.AutopilotStatistics;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import mogo.telematics.pad.MessagePad;
+import mogo_msg.MogoReportMsg;
+
+/**
+ * 自动驾驶状态检查/统计
+ */
+public class AutopilotReview {
+ /**
+ * 默认启动自驾超时时间
+ */
+ private static final long DEFAULT_TIMEOUT = 30 * 1000L;
+
+
+ private Timer timer;
+ /**
+ * 下发的启动自动驾驶命令
+ */
+ public MessagePad.SetAutopilotModeReq startReq;
+ private long startTime;//自动驾驶命令下发启动时间
+
+ /**
+ * 失败的消息
+ */
+ public MogoReportMsg.MogoReportMessage failedMessage;
+
+ private final OnAutopilotReviewListener listener;
+
+ public AutopilotReview(@NonNull OnAutopilotReviewListener listener) {
+ this.listener = listener;
+ }
+
+ public interface OnAutopilotReviewListener {
+ void onReview(AutopilotStatistics statistics);
+ }
+
+ private void onCallback(@Define.AutopilotStartStatus int status) {
+ stopTimer();
+ long usedTime = SystemClock.elapsedRealtime() - startTime;
+ if (listener != null) {
+ listener.onReview(new AutopilotStatistics(status, usedTime, startReq, failedMessage));
+ }
+ startTime = 0;
+ startReq = null;
+ failedMessage = null;
+ }
+
+
+ private void startTimer() {
+ if (timer == null) {
+ timer = new Timer();
+ timer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ //超时
+ onCallback(Constants.AUTOPILOT_START_STATUS.TIMEOUT);
+ }
+ }, DEFAULT_TIMEOUT);
+ }
+ }
+
+ private void stopTimer() {
+ if (timer != null) {
+ timer.cancel();
+ timer = null;
+ }
+ }
+
+ /**
+ * 自动驾命令
+ *
+ * @param req 启动或停止
+ */
+ public void onAutopilotCommandTrigger(MessagePad.SetAutopilotModeReq req) {
+ if (req.getMode() == 1) {
+ //启动自动驾驶
+ startReq = req;
+ startTime = SystemClock.elapsedRealtime();
+ startTimer();
+ } else {
+ onCallback(Constants.AUTOPILOT_START_STATUS.CANCEL);
+ }
+ }
+
+ /**
+ * 监控报告状态 目前只用于自动驾驶失败结果
+ *
+ * @param message
+ */
+ public void onReportResult(MogoReportMsg.MogoReportMessage message) {
+ if (startReq != null && message != null) {
+ failedMessage = message;
+ onCallback(Constants.AUTOPILOT_START_STATUS.FAILED);
+ }
+ }
+
+ /**
+ * 自动驾驶状态 目前只用于自动驾驶成功结果
+ *
+ * @param state
+ */
+ public void onAutopilotResult(MessagePad.AutopilotState state) {
+ if (startReq != null && state != null && state.getState() == 2) {
+ onCallback(Constants.AUTOPILOT_START_STATUS.SUCCESSFUL);
+ }
+ }
+}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Constants.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Constants.java
index e251ac7ec4..55b42ed75a 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Constants.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Constants.java
@@ -110,4 +110,26 @@ public class Constants {
}
+ /**
+ * 启动自动驾驶后的状态
+ */
+ public interface AUTOPILOT_START_STATUS {
+ /**
+ * 成功
+ */
+ int SUCCESSFUL = 0;
+ /**
+ * 失败
+ */
+ int FAILED = 1;
+ /**
+ * 取消
+ */
+ int CANCEL = 2;
+ /**
+ * 超时
+ */
+ int TIMEOUT = 3;
+ }
+
}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Define.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Define.java
index a3d4bbc2ff..4ea9eec593 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Define.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/Define.java
@@ -46,4 +46,12 @@ public final class Define {
@Retention(RetentionPolicy.SOURCE)
public @interface SubscribeType {
}
+
+ @IntDef(flag = true, value = {Constants.AUTOPILOT_START_STATUS.SUCCESSFUL,
+ Constants.AUTOPILOT_START_STATUS.FAILED,
+ Constants.AUTOPILOT_START_STATUS.CANCEL,
+ Constants.AUTOPILOT_START_STATUS.TIMEOUT})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface AutopilotStartStatus {
+ }
}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MogoReport.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MogoReport.java
index d518abcd07..4e5ade9c83 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MogoReport.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MogoReport.java
@@ -5,12 +5,12 @@ package com.zhidao.support.adas.high.common;
* 根据290消息定义编写
*/
public class MogoReport {
- private static final String RESULT_AUTOPILOT_SYSTEM_UNSTARTED = "RESULT_AUTOPILOT_SYSTEM_UNSTARTED";
- private static final String RESULT_AUTOPILOT_DISABLE = "RESULT_AUTOPILOT_DISABLE";
- private static final String RESULT_AUTOPILOT_INFERIOR = "RESULT_AUTOPILOT_INFERIOR";
- private static final String RESULT_REMOTEPILOT_DISABLE = "RESULT_REMOTEPILOT_DISABLE";
- private static final String RESULT_REMOTEPILOT_INFERIOR = "RESULT_REMOTEPILOT_INFERIOR";
- private static final String RESULT_SHOW_WARNING = "RESULT_SHOW_WARNING";
+ public static final String RESULT_AUTOPILOT_SYSTEM_UNSTARTED = "RESULT_AUTOPILOT_SYSTEM_UNSTARTED";
+ public static final String RESULT_AUTOPILOT_DISABLE = "RESULT_AUTOPILOT_DISABLE";
+ public static final String RESULT_AUTOPILOT_INFERIOR = "RESULT_AUTOPILOT_INFERIOR";
+ public static final String RESULT_REMOTEPILOT_DISABLE = "RESULT_REMOTEPILOT_DISABLE";
+ public static final String RESULT_REMOTEPILOT_INFERIOR = "RESULT_REMOTEPILOT_INFERIOR";
+ public static final String RESULT_SHOW_WARNING = "RESULT_SHOW_WARNING";
// private static final String RESULT_DISCONNECTED_WITH_PAD = "RESULT_DISCONNECTED_WITH_PAD";
// private static final String RESULT_PAD_CANNOT_CONNECT_TELEMATICS = "RESULT_PAD_CANNOT_CONNECT_TELEMATICS";
@@ -96,14 +96,14 @@ public class MogoReport {
}
- private static final String ACTION_CONTACT_TECH_SUPPORT = "ACTION_CONTACT_TECH_SUPPORT";
- private static final String ACTION_CONTACT_MAINTENANCE = "ACTION_CONTACT_MAINTENANCE";
- private static final String ACTION_CONTACT_HARDWARE_ENGINEER = "ACTION_CONTACT_HARDWARE_ENGINEER";
- private static final String ACTION_REBOOT_PAD = "ACTION_REBOOT_PAD";
- private static final String ACTION_REBOOT_VEHICLE = "ACTION_REBOOT_VEHICLE";
- private static final String ACTION_CHECK_GEAR = "ACTION_CHECK_GEAR";
- private static final String ACTION_CHECK_NETWORK = "ACTION_CHECK_NETWORK";
- private static final String ACTION_TRY_AGAIN_LATER = "ACTION_TRY_AGAIN_LATER";
+ public static final String ACTION_CONTACT_TECH_SUPPORT = "ACTION_CONTACT_TECH_SUPPORT";
+ public static final String ACTION_CONTACT_MAINTENANCE = "ACTION_CONTACT_MAINTENANCE";
+ public static final String ACTION_CONTACT_HARDWARE_ENGINEER = "ACTION_CONTACT_HARDWARE_ENGINEER";
+ public static final String ACTION_REBOOT_PAD = "ACTION_REBOOT_PAD";
+ public static final String ACTION_REBOOT_VEHICLE = "ACTION_REBOOT_VEHICLE";
+ public static final String ACTION_CHECK_GEAR = "ACTION_CHECK_GEAR";
+ public static final String ACTION_CHECK_NETWORK = "ACTION_CHECK_NETWORK";
+ public static final String ACTION_TRY_AGAIN_LATER = "ACTION_TRY_AGAIN_LATER";
public enum Action {
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 7a2b13a28c..e35bbb8071 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
@@ -5,6 +5,7 @@ import android.os.SystemClock;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
+import com.zhidao.support.adas.high.common.AutopilotReview;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.protocol.RawData;
@@ -14,6 +15,11 @@ import mogo.telematics.pad.MessagePad;
* 自动驾驶状态
*/
public class AutopilotStateMessage extends MyAbstractMessageHandler {
+ private final AutopilotReview autopilotReview;
+
+ public AutopilotStateMessage(AutopilotReview autopilotReview) {
+ this.autopilotReview = autopilotReview;
+ }
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
@@ -25,6 +31,9 @@ public class AutopilotStateMessage extends MyAbstractMessageHandler {
if (adasListener != null) {
adasListener.onAutopilotState(raw.getHeader(), autopilotState);
}
+ if (autopilotReview != null) {
+ autopilotReview.onAutopilotResult(autopilotState);
+ }
AdasChannel.calculateTimeConsumingBusiness("自动驾驶状态", nowTime);
// CupidLogUtils.e("自动驾驶状态--->" + autopilotState.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 97f7de500e..5786c0803b 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
@@ -1,5 +1,6 @@
package com.zhidao.support.adas.high.msg;
+import com.zhidao.support.adas.high.common.AutopilotReview;
import com.zhidao.support.adas.high.common.MessageType;
import mogo.telematics.pad.MessagePad;
@@ -31,6 +32,11 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg recordDataConfigRespMessage;//数据采集配置应答
private IMsg planningDecisionStateMessage;//planning决策状态
+ private final AutopilotReview autopilotReview;
+
+ public MyMessageFactory(AutopilotReview autopilotReview) {
+ this.autopilotReview = autopilotReview;
+ }
@Override
public IMsg createMessage(MessagePad.MessageType messageType) {
@@ -61,13 +67,13 @@ public class MyMessageFactory implements IMyMessageFactory {
} else if (messageType == MessageType.TYPE_RECEIVE_AUTOPILOT_STATE.typeCode) {
//自动驾驶状态
if (autopilotStateMessage == null) {
- autopilotStateMessage = new AutopilotStateMessage();
+ autopilotStateMessage = new AutopilotStateMessage(autopilotReview);
}
return autopilotStateMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_REPORT_MESSAGE.typeCode) {
//监控事件报告
if (reportMessage == null) {
- reportMessage = new ReportMessage();
+ reportMessage = new ReportMessage(autopilotReview);
}
return reportMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT.typeCode) {
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 171deba19d..7baa2838cd 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
@@ -5,15 +5,24 @@ import android.os.SystemClock;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
+import com.zhidao.support.adas.high.common.AutopilotReview;
import com.zhidao.support.adas.high.common.CupidLogUtils;
+import com.zhidao.support.adas.high.common.MogoReport;
import com.zhidao.support.adas.high.protocol.RawData;
+import java.util.List;
+
import mogo_msg.MogoReportMsg;
/**
- * 监控事件报告
+ * 监控事件报告回调
*/
public class ReportMessage extends MyAbstractMessageHandler {
+ private final AutopilotReview autopilotReview;
+
+ public ReportMessage(AutopilotReview autopilotReview) {
+ this.autopilotReview = autopilotReview;
+ }
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
@@ -23,8 +32,18 @@ public class ReportMessage extends MyAbstractMessageHandler {
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
- adasListener.onReportMessage(raw.getHeader(), mogoReportMessage);
+ adasListener.onReportMessage(raw.getHeader(), mogoReportMessage);//监控报告回调
}
AdasChannel.calculateTimeConsumingBusiness("监控事件报告", nowTime);
+ //分发自动驾驶启动失败相关回调
+ List results = mogoReportMessage.getResultList();
+ if (!results.isEmpty() && results.contains(MogoReport.RESULT_AUTOPILOT_DISABLE)) {
+ if (adasListener != null) {
+ adasListener.onStartAutopilotFailed(mogoReportMessage);//启动自动驾驶失败回调
+ }
+ if (autopilotReview != null) {
+ autopilotReview.onReportResult(mogoReportMessage);//统计启动自动驾驶失败原因
+ }
+ }
}
}