[8.2.8][i18n] adas-data ReceiveTimeoutManager.java autopilot\ability中的所有类 中文抽取

This commit is contained in:
xinfengkun
2025-11-10 16:23:42 +08:00
parent 56913c6f7f
commit 6781029c1a
13 changed files with 173 additions and 89 deletions

View File

@@ -145,7 +145,7 @@ class MoGoAutopilotControlProvider :
// .setSubscribeInterfaceOptions(subscribeInterfaceOptions)// // .setSubscribeInterfaceOptions(subscribeInterfaceOptions)//
.build() .build()
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl()) AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// //////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据 // 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
@@ -241,7 +241,7 @@ class MoGoAutopilotControlProvider :
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear) // .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
.build() .build()
AdasManager.getInstance() AdasManager.getInstance()
.create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl()) .create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
// 监听ADAS-SDK获取到的工控机数据 // 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// 接收司机屏发过来的感知、定位等数据 // 接收司机屏发过来的感知、定位等数据
@@ -275,7 +275,7 @@ class MoGoAutopilotControlProvider :
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode()) .setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear) // .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
.build() .build()
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl()) AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// //////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据 // 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
@@ -337,7 +337,7 @@ class MoGoAutopilotControlProvider :
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.SPECIFIED) .setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.SPECIFIED)
.setSpecifiedAddress(autoPilotIp) .setSpecifiedAddress(autoPilotIp)
.build() .build()
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl()) AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// AdasManager.getInstance().adasOptions.isClient = false // AdasManager.getInstance().adasOptions.isClient = false
// AdasManager.getInstance().adasOptions.ipcConnectionMode = // AdasManager.getInstance().adasOptions.ipcConnectionMode =

View File

@@ -126,13 +126,4 @@
<string name="adas_data_report_action_REBOOT_SYSTEM">系统软重启</string> <string name="adas_data_report_action_REBOOT_SYSTEM">系统软重启</string>
<string name="adas_data_report_action_KEEP_POWERON_AND_WAIT">请安全位置停车,保持上电,等待修复完成</string> <string name="adas_data_report_action_KEEP_POWERON_AND_WAIT">请安全位置停车,保持上电,等待修复完成</string>
<string name="adas_time_out_period">超时时间:</string>
<string name="adas_last_refresh_time_difference">最后刷新时间时间差:</string>
<string name="adas_last_receive_heartbeat_time">最后一条Telematics心跳接收时间</string>
<string name="adas_last_receive_data_time">最后一条Telematics数据发送时间</string>
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
</resources> </resources>

View File

