Merge remote-tracking branch 'origin/base_3.4.0-map-sdk' into base_3.4.0-map-sdk
This commit is contained in:
@@ -245,16 +245,16 @@ exceptions:
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
NotImplementedDeclaration: #此规则报告引发的所有NotImplementedError类型的异常。它还报告所有TODO(..)函数。这表明功能仍在开发中,无法正常工作。这两种声明都只能作为临时声明,不应放入生产环境中
|
||||
active: false
|
||||
ObjectExtendsThrowable: #
|
||||
ObjectExtendsThrowable: #避免抛出单例Throwable
|
||||
active: false
|
||||
PrintStackTrace:
|
||||
PrintStackTrace: #打印堆栈
|
||||
active: true
|
||||
RethrowCaughtException:
|
||||
RethrowCaughtException: #重新抛出异常
|
||||
active: true
|
||||
ReturnFromFinally:
|
||||
ReturnFromFinally: # finally return
|
||||
active: true
|
||||
ignoreLabeled: false
|
||||
SwallowedException:
|
||||
SwallowedException: #报告所有捕获异常且未正确传递(例如作为原因)到新引发异常的实例
|
||||
active: true
|
||||
ignoredExceptionTypes:
|
||||
- 'InterruptedException'
|
||||
@@ -262,11 +262,11 @@ exceptions:
|
||||
- 'NumberFormatException'
|
||||
- 'ParseException'
|
||||
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||||
ThrowingExceptionFromFinally:
|
||||
ThrowingExceptionFromFinally: #报告从finally块抛出异常
|
||||
active: true
|
||||
ThrowingExceptionInMain:
|
||||
ThrowingExceptionInMain: #报告在主方法中引发的所有异常。只有当异常可以由“更高”的函数处理时,才应该抛出异常
|
||||
active: false
|
||||
ThrowingExceptionsWithoutMessageOrCause:
|
||||
ThrowingExceptionsWithoutMessageOrCause: #报告在没有参数或进一步描述的情况下抛出的所有异常
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
exceptions:
|
||||
@@ -279,9 +279,9 @@ exceptions:
|
||||
- 'NullPointerException'
|
||||
- 'RuntimeException'
|
||||
- 'Throwable'
|
||||
ThrowingNewInstanceOfSameException:
|
||||
ThrowingNewInstanceOfSameException: #异常不应封装在同一异常类型中,然后重新抛出。更喜欢用更有意义的异常类型包装异常
|
||||
active: true
|
||||
TooGenericExceptionCaught:
|
||||
TooGenericExceptionCaught: #规则为类型过于通用的异常报告捕获块。最好捕获当前处理的案例的特定异常,避免扩大区域
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
exceptionNames:
|
||||
@@ -294,7 +294,7 @@ exceptions:
|
||||
- 'RuntimeException'
|
||||
- 'Throwable'
|
||||
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||||
TooGenericExceptionThrown:
|
||||
TooGenericExceptionThrown: #规则报告类型过于通用的抛出异常。对于当前发生的情况,最好抛出特定的异常
|
||||
active: true
|
||||
exceptionNames:
|
||||
- 'Error'
|
||||
@@ -391,29 +391,30 @@ naming:
|
||||
|
||||
performance:
|
||||
active: true
|
||||
ArrayPrimitive:
|
||||
ArrayPrimitive: #使用Array<Primitive>会导致隐含拳击和性能打击。更喜欢使用Kotlin专用的数组实例
|
||||
active: true
|
||||
CouldBeSequence:
|
||||
CouldBeSequence: #由于每个调用都会创建一个新的列表,因此长链的收集操作将带来性能损失。请考虑使用序列
|
||||
active: false
|
||||
allowedOperations: 2
|
||||
ForEachOnRange:
|
||||
ForEachOnRange: #在一个范围内使用forEach可能会产生巨大的性能成本。因此,在大多数情况下,应该使用简单的for循环 (for example: {(1..10).forEach})
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
SpreadOperator:
|
||||
SpreadOperator: #在大多数情况下,使用排列运算符会导致在调用方法之前创建数组的完整副本。这会带来非常高的性能损失
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
UnnecessaryPartOfBinaryExpression:
|
||||
UnnecessaryPartOfBinaryExpression: #仅在表达式仅使用以下运算符之一||或&&的情况下验证二进制表达式
|
||||
active: false
|
||||
UnnecessaryTemporaryInstantiation:
|
||||
UnnecessaryTemporaryInstantiation: #将基元类型转换为字符串时,请避免使用临时对象。与直接使用基元类型相比,这会降低性能。若要解决此问题,请删除包装类型
|
||||
active: true
|
||||
|
||||
#潜在错误规则集提供了检测潜在错误的规则。
|
||||
potential-bugs:
|
||||
active: true
|
||||
AvoidReferentialEquality:
|
||||
AvoidReferentialEquality: #检查平等
|
||||
active: true
|
||||
forbiddenTypePatterns:
|
||||
- 'kotlin.String'
|
||||
CastNullableToNonNullableType:
|
||||
CastNullableToNonNullableType: #可空强转null
|
||||
active: false
|
||||
ignorePlatformTypes: true
|
||||
CastToNullableType:
|
||||
|
||||
@@ -894,13 +894,9 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
|
||||
override fun onParallelDrivingAbility(
|
||||
isParallelDrivingAbility: Boolean,
|
||||
unableParallelDrivingReasons: java.util.ArrayList<UnableLaunchReason>?
|
||||
isParallelDrivingAbility: Boolean
|
||||
) {
|
||||
CallerParallelDrivingActionsListenerManager.invokeParallelDrivingAbility(
|
||||
isParallelDrivingAbility,
|
||||
unableParallelDrivingReasons
|
||||
)
|
||||
CallerParallelDrivingActionsListenerManager.invokeParallelDrivingAbility(isParallelDrivingAbility)
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
|
||||
@@ -152,8 +152,7 @@ class ParallelDriveView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onParallelDrivingAbility(
|
||||
isParallelDrivingAbility: Boolean,
|
||||
unableParallelDrivingReasons: ArrayList<UnableLaunchReason>?
|
||||
isParallelDrivingAbility: Boolean
|
||||
) {
|
||||
if (!isParallelDrivingAbility) {
|
||||
Log.d(TAG, "onParallelDrivingAbility-UNAVAILABLE")
|
||||
|
||||
@@ -8,8 +8,5 @@ import com.zhjt.mogo.adas.data.bean.UnableLaunchReason
|
||||
*/
|
||||
interface IMoGoAutopilotActionsListener {
|
||||
|
||||
/**
|
||||
* pnc actions 决策 驾驶的意图
|
||||
*/
|
||||
fun onAutopilotAbility(isAutopilotAbility: Boolean, unableAutopilotReasons: ArrayList<UnableLaunchReason>?)
|
||||
}
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.mogo.eagle.core.function.api.autopilot
|
||||
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason
|
||||
|
||||
|
||||
/**
|
||||
* 平行驾驶能力 能否启动平行驾驶
|
||||
*/
|
||||
interface IMoGoParallelDrivingActionsListener {
|
||||
|
||||
|
||||
fun onParallelDrivingAbility(isParallelDrivingAbility: Boolean, unableParallelDrivingReasons: ArrayList<UnableLaunchReason>?)
|
||||
fun onParallelDrivingAbility(isParallelDrivingAbility: Boolean)
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package com.mogo.eagle.core.function.call.autopilot
|
||||
import android.util.Log
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingActionsListener
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason
|
||||
|
||||
|
||||
/**
|
||||
@@ -14,23 +13,9 @@ object CallerParallelDrivingActionsListenerManager :
|
||||
@Volatile
|
||||
private var isConnected = false
|
||||
private var isParallelDrivingAbility: Boolean = false
|
||||
private var unableParallelDrivingReasons: ArrayList<UnableLaunchReason>? = null
|
||||
|
||||
init {
|
||||
isParallelDrivingAbility = false
|
||||
unableParallelDrivingReasons = disconnectedReason()
|
||||
}
|
||||
|
||||
private fun disconnectedReason(): ArrayList<UnableLaunchReason> {
|
||||
val list = ArrayList<UnableLaunchReason>()
|
||||
list.add(
|
||||
UnableLaunchReason(
|
||||
UnableLaunchReason.SourceType.LIB,
|
||||
UnableLaunchReason.UnableType.DISCONNECTED,
|
||||
"未连接自动驾驶系统"
|
||||
)
|
||||
)
|
||||
return list
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -40,44 +25,19 @@ object CallerParallelDrivingActionsListenerManager :
|
||||
return isParallelDrivingAbility
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取不能启动平行驾驶的原因
|
||||
* null:表示没有任何原因证,证明isParallelDrivingAbility为true
|
||||
*/
|
||||
fun getUnableParallelDrivingReasons(): ArrayList<UnableLaunchReason>? {
|
||||
return unableParallelDrivingReasons
|
||||
}
|
||||
|
||||
fun setConnected(isConnected: Boolean) {
|
||||
if (this.isConnected != isConnected) {
|
||||
this.isConnected = isConnected
|
||||
this.isParallelDrivingAbility = isConnected
|
||||
unableParallelDrivingReasons = if (isConnected) null else disconnectedReason()
|
||||
notification()
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun invokeParallelDrivingAbility(
|
||||
isAutopilotAbility: Boolean, unableAutopilotReasons: ArrayList<UnableLaunchReason>?
|
||||
) {
|
||||
fun invokeParallelDrivingAbility(isAutopilotAbility: Boolean) {
|
||||
if (isConnected) {
|
||||
var isEquals: Boolean = true
|
||||
if (unableAutopilotReasons != null && this.unableParallelDrivingReasons != null) {
|
||||
unableAutopilotReasons.let { onw ->
|
||||
onw.sortWith(compareBy(UnableLaunchReason::hashCode));
|
||||
this.unableParallelDrivingReasons?.let { old ->
|
||||
old.sortWith(compareBy(UnableLaunchReason::hashCode));
|
||||
isEquals = onw.toTypedArray() contentEquals old.toTypedArray()
|
||||
|
||||
}
|
||||
}
|
||||
} else isEquals =
|
||||
!(unableAutopilotReasons != null || this.unableParallelDrivingReasons != null)
|
||||
|
||||
if (this.isParallelDrivingAbility != isAutopilotAbility || !isEquals) {
|
||||
if (this.isParallelDrivingAbility != isAutopilotAbility) {
|
||||
this.isParallelDrivingAbility = isAutopilotAbility
|
||||
this.unableParallelDrivingReasons = unableAutopilotReasons
|
||||
notification()
|
||||
}
|
||||
}
|
||||
@@ -86,13 +46,12 @@ object CallerParallelDrivingActionsListenerManager :
|
||||
private fun notification() {
|
||||
Log.i(
|
||||
"xfk",
|
||||
"是否可以启动平行驾驶=" + isParallelDrivingAbility + if (unableParallelDrivingReasons == null) "" else unableParallelDrivingReasons.toString()
|
||||
"是否可以启动平行驾驶=$isParallelDrivingAbility"
|
||||
)
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onParallelDrivingAbility(
|
||||
isParallelDrivingAbility,
|
||||
unableParallelDrivingReasons
|
||||
isParallelDrivingAbility
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,11 +51,14 @@ object CallerMapRoadListenerManager {
|
||||
}
|
||||
}
|
||||
|
||||
private var mCross: Boolean by Delegates.observable(false) { _, oldValue, newValue ->
|
||||
private var mCross: Int by Delegates.observable(-1) { _, oldValue, newValue ->
|
||||
if (oldValue != newValue) {
|
||||
CallerLogger.d("$M_MAP onRoadChange", newValue)
|
||||
listeners.forEach { entry ->
|
||||
entry.value.onRoadChange(newValue)
|
||||
when(newValue){
|
||||
1,2 -> entry.value.onRoadChange(false)
|
||||
else -> entry.value.onRoadChange(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,7 +69,7 @@ object CallerMapRoadListenerManager {
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_HD_MAP_ROAD_CROSS,
|
||||
paramIndexes = [0, 1]
|
||||
)
|
||||
fun invokeRoadChange(cross: Boolean, roadCross: RoadCross) {
|
||||
fun invokeRoadChange(cross: Int, roadCross: RoadCross) {
|
||||
mCross = cross
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import android.text.TextUtils;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 不能启动自动驾驶或不能启动平行驾驶的原因
|
||||
* 不能启动自动驾驶的原因
|
||||
*/
|
||||
public class UnableLaunchReason {
|
||||
|
||||
@@ -17,7 +17,7 @@ public class UnableLaunchReason {
|
||||
}
|
||||
|
||||
/**
|
||||
* 影响启动自驾或启动平行驾驶的具体类型
|
||||
* 影响启动自驾的具体类型
|
||||
*/
|
||||
public enum UnableType {
|
||||
DISCONNECTED,//未连接
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zhidao.support.adas.high;
|
||||
|
||||
import com.zhidao.support.adas.high.common.ParallelDrivingManager;
|
||||
import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityManager;
|
||||
import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions;
|
||||
|
||||
@@ -203,6 +202,5 @@ public class AdasOptions {
|
||||
|
||||
public void setUnableLaunchAutopilotGear(Set<Chassis.GearPosition> unableLaunchAutopilotGear) {
|
||||
AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(unableLaunchAutopilotGear);
|
||||
ParallelDrivingManager.getInstance().setUnableLaunchParallelDrivingGear(unableLaunchAutopilotGear);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -478,9 +478,8 @@ public interface OnAdasListener {
|
||||
* 是否有能力启动平行驾驶
|
||||
*
|
||||
* @param isParallelDrivingAbility 是否能启动平行驾驶
|
||||
* @param unableParallelDrivingReasons 不能启动平行驾驶原因
|
||||
*/
|
||||
void onParallelDrivingAbility(boolean isParallelDrivingAbility, @Nullable ArrayList<UnableLaunchReason> unableParallelDrivingReasons);
|
||||
void onParallelDrivingAbility(boolean isParallelDrivingAbility);
|
||||
|
||||
/**
|
||||
* 启动自动驾驶失败回调
|
||||
|
||||
@@ -3,11 +3,7 @@ package com.zhidao.support.adas.high.common;
|
||||
|
||||
import com.zhidao.support.adas.high.AdasManager;
|
||||
import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
@@ -28,10 +24,10 @@ public class ParallelDrivingManager {
|
||||
private OnAdasListener listener;
|
||||
private ChassisStatesOuterClass.ChassisStates chassisStates;
|
||||
private VehicleStateOuterClass.VehicleState vehicleState;
|
||||
private int autopilotState;
|
||||
/**
|
||||
* 不能启动平行驾驶的档位
|
||||
*/
|
||||
private Set<Chassis.GearPosition> unableLaunchParallelDrivingGear;
|
||||
private int mapVersion = -1;//工控机版本
|
||||
private boolean isHQ = false;//是否是HQ
|
||||
private boolean isDF = false;//是否是DF
|
||||
@@ -73,80 +69,60 @@ public class ParallelDrivingManager {
|
||||
this.vehicleState = vehicleState;
|
||||
}
|
||||
|
||||
public void setUnableLaunchParallelDrivingGear(Set<Chassis.GearPosition> unableLaunchParallelDrivingGear) {
|
||||
if (unableLaunchParallelDrivingGear != null) {
|
||||
this.unableLaunchParallelDrivingGear = new HashSet<>(unableLaunchParallelDrivingGear);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前档位是否能启动自动驾驶 如果不传递默认可以启动
|
||||
* 不能启动自驾档位规则:app/README.md/不能启动自动驾驶的档位
|
||||
* 只使用老的自动驾驶状态接口原因:新的状态接口(FunctionStatesMessage)同时会上线FSM自有的检测更能,所以不需要在鹰眼中检测
|
||||
*
|
||||
* @param currentGear 当前档位
|
||||
* @return 是否能启动自驾
|
||||
* @param autopilotState
|
||||
*/
|
||||
private boolean isLaunchAutopilot(Chassis.GearPosition currentGear) {
|
||||
if (unableLaunchParallelDrivingGear != null && !unableLaunchParallelDrivingGear.isEmpty()) {
|
||||
return !unableLaunchParallelDrivingGear.contains(currentGear);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加不能启动平行驾驶的原因
|
||||
*
|
||||
* @param unableParallelDrivingReasons 原因列表
|
||||
* @param source 来源
|
||||
* @param unableParallelDrivingReason 云隐
|
||||
* @return 原因列表
|
||||
*/
|
||||
public static ArrayList<UnableLaunchReason> addUnableParallelDrivingReason(ArrayList<UnableLaunchReason> unableParallelDrivingReasons, UnableLaunchReason.SourceType source, UnableLaunchReason.UnableType unableType, String unableParallelDrivingReason) {
|
||||
if (unableParallelDrivingReasons == null) {
|
||||
unableParallelDrivingReasons = new ArrayList<>();
|
||||
}
|
||||
unableParallelDrivingReasons.add(new UnableLaunchReason(source, unableType, unableParallelDrivingReason));
|
||||
return unableParallelDrivingReasons;
|
||||
public void setAutopilotState(int autopilotState) {
|
||||
this.autopilotState = autopilotState;
|
||||
}
|
||||
|
||||
private void onCallback() {
|
||||
boolean isParallelDrivingAbility = true;//是否能启动平行驾驶
|
||||
ArrayList<UnableLaunchReason> unableParallelDrivingReasons = null;//不能启动平行驾驶原因
|
||||
float brake = 0;
|
||||
Chassis.GearPosition gear = null;
|
||||
float throttle = 0;
|
||||
boolean isBrake = false;
|
||||
//检测底盘相关
|
||||
if (chassisStates != null) {
|
||||
if (chassisStates.hasBrakeSystemStates()) {
|
||||
float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition();
|
||||
if (brake > 0) {
|
||||
isParallelDrivingAbility = false;
|
||||
unableParallelDrivingReasons = addUnableParallelDrivingReason(unableParallelDrivingReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.BRAKE, "制动踏板被踩下");
|
||||
}
|
||||
brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition();
|
||||
CupidLogUtils.i(TAG, "刹车=" + brake);
|
||||
} else {
|
||||
CupidLogUtils.i(TAG, "刹车=未赋值");
|
||||
}
|
||||
if (chassisStates.hasGearSystemStates()) {
|
||||
Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition();
|
||||
if (!isLaunchAutopilot(gear)) {
|
||||
isParallelDrivingAbility = false;
|
||||
unableParallelDrivingReasons = addUnableParallelDrivingReason(unableParallelDrivingReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.GEAR, "档位异常");
|
||||
}
|
||||
gear = chassisStates.getGearSystemStates().getGearPosition();
|
||||
CupidLogUtils.i(TAG, "档位=" + gear);
|
||||
} else {
|
||||
CupidLogUtils.i(TAG, "档位=未赋值");
|
||||
}
|
||||
if (chassisStates.hasDrivingSystemStates()) {
|
||||
throttle = chassisStates.getDrivingSystemStates().getThrottleResponsePosition();
|
||||
CupidLogUtils.i(TAG, "油门=" + throttle);
|
||||
} else {
|
||||
CupidLogUtils.i(TAG, "油门=未赋值");
|
||||
}
|
||||
}
|
||||
if (vehicleState != null) {
|
||||
//TODO 关于手刹:目前只有老底盘中存在这个字段,df360开始,其他车型未知
|
||||
//电子驻车制动系统
|
||||
if (vehicleState.hasParkingBrake()) {
|
||||
boolean isBrake = vehicleState.getParkingBrake();
|
||||
if (isBrake) {
|
||||
isParallelDrivingAbility = false;
|
||||
unableParallelDrivingReasons = addUnableParallelDrivingReason(unableParallelDrivingReasons, UnableLaunchReason.SourceType.CHASSIS, UnableLaunchReason.UnableType.PARKING_BRAKE, "施加驻车");
|
||||
}
|
||||
isBrake = vehicleState.getParkingBrake();
|
||||
CupidLogUtils.i(TAG, " 手刹=" + isBrake);
|
||||
} else {
|
||||
CupidLogUtils.i(TAG, " 手刹=未赋值");
|
||||
}
|
||||
}
|
||||
callListener(isParallelDrivingAbility, unableParallelDrivingReasons);
|
||||
CupidLogUtils.i(TAG, "自动驾驶状态=" + autopilotState + " 刹车=" + brake + " 档位=" + gear + " 油门=" + throttle + " 手刹=" + isBrake);
|
||||
//是否能启动平行驾驶 满足p档驻车+松开油门刹车或满足n档+电子手刹+松开油门刹车或非人工驾驶状态
|
||||
boolean isParallelDrivingAbility = autopilotState > 1 || (gear == Chassis.GearPosition.GEAR_P && brake <= 5 && throttle <= 5) || (gear == Chassis.GearPosition.GEAR_N && isBrake && brake <= 5 && throttle <= 5);
|
||||
callListener(isParallelDrivingAbility);
|
||||
}
|
||||
|
||||
private void callListener(boolean isParallelDrivingAbility, ArrayList<UnableLaunchReason> unableParallelDrivingReasons) {
|
||||
|
||||
private void callListener(boolean isParallelDrivingAbility) {
|
||||
if (listener != null) {
|
||||
listener.onParallelDrivingAbility(isParallelDrivingAbility, unableParallelDrivingReasons);
|
||||
listener.onParallelDrivingAbility(isParallelDrivingAbility);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +142,8 @@ public class ParallelDrivingManager {
|
||||
}, 2000L, 1000L);//延迟执行,避免刚连接成功后底盘信息无法及时同步
|
||||
}
|
||||
} else {
|
||||
callListener(false, addUnableParallelDrivingReason(null, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.INCOMPATIBLE, "当前域控版本无法通过鹰眼启动平行驾驶"));
|
||||
CupidLogUtils.e(TAG, "当前域控版本无法通过鹰眼启动平行驾驶 MAP版本=" + mapVersion);
|
||||
callListener(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.zhidao.support.adas.high.AdasManager;
|
||||
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.ParallelDrivingManager;
|
||||
import com.zhidao.support.adas.high.protocol.RawData;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
@@ -28,6 +29,7 @@ public class AutopilotStateMessage extends MyAbstractMessageHandler {
|
||||
if (AdasManager.getInstance().getCarConfig() == null || !(AdasManager.getInstance().getCarConfig().getMapVersion() >= 330 && AdasManager.getInstance().getCarConfig().getIsFutianSweeper())) {
|
||||
MessagePad.AutopilotState autopilotState = MessagePad.AutopilotState.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
|
||||
AdasChannel.calculateTimeConsumingOnDispatchRaw("自动驾驶状态", raw.receiveTime);
|
||||
ParallelDrivingManager.getInstance().setAutopilotState(autopilotState.getState());
|
||||
long nowTime = 0;
|
||||
if (CupidLogUtils.isEnableLog())
|
||||
nowTime = SystemClock.elapsedRealtime();
|
||||
|
||||
@@ -211,14 +211,20 @@ class AMapViewWrapper(mMapView: MapAutoView) : IMogoMapView, IMogoMapUIControlle
|
||||
oldValue?.let {
|
||||
//对驶入驶出路口做二次过滤,防止多次回调
|
||||
if (it.status == 0 && newValue!!.status == 1) {
|
||||
//进入路口
|
||||
//径直进入路口
|
||||
i("$M_MAP$TAG", "进入路口 :${newValue.cross_id}")
|
||||
invokeRoadChange(true, newValue)
|
||||
invokeRoadChange(0, newValue)
|
||||
}
|
||||
if ((it.status == 1 && newValue!!.status == 0) || (newValue!!.cross_id_end.isNotEmpty() && oldValue.cross_id_end != newValue.cross_id_end)) {
|
||||
//驶出路口
|
||||
if ((it.status == 1 && newValue!!.status == 0)) {
|
||||
//径直驶出路口
|
||||
i("$M_MAP$TAG", "驶出路口 上个:${oldValue.cross_id_end} , 下个:${newValue.cross_id_end}")
|
||||
invokeRoadChange(false, newValue)
|
||||
invokeRoadChange(1, newValue)
|
||||
return@let
|
||||
}
|
||||
if((newValue!!.cross_id_end.isNotEmpty() && oldValue.cross_id_end != newValue.cross_id_end)){
|
||||
//路口发生变化
|
||||
i("$M_MAP$TAG", "路段发生变化 上个:${oldValue.cross_id_end} , 下个:${newValue.cross_id_end}")
|
||||
invokeRoadChange(2, newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user