[opt3.0][mogo-adas]修改m1不能启动自动驾驶的档位
This commit is contained in:
@@ -4,6 +4,9 @@ import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityMan
|
||||
import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import chassis.Chassis;
|
||||
|
||||
/**
|
||||
* Date:2019/5/31。
|
||||
@@ -126,13 +129,13 @@ public class AdasOptions {
|
||||
}
|
||||
|
||||
/**
|
||||
* 身份/车型
|
||||
* 不能启动自驾的档位
|
||||
*
|
||||
* @param identityMode 车型
|
||||
* @param unableLaunchAutopilotGear 档位
|
||||
* @return
|
||||
*/
|
||||
public Builder setIdentityMode(String identityMode) {
|
||||
options.setIdentityMode(identityMode);
|
||||
public Builder setUnableLaunchAutopilotGear(Set<Chassis.GearPosition> unableLaunchAutopilotGear) {
|
||||
options.setUnableLaunchAutopilotGear(unableLaunchAutopilotGear);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -153,7 +156,7 @@ public class AdasOptions {
|
||||
options.ipcAssignIP = null;
|
||||
options.ipcFixationIP = null;
|
||||
options.subscribeInterfaceOptions = null;
|
||||
options.setIdentityMode("");
|
||||
options.setUnableLaunchAutopilotGear(null);
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -197,7 +200,7 @@ public class AdasOptions {
|
||||
this.subscribeInterfaceOptions = subscribeInterfaceOptions;
|
||||
}
|
||||
|
||||
public void setIdentityMode(String identityMode) {
|
||||
AutopilotAbilityManager.getInstance().setIdentityMode(identityMode);
|
||||
public void setUnableLaunchAutopilotGear(Set<Chassis.GearPosition> unableLaunchAutopilotGear) {
|
||||
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(unableLaunchAutopilotGear);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.zhidao.support.adas.high.common.autopilot.ability;
|
||||
|
||||
import com.zhidao.support.adas.high.OnAdasListener;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
@@ -31,10 +28,6 @@ public class AutopilotAbility230 {
|
||||
}
|
||||
|
||||
private void onCallback() {
|
||||
//金旅、开沃小巴乘客端 不能启动自动驾驶
|
||||
if (AutopilotAbilityManager.getInstance().isBusPassenger()) {
|
||||
return;
|
||||
}
|
||||
boolean isAutopilotAbility = true;//是否能启动自动驾驶
|
||||
String unableAutopilotReason = null;//不能启动自动驾驶原因
|
||||
//检测底盘相关
|
||||
@@ -47,36 +40,14 @@ public class AutopilotAbility230 {
|
||||
}
|
||||
}
|
||||
if (isAutopilotAbility) {
|
||||
/**
|
||||
* 档位状态判断 目前判断的车型包括 东风Taxi 红旗Taxi 金旅Bus 金旅M1 金旅M1 福田清扫车 开沃
|
||||
* TODO 如果 identityMode 未赋值以及目前已知其他车型判断逻辑跟东风Taxi和红旗 走
|
||||
*/
|
||||
//开沃任何档位都能启动自驾
|
||||
if (!AutopilotAbilityManager.getInstance().isBusDriverVan()) {
|
||||
if (chassisStates.hasGearSystemStates()) {
|
||||
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
|
||||
//金旅Bus和清扫车 档位不正常
|
||||
if (AutopilotAbilityManager.getInstance().isBusDriver()) {
|
||||
if (gear == Chassis.GearPosition.GEAR_N || gear == Chassis.GearPosition.GEAR_R) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
} else if (AutopilotAbilityManager.getInstance().isSweeperDriverFutian()) {
|
||||
if (gear == Chassis.GearPosition.GEAR_N) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
} else {
|
||||
//东风Taxi和红旗 司机端和乘客端 档位不正常
|
||||
if (gear == Chassis.GearPosition.GEAR_P || gear == Chassis.GearPosition.GEAR_R) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
}
|
||||
if (chassisStates.hasGearSystemStates()) {
|
||||
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
|
||||
if (!AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear)) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO 关于手刹:不同车型的实现不同所以目前没法使用此字段
|
||||
// if (isAutopilotAbility) {
|
||||
// //电子驻车制动系统
|
||||
@@ -88,9 +59,7 @@ public class AutopilotAbility230 {
|
||||
// }
|
||||
// }
|
||||
}
|
||||
if (AutopilotAbilityManager.getInstance().getListener() != null) {
|
||||
AutopilotAbilityManager.getInstance().getListener().onAutopilotAbility(isAutopilotAbility, unableAutopilotReason);
|
||||
}
|
||||
AutopilotAbilityManager.getInstance().onAutopilotAbility(isAutopilotAbility, unableAutopilotReason);
|
||||
}
|
||||
|
||||
public synchronized void start() {
|
||||
@@ -114,5 +83,4 @@ public class AutopilotAbility230 {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -45,10 +45,6 @@ public class AutopilotAbility250 {
|
||||
}
|
||||
|
||||
private void onCallback(SystemStatusInfo.StatusInfo statusInfo) {
|
||||
//金旅、开沃小巴乘客端 不能启动自动驾驶
|
||||
if (AutopilotAbilityManager.getInstance().isBusPassenger()) {
|
||||
return;
|
||||
}
|
||||
boolean isAutopilotAbility = true;//是否能启动自动驾驶
|
||||
String unableAutopilotReason = null;//不能启动自动驾驶原因
|
||||
//检测节点状态相关
|
||||
@@ -122,36 +118,14 @@ public class AutopilotAbility250 {
|
||||
}
|
||||
}
|
||||
if (isAutopilotAbility) {
|
||||
/**
|
||||
* 档位状态判断 目前判断的车型包括 东风Taxi 红旗Taxi 金旅Bus 金旅M1 金旅M1 福田清扫车 开沃
|
||||
* TODO 如果 identityMode 未赋值以及目前已知其他车型判断逻辑跟东风Taxi和红旗 走
|
||||
*/
|
||||
//开沃任何档位都能启动自驾
|
||||
if (!AutopilotAbilityManager.getInstance().isBusDriverVan()) {
|
||||
if (chassisStates.hasGearSystemStates()) {
|
||||
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
|
||||
//金旅Bus和清扫车 档位不正常
|
||||
if (AutopilotAbilityManager.getInstance().isBusDriver()) {
|
||||
if (gear == Chassis.GearPosition.GEAR_N || gear == Chassis.GearPosition.GEAR_R) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
} else if (AutopilotAbilityManager.getInstance().isSweeperDriverFutian()) {
|
||||
if (gear == Chassis.GearPosition.GEAR_N) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
} else {
|
||||
//东风Taxi和红旗 司机端和乘客端 档位不正常
|
||||
if (gear == Chassis.GearPosition.GEAR_P || gear == Chassis.GearPosition.GEAR_R) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
}
|
||||
if (chassisStates.hasGearSystemStates()) {
|
||||
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
|
||||
if (!AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear)) {
|
||||
isAutopilotAbility = false;
|
||||
unableAutopilotReason = "档位不正常";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO 关于手刹:不同车型的实现不同所以目前没法使用此字段
|
||||
// if (isAutopilotAbility) {
|
||||
// //电子驻车制动系统
|
||||
@@ -163,9 +137,7 @@ public class AutopilotAbility250 {
|
||||
// }
|
||||
// }
|
||||
}
|
||||
if (AutopilotAbilityManager.getInstance().getListener() != null) {
|
||||
AutopilotAbilityManager.getInstance().getListener().onAutopilotAbility(isAutopilotAbility, unableAutopilotReason);
|
||||
}
|
||||
AutopilotAbilityManager.getInstance().onAutopilotAbility(isAutopilotAbility, unableAutopilotReason);
|
||||
}
|
||||
|
||||
public synchronized void start() {
|
||||
|
||||
@@ -10,11 +10,13 @@ import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.common.Constants;
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import chassis.Chassis;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import system_master.SystemStatusInfo;
|
||||
@@ -38,37 +40,14 @@ public class AutopilotAbilityManager {
|
||||
private AutopilotAbility250 autopilotAbility250;
|
||||
private Timer startTimer;
|
||||
/**
|
||||
* 身份/车型
|
||||
* 不能启动自动驾驶的档位
|
||||
*/
|
||||
private String identityMode;
|
||||
private Set<Chassis.GearPosition> unableLaunchAutopilotGear;
|
||||
|
||||
public interface OnAutopilotAbilityListener {
|
||||
void onStatusQuery();//查询是被调用
|
||||
}
|
||||
|
||||
/**
|
||||
* 身份规则定义根据app/productFlavors/README.md
|
||||
* * taxi司机屏 Taxi_Driver_Base (东风、红旗司机端)
|
||||
* * taxi乘客屏 Taxi_Passenger_Base (东风、红旗乘客端)
|
||||
* * bus司机屏 Bus_Driver_Base (金旅小巴司机端)
|
||||
* * Bus_Driver_Van (开沃小巴司机端)
|
||||
* * bus乘客屏 Bus_Passenger_Base (金旅、开沃小巴乘客端)
|
||||
* * Bus_Passenger_M1 (M1小巴乘客端)
|
||||
* * Bus_Passenger_M2 (M2小巴乘客端)
|
||||
* * 清扫车 Sweeper_Driver_FT (福田清扫车司机端)
|
||||
* <p>
|
||||
* 此定义不区分角色,只区分业务线和车型
|
||||
*/
|
||||
private interface IDENTITY_MODE {
|
||||
String TAXI_DRIVER_BASE = "Taxi_Driver_Base";//(东风、红旗司机端)
|
||||
String TAXI_PASSENGER_BASE = "Taxi_Passenger_Base";//(东风、红旗乘客端)
|
||||
String BUS_DRIVER_BASE = "Bus_Driver_Base";//(金旅小巴司机端)
|
||||
String BUS_DRIVER_VAN = "Bus_Driver_Van";//(开沃小巴司机端)
|
||||
String BUS_PASSENGER_BASE = "Bus_Passenger_Base";//(金旅、开沃小巴乘客端)
|
||||
String BUS_PASSENGER_M1 = "Bus_Passenger_M1";//(M1小巴乘客端)
|
||||
String BUS_PASSENGER_M2 = "Bus_Passenger_M2";//(M2小巴乘客端)
|
||||
String SWEEPER_DRIVER_FT = "Sweeper_Driver_FT";//(福田清扫车司机端)
|
||||
}
|
||||
|
||||
private AutopilotAbilityManager() {
|
||||
}
|
||||
@@ -84,8 +63,22 @@ public class AutopilotAbilityManager {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
public void setIdentityMode(String identityMode) {
|
||||
this.identityMode = identityMode;
|
||||
public void setUnableLaunchAutopilotGear(Set<Chassis.GearPosition> unableLaunchAutopilotGear) {
|
||||
this.unableLaunchAutopilotGear = unableLaunchAutopilotGear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前档位是否能启动自动驾驶 如果不传递默认可以启动
|
||||
* 不能启动自驾档位规则:app/README.md/不能启动自动驾驶的档位
|
||||
*
|
||||
* @param currentGear 当前档位
|
||||
* @return 是否能启动自驾
|
||||
*/
|
||||
public boolean isLaunchAutopilot(Chassis.GearPosition currentGear) {
|
||||
if (unableLaunchAutopilotGear != null && !unableLaunchAutopilotGear.isEmpty()) {
|
||||
return !unableLaunchAutopilotGear.contains(currentGear);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setCarConfig(MessagePad.CarConfigResp carConfig) {
|
||||
@@ -105,8 +98,10 @@ public class AutopilotAbilityManager {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public OnAdasListener getListener() {
|
||||
return listener;
|
||||
public void onAutopilotAbility(boolean isAutopilotAbility, String unableAutopilotReason) {
|
||||
if (listener != null) {
|
||||
listener.onAutopilotAbility(isAutopilotAbility, unableAutopilotReason);
|
||||
}
|
||||
}
|
||||
|
||||
public void setHandler(Handler handler) {
|
||||
@@ -243,32 +238,4 @@ public class AutopilotAbilityManager {
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* 金旅、开沃小巴乘客端
|
||||
*/
|
||||
public boolean isBusPassenger() {
|
||||
return IDENTITY_MODE.BUS_PASSENGER_BASE.equalsIgnoreCase(identityMode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开沃小巴司机端
|
||||
*/
|
||||
public boolean isBusDriverVan() {
|
||||
return IDENTITY_MODE.BUS_DRIVER_VAN.equalsIgnoreCase(identityMode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 金旅小巴司机端
|
||||
*/
|
||||
public boolean isBusDriver() {
|
||||
return IDENTITY_MODE.BUS_DRIVER_BASE.equalsIgnoreCase(identityMode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 福田清扫车司机端
|
||||
*/
|
||||
public boolean isSweeperDriverFutian() {
|
||||
return IDENTITY_MODE.SWEEPER_DRIVER_FT.equalsIgnoreCase(identityMode);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user