@@ -10,7 +10,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_SOURCE_ADAS;
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_INIT_STATUS; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_INIT_STATUS;
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT;
import android.content.Context; import android.app.Application;
import android.os.SystemClock; import android.os.SystemClock;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -154,7 +154,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
private OnAdasListener mAdasListener; private OnAdasListener mAdasListener;
//连接状态listener //连接状态listener
private final OnAdasConnectStatusListener adasConnectStatusListener; private final OnAdasConnectStatusListener adasConnectStatusListener;
private Context context; private final Application context;
private final ReceivedAckManager receivedAckManager = new ReceivedAckManager();//消息回执 private final ReceivedAckManager receivedAckManager = new ReceivedAckManager();//消息回执
private final AtomicBoolean isInitConfigure = new AtomicBoolean(false);//是否进行配置初始化 private final AtomicBoolean isInitConfigure = new AtomicBoolean(false);//是否进行配置初始化
@@ -199,10 +199,11 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
* @param options * @param options
* @param listener * @param listener
*/ */
AdasChannel(Context context, @Nullable AdasOptions options, @Nullable OnAdasConnectStatusListener listener) { AdasChannel(Application context, @Nullable AdasOptions options, @Nullable OnAdasConnectStatusListener listener) {
this.context = context; this.context = context;
this.adasConnectStatusListener = listener; this.adasConnectStatusListener = listener;
setAdasOptions(options); setAdasOptions(options);
AutopilotAbilityManager.getInstance().init(context);
initData(); initData();
if (!adasOptions.isPassenger() && listener != null && adasOptions.isAutoConnect()) if (!adasOptions.isPassenger() && listener != null && adasOptions.isAutoConnect())
connect(); connect();

View File

@@ -1,5 +1,6 @@
package com.zhidao.support.adas.high; package com.zhidao.support.adas.high;
import android.app.Application;
import android.content.Context; import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
@@ -127,7 +128,7 @@ public class AdasManager implements IAdasNetCommApi {
* @param options 连接参数 * @param options 连接参数
* @param onAdasConnectStatusListener 连接状态监听 * @param onAdasConnectStatusListener 连接状态监听
*/ */
public synchronized void create(Context context, AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) { public synchronized void create(Application context, AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) {
if (mChannel != null) { if (mChannel != null) {
mChannel.disconnect(); mChannel.disconnect();
carConfig = null; carConfig = null;

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import android.os.SystemClock; import android.os.SystemClock;
import android.text.TextUtils; import android.text.TextUtils;
import com.zhidao.support.adas.high.R;
import com.zhjt.mogo.adas.data.AdasConstants; import com.zhjt.mogo.adas.data.AdasConstants;
import java.util.Locale; import java.util.Locale;
@@ -160,11 +161,11 @@ public class ReceiveTimeoutManager {
if (context != null) { if (context != null) {
try { try {
type = isTimeout type = isTimeout
? context.getString(com.zhjt.mogo.adas.data.R.string.adas_time_out_period) ? context.getString(R.string.adas_time_out_period)
: context.getString(com.zhjt.mogo.adas.data.R.string.adas_last_refresh_time_difference); : context.getString(R.string.adas_last_refresh_time_difference);
type1 = isHaveIpcHeartbeat type1 = isHaveIpcHeartbeat
? context.getString(com.zhjt.mogo.adas.data.R.string.adas_last_receive_heartbeat_time) ? context.getString(R.string.adas_last_receive_heartbeat_time)
: context.getString(com.zhjt.mogo.adas.data.R.string.adas_last_receive_data_time); : context.getString(R.string.adas_last_receive_data_time);
} catch (Exception e) { } catch (Exception e) {
type = null; type = null;
type1 = null; type1 = null;

View File

@@ -3,6 +3,7 @@ package com.zhidao.support.adas.high.common.autopilot.ability;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.R;
import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
@@ -24,10 +25,13 @@ import system_master.SystemStatusInfo;
public class AutopilotAbility250 extends BaseAutopilotAbilityChassis { public class AutopilotAbility250 extends BaseAutopilotAbilityChassis {
private volatile Timer timer; private volatile Timer timer;
private int masterVersion = -1;//Master版本 private int masterVersion = -1;//Master版本
@NonNull
private final String[] NODE_INFO_STATE;
public AutopilotAbility250(@NonNull AutopilotAbilityManager manager) { public AutopilotAbility250(@NonNull AutopilotAbilityManager manager) {
super(manager); super(manager);
NODE_INFO_STATE = manager.getStringArray(R.array.adas_node_info_state);
} }
@@ -58,14 +62,14 @@ public class AutopilotAbility250 extends BaseAutopilotAbilityChassis {
for (SystemStatusInfo.NodeInfo info : list) { for (SystemStatusInfo.NodeInfo info : list) {
String nodeName = info.getNodeName(); String nodeName = info.getNodeName();
int state = info.getState(); int state = info.getState();
if (state < AutopilotAbilityManager.NODE_INFO_STATE.length) { if (state < NODE_INFO_STATE.length) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + AutopilotAbilityManager.NODE_INFO_STATE[state]); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + NODE_INFO_STATE[state]);
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + "未知异常"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + manager.getString(R.string.adas_unknown_error));
} }
} }
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, "未知异常节点"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, manager.getString(R.string.adas_unknown_error_node));
} }
} }
} else { } else {
@@ -75,11 +79,11 @@ public class AutopilotAbility250 extends BaseAutopilotAbilityChassis {
boolean isAutopilotAbility = false; boolean isAutopilotAbility = false;
String unableAutopilotReason = null; String unableAutopilotReason = null;
if (systemState == SystemStatusInfo.SystemState.SYS_STARTING) { if (systemState == SystemStatusInfo.SystemState.SYS_STARTING) {
unableAutopilotReason = "系统正在启动"; unableAutopilotReason = manager.getString(R.string.adas_system_starting);
} else if (systemState == SystemStatusInfo.SystemState.SYS_EXITING) { } else if (systemState == SystemStatusInfo.SystemState.SYS_EXITING) {
unableAutopilotReason = "系统正在关闭"; unableAutopilotReason = manager.getString(R.string.adas_system_shutting_down);
} else if (systemState == SystemStatusInfo.SystemState.SYS_FAULT) { } else if (systemState == SystemStatusInfo.SystemState.SYS_FAULT) {
unableAutopilotReason = "系统异常"; unableAutopilotReason = manager.getString(R.string.adas_system_error);
} else if (systemState == SystemStatusInfo.SystemState.AUTO_PILOT_STARTING) { } else if (systemState == SystemStatusInfo.SystemState.AUTO_PILOT_STARTING) {
//TODO 如果第一次下发了启动自动驾驶,没起来或者存在干预 此时systemState是AUTO_PILOT_STARTING 需要二次下发启动自驾命令 所以需要排除此状态 //TODO 如果第一次下发了启动自动驾驶,没起来或者存在干预 此时systemState是AUTO_PILOT_STARTING 需要二次下发启动自驾命令 所以需要排除此状态
isAutopilotAbility = true; isAutopilotAbility = true;
@@ -89,11 +93,11 @@ public class AutopilotAbility250 extends BaseAutopilotAbilityChassis {
isAutopilotAbility = true; isAutopilotAbility = true;
// unableAutopilotReason = "自动驾驶运行中"; // unableAutopilotReason = "自动驾驶运行中";
} else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_STARTING) { } else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_STARTING) {
unableAutopilotReason = "平行驾驶启动中"; unableAutopilotReason = manager.getString(R.string.adas_parallel_drive_starting);
} else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_RUNNING) { } else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_RUNNING) {
unableAutopilotReason = "平行驾驶运行中"; unableAutopilotReason = manager.getString(R.string.adas_parallel_drive_running);
} else { } else {
unableAutopilotReason = "未知系统状态"; unableAutopilotReason = manager.getString(R.string.adas_unknown_system_state);
} }
if (!isAutopilotAbility) { if (!isAutopilotAbility) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason);
@@ -101,7 +105,7 @@ public class AutopilotAbility250 extends BaseAutopilotAbilityChassis {
} }
} }
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, "SSM查询超时无响应"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, manager.getString(R.string.adas_ssm_find_timeout));
} }
//检测底盘相关 //检测底盘相关
unableAutopilotReasons = onCallbackChassis(unableAutopilotReasons); unableAutopilotReasons = onCallbackChassis(unableAutopilotReasons);

View File

@@ -5,6 +5,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.R;
import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
@@ -35,11 +36,13 @@ public class AutopilotAbility330 {
private int mapVersion = -1;//MAP版本 private int mapVersion = -1;//MAP版本
private int masterVersion = -1;//Master版本 private int masterVersion = -1;//Master版本
private OnAutopilotAbilityListener listener; private OnAutopilotAbilityListener listener;
private final String[] NODE_INFO_STATE;
protected AutopilotAbility330(@NonNull AutopilotAbilityManager manager, int mapVersion) { protected AutopilotAbility330(@NonNull AutopilotAbilityManager manager, int mapVersion) {
this.manager = manager; this.manager = manager;
this.mapVersion = mapVersion; this.mapVersion = mapVersion;
this.masterVersion = -1; this.masterVersion = -1;
NODE_INFO_STATE = manager.getStringArray(R.array.adas_node_info_state);
} }
protected synchronized void setFsmStatusReasonRespond(FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond) { protected synchronized void setFsmStatusReasonRespond(FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond) {
@@ -76,14 +79,14 @@ public class AutopilotAbility330 {
for (SystemStatusInfo.NodeInfo info : list) { for (SystemStatusInfo.NodeInfo info : list) {
String nodeName = info.getNodeName(); String nodeName = info.getNodeName();
int state = info.getState(); int state = info.getState();
if (state < AutopilotAbilityManager.NODE_INFO_STATE.length) { if (state < NODE_INFO_STATE.length) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + AutopilotAbilityManager.NODE_INFO_STATE[state]); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + NODE_INFO_STATE[state]);
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + "未知异常"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + manager.getString(R.string.adas_unknown_error));
} }
} }
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, "未知异常节点"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, manager.getString(R.string.adas_unknown_error_node));
} }
} }
} else { } else {
@@ -93,11 +96,11 @@ public class AutopilotAbility330 {
isAutopilotAbility = false; isAutopilotAbility = false;
String unableAutopilotReason = null; String unableAutopilotReason = null;
if (systemState == SystemStatusInfo.SystemState.SYS_STARTING) { if (systemState == SystemStatusInfo.SystemState.SYS_STARTING) {
unableAutopilotReason = "系统正在启动"; unableAutopilotReason = manager.getString(R.string.adas_system_starting);
} else if (systemState == SystemStatusInfo.SystemState.SYS_EXITING) { } else if (systemState == SystemStatusInfo.SystemState.SYS_EXITING) {
unableAutopilotReason = "系统正在关闭"; unableAutopilotReason = manager.getString(R.string.adas_system_shutting_down);
} else if (systemState == SystemStatusInfo.SystemState.SYS_FAULT) { } else if (systemState == SystemStatusInfo.SystemState.SYS_FAULT) {
unableAutopilotReason = "系统异常"; unableAutopilotReason = manager.getString(R.string.adas_system_error);
} else if (systemState == SystemStatusInfo.SystemState.AUTO_PILOT_STARTING) { } else if (systemState == SystemStatusInfo.SystemState.AUTO_PILOT_STARTING) {
//TODO 如果第一次下发了启动自动驾驶,没起来或者存在干预 此时systemState是AUTO_PILOT_STARTING 需要二次下发启动自驾命令 所以需要排除此状态 //TODO 如果第一次下发了启动自动驾驶,没起来或者存在干预 此时systemState是AUTO_PILOT_STARTING 需要二次下发启动自驾命令 所以需要排除此状态
isAutopilotAbility = true; isAutopilotAbility = true;
@@ -107,11 +110,11 @@ public class AutopilotAbility330 {
isAutopilotAbility = true; isAutopilotAbility = true;
// unableAutopilotReason = "自动驾驶运行中"; // unableAutopilotReason = "自动驾驶运行中";
} else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_STARTING) { } else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_STARTING) {
unableAutopilotReason = "平行驾驶启动中"; unableAutopilotReason = manager.getString(R.string.adas_parallel_drive_starting);
} else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_RUNNING) { } else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_RUNNING) {
unableAutopilotReason = "平行驾驶运行中"; unableAutopilotReason = manager.getString(R.string.adas_parallel_drive_running);
} else { } else {
unableAutopilotReason = "未知系统状态"; unableAutopilotReason = manager.getString(R.string.adas_unknown_system_state);
} }
if (!isAutopilotAbility) { if (!isAutopilotAbility) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason);
@@ -120,7 +123,7 @@ public class AutopilotAbility330 {
} }
} else { } else {
isAutopilotAbility = false;//是否能启动自动驾驶 isAutopilotAbility = false;//是否能启动自动驾驶
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, "SSM查询超时无响应"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, manager.getString(R.string.adas_ssm_find_timeout));
} }
if (fsmStatusReasonRespond != null) { if (fsmStatusReasonRespond != null) {
int count = fsmStatusReasonRespond.getFsmStatusReasonRespondCount(); int count = fsmStatusReasonRespond.getFsmStatusReasonRespondCount();
@@ -133,7 +136,7 @@ public class AutopilotAbility330 {
} }
} }
if (unableAutopilotReasons == null || unableAutopilotReasons.isEmpty()) { if (unableAutopilotReasons == null || unableAutopilotReasons.isEmpty()) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM_ERROR, "FSM数据异常"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM_ERROR, manager.getString(R.string.adas_fsm_data_error));
} }
} }
} }

View File

@@ -3,6 +3,7 @@ package com.zhidao.support.adas.high.common.autopilot.ability;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.R;
import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
@@ -26,11 +27,6 @@ import system_master.SsmInfo;
*/ */
public class AutopilotAbility350And360 { public class AutopilotAbility350And360 {
private final String TAG = this.getClass().getSimpleName(); private final String TAG = this.getClass().getSimpleName();
private static final String REASON_CHASSIS_BRAKE = "刹车踏板";
private static final String REASON_CHASSIS_THROTTLE = "油门踏板";
private static final String REASON_CHASSIS_GEAR = "档位";
private static final String REASON_CHASSIS_HAZARD_LIGHTS = "危险报警灯";
private static final String REASON_CHASSIS_STEERING = "方向盘";
@NonNull @NonNull
private final AutopilotAbilityManager manager; private final AutopilotAbilityManager manager;
private volatile SsmInfo.SsmStatusInf statusInfo; private volatile SsmInfo.SsmStatusInf statusInfo;
@@ -54,9 +50,11 @@ public class AutopilotAbility350And360 {
private int masterVersion = -1;//Master版本 private int masterVersion = -1;//Master版本
private long seqNum = -1;//消息条数 private long seqNum = -1;//消息条数
private final String[] NODE_INFO_STATE_FIXED_FREQUENCY;
public AutopilotAbility350And360(@NonNull AutopilotAbilityManager manager) { public AutopilotAbility350And360(@NonNull AutopilotAbilityManager manager) {
this.manager = manager; this.manager = manager;
NODE_INFO_STATE_FIXED_FREQUENCY = manager.getStringArray(R.array.adas_node_info_state_fixed_frequency);
} }
public void setCarConfig(@NonNull MessagePad.CarConfigResp carConfig) { public void setCarConfig(@NonNull MessagePad.CarConfigResp carConfig) {
@@ -151,14 +149,14 @@ public class AutopilotAbility350And360 {
SsmInfo.NodeInf info = statusInfo.getAutoPilotUnreadyList(i); SsmInfo.NodeInf info = statusInfo.getAutoPilotUnreadyList(i);
String nodeName = info.getNodeName(); String nodeName = info.getNodeName();
int state = info.getState().getNumber(); int state = info.getState().getNumber();
if (state < AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY.length) { if (state < NODE_INFO_STATE_FIXED_FREQUENCY.length) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY[state]); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + NODE_INFO_STATE_FIXED_FREQUENCY[state]);
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + "未知异常"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + manager.getString(R.string.adas_unknown_error));
} }
} }
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, "未知异常节点"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, manager.getString(R.string.adas_unknown_error_node));
} }
} }
} else { } else {
@@ -166,21 +164,21 @@ public class AutopilotAbility350And360 {
if (modeState != SsmInfo.ModeState.MODE_RUN_UNREADY && modeState != SsmInfo.ModeState.MODE_RUN_READY) { if (modeState != SsmInfo.ModeState.MODE_RUN_UNREADY && modeState != SsmInfo.ModeState.MODE_RUN_READY) {
String unableAutopilotReason = null; String unableAutopilotReason = null;
if (modeState == SsmInfo.ModeState.MODE_STOP_UNREADY) { if (modeState == SsmInfo.ModeState.MODE_STOP_UNREADY) {
unableAutopilotReason = "系统处于停止模式(未就绪)"; unableAutopilotReason = manager.getString(R.string.adas_mode_stop_unready);
} else if (modeState == SsmInfo.ModeState.MODE_STOP_READY) { } else if (modeState == SsmInfo.ModeState.MODE_STOP_READY) {
unableAutopilotReason = "系统处于停止模式"; unableAutopilotReason = manager.getString(R.string.adas_mode_stop_ready);
} else if (modeState == SsmInfo.ModeState.MODE_IDLE_UNREADY) { } else if (modeState == SsmInfo.ModeState.MODE_IDLE_UNREADY) {
unableAutopilotReason = "系统处于空闲模式(未就绪)"; unableAutopilotReason = manager.getString(R.string.adas_mode_idle_unready);
} else if (modeState == SsmInfo.ModeState.MODE_IDLE_READY) { } else if (modeState == SsmInfo.ModeState.MODE_IDLE_READY) {
unableAutopilotReason = "系统处于空闲模式"; unableAutopilotReason = manager.getString(R.string.adas_mode_idle_ready);
} else { } else {
unableAutopilotReason = "未知系统模式"; unableAutopilotReason = manager.getString(R.string.adas_unknown_system_mode);
} }
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason);
} }
} }
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, "SSM超时无响应"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, manager.getString(R.string.adas_ssm_timeout));
} }
return unableAutopilotReasons; return unableAutopilotReasons;
} }
@@ -240,26 +238,26 @@ public class AutopilotAbility350And360 {
if (chassisStates.hasBrakeSystemStates()) { if (chassisStates.hasBrakeSystemStates()) {
float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition(); float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition();
if (brake > 0) { if (brake > 0) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_BRAKE, REASON_CHASSIS_BRAKE); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_BRAKE, manager.getString(R.string.adas_reason_chassis_brake));
} }
} }
//油门踏板 //油门踏板
if (chassisStates.hasDrivingSystemStates()) { if (chassisStates.hasDrivingSystemStates()) {
float throttle = chassisStates.getDrivingSystemStates().getThrottleResponsePosition(); float throttle = chassisStates.getDrivingSystemStates().getThrottleResponsePosition();
if (throttle > 0) { if (throttle > 0) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_THROTTLE, REASON_CHASSIS_THROTTLE); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_THROTTLE, manager.getString(R.string.adas_reason_chassis_throttle));
} }
} }
//档位 //档位
if (chassisStates.hasGearSystemStates()) { if (chassisStates.hasGearSystemStates()) {
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition(); Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
if (!isLaunchAutopilotGear(gear)) { if (!isLaunchAutopilotGear(gear)) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_GEAR, REASON_CHASSIS_GEAR); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_GEAR, manager.getString(R.string.adas_reason_chassis_gear));
} }
} }
//危险报警灯 //危险报警灯
if (!isLaunchAutopilotLight(currentLight)) { if (!isLaunchAutopilotLight(currentLight)) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_HAZARD_LIGHTS, REASON_CHASSIS_HAZARD_LIGHTS); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_HAZARD_LIGHTS, manager.getString(R.string.adas_reason_chassis_hazard_lights));
} }
//延迟太高改用timer //延迟太高改用timer
// //方向盘 // //方向盘
@@ -288,7 +286,7 @@ public class AutopilotAbility350And360 {
// } // }
// Log.i(TAG, "方向盘是否在转动=" + isTurning.get()); // Log.i(TAG, "方向盘是否在转动=" + isTurning.get());
if (isTurning.get()) { if (isTurning.get()) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_STEERING, REASON_CHASSIS_STEERING); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_STEERING, manager.getString(R.string.adas_reason_chassis_steering));
} }
} }
if (listener != null) { if (listener != null) {

View File

@@ -5,6 +5,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.R;
import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
@@ -28,10 +29,12 @@ public class AutopilotAbility360 {
private volatile FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond;//自动驾驶状态为OFF的原因 private volatile FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond;//自动驾驶状态为OFF的原因
private int masterVersion = -1;//Master版本 private int masterVersion = -1;//Master版本
private OnAutopilotAbilityListener listener; private OnAutopilotAbilityListener listener;
private final String[] NODE_INFO_STATE_FIXED_FREQUENCY;
protected AutopilotAbility360(@NonNull AutopilotAbilityManager manager) { protected AutopilotAbility360(@NonNull AutopilotAbilityManager manager) {
this.manager = manager; this.manager = manager;
this.masterVersion = -1; this.masterVersion = -1;
NODE_INFO_STATE_FIXED_FREQUENCY = manager.getStringArray(R.array.adas_node_info_state_fixed_frequency);
} }
protected synchronized void setFsmStatusReasonRespond(FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond) { protected synchronized void setFsmStatusReasonRespond(FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond) {
@@ -68,14 +71,14 @@ public class AutopilotAbility360 {
SsmInfo.NodeInf info = statusInfo.getAutoPilotUnreadyList(i); SsmInfo.NodeInf info = statusInfo.getAutoPilotUnreadyList(i);
String nodeName = info.getNodeName(); String nodeName = info.getNodeName();
int state = info.getState().getNumber(); int state = info.getState().getNumber();
if (state < AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY.length) { if (state < NODE_INFO_STATE_FIXED_FREQUENCY.length) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY[state]); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, nodeName + NODE_INFO_STATE_FIXED_FREQUENCY[state]);
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + "未知异常"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, nodeName + manager.getString(R.string.adas_unknown_error));
} }
} }
} else { } else {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, "未知异常节点"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_ERROR, manager.getString(R.string.adas_unknown_error_node));
} }
} }
} else { } else {
@@ -84,22 +87,22 @@ public class AutopilotAbility360 {
isAutopilotAbility = false; isAutopilotAbility = false;
String unableAutopilotReason = null; String unableAutopilotReason = null;
if (modeState == SsmInfo.ModeState.MODE_STOP_UNREADY) { if (modeState == SsmInfo.ModeState.MODE_STOP_UNREADY) {
unableAutopilotReason = "系统处于停止模式(未就绪)"; unableAutopilotReason = manager.getString(R.string.adas_mode_stop_unready);
} else if (modeState == SsmInfo.ModeState.MODE_STOP_READY) { } else if (modeState == SsmInfo.ModeState.MODE_STOP_READY) {
unableAutopilotReason = "系统处于停止模式"; unableAutopilotReason = manager.getString(R.string.adas_mode_stop_ready);
} else if (modeState == SsmInfo.ModeState.MODE_IDLE_UNREADY) { } else if (modeState == SsmInfo.ModeState.MODE_IDLE_UNREADY) {
unableAutopilotReason = "系统处于空闲模式(未就绪)"; unableAutopilotReason = manager.getString(R.string.adas_mode_idle_unready);
} else if (modeState == SsmInfo.ModeState.MODE_IDLE_READY) { } else if (modeState == SsmInfo.ModeState.MODE_IDLE_READY) {
unableAutopilotReason = "系统处于空闲模式"; unableAutopilotReason = manager.getString(R.string.adas_mode_idle_ready);
} else { } else {
unableAutopilotReason = "未知系统模式"; unableAutopilotReason = manager.getString(R.string.adas_unknown_system_mode);
} }
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, UnableLaunchReason.UnableType.SSM_OFFER, unableAutopilotReason);
} }
} }
} else { } else {
isAutopilotAbility = false;//是否能启动自动驾驶 isAutopilotAbility = false;//是否能启动自动驾驶
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, "SSM超时无响应"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.SSM_TIMEOUT, manager.getString(R.string.adas_ssm_timeout));
} }
if (fsmStatusReasonRespond != null) { if (fsmStatusReasonRespond != null) {
int count = fsmStatusReasonRespond.getFsmStatusReasonRespondCount(); int count = fsmStatusReasonRespond.getFsmStatusReasonRespondCount();
@@ -112,7 +115,7 @@ public class AutopilotAbility360 {
} }
} }
if (unableAutopilotReasons == null || unableAutopilotReasons.isEmpty()) { if (unableAutopilotReasons == null || unableAutopilotReasons.isEmpty()) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM_ERROR, "FSM数据异常"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM_ERROR, manager.getString(R.string.adas_fsm_data_error));
} }
} }
} }

View File

@@ -2,6 +2,7 @@ package com.zhidao.support.adas.high.common.autopilot.ability;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.zhidao.support.adas.high.R;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
@@ -38,7 +39,7 @@ public class AutopilotAbilityFSM {
protected void onCallbackFsm(Fsm2024.FSMStateMsg fsmState) { protected void onCallbackFsm(Fsm2024.FSMStateMsg fsmState) {
ArrayList<UnableLaunchReason> unableAutopilotReasons = null;//不能启动自动驾驶原因 ArrayList<UnableLaunchReason> unableAutopilotReasons = null;//不能启动自动驾驶原因
if (fsmState == null) { if (fsmState == null) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM2024_TIMEOUT, "FSM超时无响应"); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM2024_TIMEOUT, manager.getString(R.string.adas_fsm_timeout));
} else { } else {
if (!fsmState.getPilotStandbyFlag()) { if (!fsmState.getPilotStandbyFlag()) {
List<String> list = null; List<String> list = null;

View File

@@ -1,15 +1,19 @@
package com.zhidao.support.adas.high.common.autopilot.ability; package com.zhidao.support.adas.high.common.autopilot.ability;
import android.app.Application;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.ArrayRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.AdasOptions; import com.zhidao.support.adas.high.AdasOptions;
import com.zhidao.support.adas.high.BuildConfig; import com.zhidao.support.adas.high.BuildConfig;
import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.R;
import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhjt.mogo.adas.data.AdasConstants; import com.zhjt.mogo.adas.data.AdasConstants;
import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.LaunchConditionData;
@@ -45,8 +49,6 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
private static final String TAG = AutopilotAbilityManager.class.getSimpleName(); private static final String TAG = AutopilotAbilityManager.class.getSimpleName();
protected static final long DEFAULT_TIMEOUT = 5000L;//SSM和FSM超时时间 protected static final long DEFAULT_TIMEOUT = 5000L;//SSM和FSM超时时间
protected static final long DEFAULT_DETECTION_TIME = 3 * 1000L;//默认检测周期 protected static final long DEFAULT_DETECTION_TIME = 3 * 1000L;//默认检测周期
protected static final String[] NODE_INFO_STATE = {"未知状态", "依赖未就绪", "启动中", "运行", "停止", "无法启动状态", "人为启动状态", "人为关闭状态"};
protected static final String[] NODE_INFO_STATE_FIXED_FREQUENCY = {"未知状态", "依赖未就绪", "启动中", "运行", "停止", "无法启动状态", "非自动启动状态", "非自动关闭状态"};
private static volatile AutopilotAbilityManager INSTANCE; private static volatile AutopilotAbilityManager INSTANCE;
private OnAdasListener listener; private OnAdasListener listener;
@@ -75,6 +77,7 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
private final AtomicInteger isSupportFSM2024 = new AtomicInteger(-1);//-1未初始化 0不支持 1通过SSM V2判断支持 2通过FSM数据源判断支持 private final AtomicInteger isSupportFSM2024 = new AtomicInteger(-1);//-1未初始化 0不支持 1通过SSM V2判断支持 2通过FSM数据源判断支持
private final Map<AdasConstants.NodeName, NodeStateInfo> nodeStateInfos = new ConcurrentHashMap<>(); private final Map<AdasConstants.NodeName, NodeStateInfo> nodeStateInfos = new ConcurrentHashMap<>();
private int fsm2024Version = -1;//FSM2024版本 -1未初始化 0SSM判断存在FSM2024但是并不知道具体版本或根据FMS中Version解析失败 其他数值根据FSM数据中的version 判断得出 private int fsm2024Version = -1;//FSM2024版本 -1未初始化 0SSM判断存在FSM2024但是并不知道具体版本或根据FMS中Version解析失败 其他数值根据FSM数据中的version 判断得出
private Application context;
private AutopilotAbilityManager() { private AutopilotAbilityManager() {
} }
@@ -90,6 +93,10 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
return INSTANCE; return INSTANCE;
} }
public void init(@NonNull Application context) {
this.context = context;
}
private void initStartData() { private void initStartData() {
nodeStateInfos.clear(); nodeStateInfos.clear();
NodeStateInfo ssmInfo = new NodeStateInfo(AdasConstants.NodeName.SSM, AdasConstants.NodeState.NODE_EXIST); NodeStateInfo ssmInfo = new NodeStateInfo(AdasConstants.NodeName.SSM, AdasConstants.NodeState.NODE_EXIST);
@@ -129,7 +136,7 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
*/ */
protected ArrayList<UnableLaunchReason> addUnableAutopilotReason(ArrayList<UnableLaunchReason> unableAutopilotReasons, UnableLaunchReason.SourceType source, UnableLaunchReason.UnableType unableType, String unableAutopilotReason) { protected ArrayList<UnableLaunchReason> addUnableAutopilotReason(ArrayList<UnableLaunchReason> unableAutopilotReasons, UnableLaunchReason.SourceType source, UnableLaunchReason.UnableType unableType, String unableAutopilotReason) {
if (TextUtils.isEmpty(unableAutopilotReason)) { if (TextUtils.isEmpty(unableAutopilotReason)) {
unableAutopilotReason = "未知"; unableAutopilotReason = getString(R.string.adas_unknown);
} }
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add(unableAutopilotReason); list.add(unableAutopilotReason);
@@ -587,4 +594,22 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener {
isJLB2 = false; isJLB2 = false;
} }
public String getString(@StringRes int resId) {
if (context == null) return "";
try {
return context.getString(resId);
} catch (Exception e) {
return "";
}
}
public String[] getStringArray(@ArrayRes int resId) {
if (context == null) return new String[0];
try {
return context.getResources().getStringArray(resId);
} catch (Exception e) {
return new String[0];
}
}
} }

View File

@@ -2,6 +2,7 @@ package com.zhidao.support.adas.high.common.autopilot.ability;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.zhidao.support.adas.high.R;
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
import java.util.ArrayList; import java.util.ArrayList;
@@ -17,11 +18,6 @@ import mogo.telematics.pad.MessagePad;
*/ */
public abstract class BaseAutopilotAbilityChassis { public abstract class BaseAutopilotAbilityChassis {
protected final String TAG = this.getClass().getSimpleName(); protected final String TAG = this.getClass().getSimpleName();
private static final String REASON_CHASSIS_BRAKE = "刹车踏板";
private static final String REASON_CHASSIS_THROTTLE = "油门踏板";
private static final String REASON_CHASSIS_GEAR = "档位";
private static final String REASON_CHASSIS_HAZARD_LIGHTS = "危险报警灯";
private static final String REASON_CHASSIS_STEERING = "方向盘";
@NonNull @NonNull
protected final AutopilotAbilityManager manager; protected final AutopilotAbilityManager manager;
protected ChassisStatesOuterClass.ChassisStates chassisStates; protected ChassisStatesOuterClass.ChassisStates chassisStates;
@@ -116,26 +112,26 @@ public abstract class BaseAutopilotAbilityChassis {
if (chassisStates.hasBrakeSystemStates()) { if (chassisStates.hasBrakeSystemStates()) {
float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition(); float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition();
if (brake > 0) { if (brake > 0) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_BRAKE, REASON_CHASSIS_BRAKE); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_BRAKE, manager.getString(R.string.adas_reason_chassis_brake));
} }
} }
//油门踏板 //油门踏板
if (chassisStates.hasDrivingSystemStates()) { if (chassisStates.hasDrivingSystemStates()) {
float throttle = chassisStates.getDrivingSystemStates().getThrottleResponsePosition(); float throttle = chassisStates.getDrivingSystemStates().getThrottleResponsePosition();
if (throttle > 0) { if (throttle > 0) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_THROTTLE, REASON_CHASSIS_THROTTLE); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_THROTTLE, manager.getString(R.string.adas_reason_chassis_throttle));
} }
} }
//档位 //档位
if (chassisStates.hasGearSystemStates()) { if (chassisStates.hasGearSystemStates()) {
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition(); Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
if (!isLaunchAutopilotGear(gear)) { if (!isLaunchAutopilotGear(gear)) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_GEAR, REASON_CHASSIS_GEAR); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_GEAR, manager.getString(R.string.adas_reason_chassis_gear));
} }
} }
//危险报警灯 //危险报警灯
if (!isLaunchAutopilotLight()) { if (!isLaunchAutopilotLight()) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_HAZARD_LIGHTS, REASON_CHASSIS_HAZARD_LIGHTS); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_HAZARD_LIGHTS, manager.getString(R.string.adas_reason_chassis_hazard_lights));
} }
//方向盘 //方向盘
if (chassisStates.hasSteerSystemStates()) { if (chassisStates.hasSteerSystemStates()) {
@@ -150,7 +146,7 @@ public abstract class BaseAutopilotAbilityChassis {
oldSteering = steering; oldSteering = steering;
// CupidLogUtils.log(TAG, "方向盘是否转动=" + isTurning); // CupidLogUtils.log(TAG, "方向盘是否转动=" + isTurning);
if (isTurning) { if (isTurning) {
unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_STEERING, REASON_CHASSIS_STEERING); unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.CHASSIS_STEERING, manager.getString(R.string.adas_reason_chassis_steering));
} }
} }
} }

View File

@@ -0,0 +1,60 @@
<resources>
<string name="adas_time_out_period">超时时间:</string>
<string name="adas_last_refresh_time_difference">最后刷新时间时间差:</string>
<string name="adas_last_receive_heartbeat_time">最后一条Telematics心跳接收时间</string>
<string name="adas_last_receive_data_time">最后一条Telematics数据发送时间</string>
<string-array name="adas_node_info_state">
<item>未知状态</item>
<item>依赖未就绪</item>
<item>启动中</item>
<item>运行</item>
<item>停止</item>
<item>无法启动状态</item>
<item>人为启动状态</item>
<item>人为关闭状态</item>
</string-array>
<string-array name="adas_node_info_state_fixed_frequency">
<item>未知状态</item>
<item>依赖未就绪</item>
<item>启动中</item>
<item>运行</item>
<item>停止</item>
<item>无法启动状态</item>
<item>非自动启动状态</item>
<item>非自动关闭状态</item>
</string-array>
<string name="adas_unknown">未知</string>
<string name="adas_unknown_error">未知异常</string>
<string name="adas_unknown_error_node">未知异常节点</string>
<string name="adas_system_starting">系统正在启动</string>
<string name="adas_system_shutting_down">系统正在关闭</string>
<string name="adas_system_error">系统异常</string>
<string name="adas_parallel_drive_starting">平行驾驶启动中</string>
<string name="adas_parallel_drive_running">平行驾驶运行中</string>
<string name="adas_unknown_system_state">未知系统状态</string>
<string name="adas_ssm_find_timeout">SSM查询超时无响应</string>
<string name="adas_fsm_data_error">FSM数据异常</string>
<string name="adas_reason_chassis_brake">刹车踏板</string>
<string name="adas_reason_chassis_throttle">油门踏板</string>
<string name="adas_reason_chassis_gear">档位</string>
<string name="adas_reason_chassis_hazard_lights">危险报警灯</string>
<string name="adas_reason_chassis_steering">方向盘</string>
<string name="adas_mode_stop_unready">系统处于停止模式(未就绪)</string>
<string name="adas_mode_stop_ready">系统处于停止模式</string>
<string name="adas_mode_idle_unready">系统处于空闲模式(未就绪)</string>
<string name="adas_mode_idle_ready">系统处于空闲模式</string>
<string name="adas_unknown_system_mode">未知系统模式</string>
<string name="adas_ssm_timeout">SSM超时无响应</string>
<string name="adas_fsm_timeout">FSM超时无响应</string>
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
<!-- <string name="adas_"></string>-->
</resources>