Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.0' into dev_robotaxi-d_240912_6.7.2_local

# Conflicts:
#	core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/roadcross/RoadCrossCameraManager.kt
#	core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/RoadCrossRoamView.kt
This commit is contained in:
donghongyu-pc
2024-10-17 18:53:06 +08:00
46 changed files with 857 additions and 299 deletions

View File

@@ -179,12 +179,14 @@ class MapContainerLayout @JvmOverloads constructor(
override fun onAnimationStart(animation: Animator) {
super.onAnimationStart(animation)
isPlayingAnim = true
overMapView.setIsPlaying(true)
overMapView.setMapFlag(isScaled)
}
override fun onAnimationCancel(animation: Animator) {
super.onAnimationCancel(animation)
isPlayingAnim = false
overMapView.setIsPlaying(false)
overMapView.swapSettings()
updateShadowBg(isScaled)
isScaled = !isScaled
@@ -199,6 +201,7 @@ class MapContainerLayout @JvmOverloads constructor(
override fun onAnimationEnd(animation: Animator) {
super.onAnimationEnd(animation)
isPlayingAnim = false
overMapView.setIsPlaying(false)
overMapView.swapSettings()
updateShadowBg(isScaled)
isScaled = !isScaled

View File

@@ -188,15 +188,6 @@ open class AutomaticExplorationView @JvmOverloads constructor(
})
automaticExplorationAdapter?.setData(dataList)
//每出现一次自动探查,增加相应的服务次数
//道路信息提醒次数
AutopilotSummaryInfo.infoTipNum += 9
//车辆行为提醒次数
AutopilotSummaryInfo.vehicleTipNum += 13
//弱势参与者提醒次数
AutopilotSummaryInfo.vulnerableTipNum += 4
//消除安全风险隐患次数
AutopilotSummaryInfo.dangerNum += 24
//启动扫描
ivScan?.let {
rotationAnim = ObjectAnimator.ofFloat(it, "rotation", 0f, 360f)

View File

@@ -196,9 +196,9 @@ class OperatePanelLayout : LinearLayout {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setDefaultVal(preferenceScreen)
setPreferenceChangeListener(preferenceScreen)
setPreferenceClickListener(preferenceScreen)
setDefaultVal(preferenceScreen)
}
protected open fun getDefaultVal(pref: Preference): Any? {
@@ -426,6 +426,11 @@ class OperatePanelLayout : LinearLayout {
KEY_V2I_TO_PNC -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.v2iToPNC = isChecked
FunctionBuildConfig.isFusionColor = isChecked //6.6.2版本基于运营需求-产品设计-v2i进pnc,感知目标颜色替换
FunctionBuildConfig.fusionMode = 2
CallerAutoPilotControlManager.sendFusionMode(2)
CallerHmiViewControlListenerManager.invokeFuncMode(IViewControlListener.FUNC_FUSION_COLOR,isChecked)
CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked)
hmiAction("V2I场景进PNC, ", isChecked)
clickEventAnalytics("V2I场景进PNC", isChecked)
@@ -980,7 +985,6 @@ class OperatePanelLayout : LinearLayout {
when(adasParam.fusionMode) {
1 -> {
//全融合模式
FunctionBuildConfig.fusionMode = 1
prevCheckedKeyForFusionMode?.takeIf { it != KEY_ALL_MERGE_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
@@ -994,7 +998,6 @@ class OperatePanelLayout : LinearLayout {
}
2 -> {
//盲区模式
FunctionBuildConfig.fusionMode = 2
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BLIND_AREA_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
@@ -1008,7 +1011,6 @@ class OperatePanelLayout : LinearLayout {
}
3 -> {
//超视距模式
FunctionBuildConfig.fusionMode = 3
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BEYOND_VISUAL_RANGE_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
@@ -1022,7 +1024,6 @@ class OperatePanelLayout : LinearLayout {
}
4 -> {
//透传模式
FunctionBuildConfig.fusionMode = 4
prevCheckedKeyForFusionMode?.takeIf { it != KEY_TRANSPARENT_TRANSFER_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {
@@ -1036,7 +1037,6 @@ class OperatePanelLayout : LinearLayout {
}
5 -> {
//纯路侧模式
FunctionBuildConfig.fusionMode = 5
prevCheckedKeyForFusionMode?.takeIf { it != KEY_PURE_OBU_MODE }?.let {
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
}?.also {

View File

@@ -69,6 +69,7 @@ import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuInfoListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_FUSION_COLOR
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_DEMO
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
import com.mogo.eagle.core.function.api.setting.ISopSettingListener
@@ -453,6 +454,8 @@ internal class DebugSettingView @JvmOverloads constructor(
//雨天、美化、点云设置同步
CallerSopSettingManager.addListener(TAG, this)
CallerHmiViewControlListenerManager.addListener(TAG, this)
//添加 业务配置监听
CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener(
FuncBizConfig.FOUNDATION, TAG, true, this
@@ -495,6 +498,7 @@ internal class DebugSettingView @JvmOverloads constructor(
//雨天、美化、点云设置同步
CallerSopSettingManager.removeListener(TAG)
CallerHmiViewControlListenerManager.removeListener(TAG)
// 移除 业务配置监听
CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(
@@ -2668,7 +2672,10 @@ internal class DebugSettingView @JvmOverloads constructor(
tbIsDemoMode.isChecked = FunctionBuildConfig.isDemoMode
}
if (tag == FUNC_MODE_RAIN) {
tbIsDemoMode.isChecked = FunctionBuildConfig.isRainMode
tbIsRainMode.isChecked = FunctionBuildConfig.isRainMode
}
if(tag == FUNC_FUSION_COLOR){
btnDrawFusion.isChecked = FunctionBuildConfig.isFusionColor
}
}

View File

@@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoGetParamResponseListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener
import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_FUSION_COLOR
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_DEMO
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
import com.mogo.eagle.core.function.api.setting.ISopSettingListener
@@ -250,6 +251,9 @@ internal class SOPSettingView @JvmOverloads constructor(
if (isChecked) {
//V2I场景进PNC
scV2iPnc.isChecked = FunctionBuildConfig.v2iToPNC
if(FunctionBuildConfig.v2iToPNC){
FunctionBuildConfig.isFusionColor = true //6.6.2版本基于运营需求-产品设计-开启v2i进pnc,开启感知目标颜色替换
}
hmiAction("SOP V2I场景进PNC, ", FunctionBuildConfig.v2iToPNC)
CallerAutoPilotControlManager.sendV2iToPncCmd(FunctionBuildConfig.v2iToPNC)
//闯红灯预警
@@ -265,6 +269,7 @@ internal class SOPSettingView @JvmOverloads constructor(
} else {
//V2I场景进PNC
scV2iPnc.isChecked = false
FunctionBuildConfig.isFusionColor = false //6.6.2版本基于运营需求-产品设计-关闭v2i进pnc,关闭感知目标颜色替换
CallerAutoPilotControlManager.sendV2iToPncCmd(false)
hmiAction("SOP V2I场景进PNC, ", false)
//闯红灯预警
@@ -345,6 +350,11 @@ internal class SOPSettingView @JvmOverloads constructor(
}
clickEventAnalytics("V2I场景进PNC",isChecked)
hmiAction("SOP V2I场景进PNC, ", isChecked)
FunctionBuildConfig.isFusionColor = isChecked //6.6.2版本基于运营需求-产品设计-v2i进pnc,感知目标颜色替换
FunctionBuildConfig.fusionMode = 2
CallerAutoPilotControlManager.sendFusionMode(2)
updateFusionModeUI()
CallerHmiViewControlListenerManager.invokeFuncMode(FUNC_FUSION_COLOR,isChecked)
CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked)
FunctionBuildConfig.v2iToPNC = isChecked
}
@@ -600,6 +610,9 @@ internal class SOPSettingView @JvmOverloads constructor(
clickEventAnalytics("考试功能面板",isChecked)
}
// 6.6.2 与海江确认,默认发盲区模式
CallerAutoPilotControlManager.sendFusionMode(2)
updateFusionModeUI()
//融合模式
rgFusionMode.setOnCheckedChangeListener { _, p1 ->
when (p1) {
@@ -1101,32 +1114,34 @@ internal class SOPSettingView @JvmOverloads constructor(
) {
//融合模式
ThreadUtils.runOnUiThread {
FunctionBuildConfig.fusionMode = adasParam.fusionMode
when (FunctionBuildConfig.fusionMode) {
1 -> {
//全融合模式
rgFusionMode.check(R.id.rbFullIntegration)
}
2 -> {
//盲区模式
rgFusionMode.check(R.id.rbBlind)
}
3 -> {
//超视距模式
rgFusionMode.check(R.id.rbBeyondSight)
}
4 -> {
//透传模式
rgFusionMode.check(R.id.rbTransparent)
}
5 -> {
//纯路侧模式
rgFusionMode.check(R.id.rbPureRoad)
}
}
updateFusionModeUI()
val overTakeSpeed = adasParam.overtakeMaxSpeed
tvOverTakeLimit.text = "$overTakeSpeed m/s"
}
}
private fun updateFusionModeUI(){
when (FunctionBuildConfig.fusionMode) {
1 -> {
//全融合模式
rgFusionMode.check(R.id.rbFullIntegration)
}
2 -> {
//盲区模式
rgFusionMode.check(R.id.rbBlind)
}
3 -> {
//超视距模式
rgFusionMode.check(R.id.rbBeyondSight)
}
4 -> {
//透传模式
rgFusionMode.check(R.id.rbTransparent)
}
5 -> {
//纯路侧模式
rgFusionMode.check(R.id.rbPureRoad)
}
}
}
}

View File

@@ -7,6 +7,7 @@ import android.os.Build
import android.os.CountDownTimer
import android.text.Html
import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.animation.LinearInterpolator
@@ -85,7 +86,6 @@ class ColdStartView @JvmOverloads constructor(
super.onAttachedToWindow()
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerColdStartStateListenerManager.addListener(TAG,this)
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
}
override fun onDetachedFromWindow() {
@@ -211,6 +211,9 @@ class ColdStartView @JvmOverloads constructor(
coldStartState: SsmInfo.ColdStartState?
) {
coldStartState?.let {
Log.i(TAG,"节点自上报冷启动状态="+it.eventStatus)
Log.i(TAG,"旧冷启动状态="+it.processStatus)
Log.i(TAG,"旧冷启动超时原因="+it.processTimeoutReason)
ThreadUtils.runOnUiThread {
if(it.eventStatus == SsmInfo.CSState.COLD_START_READY){
//冷启动就绪
@@ -219,6 +222,8 @@ class ColdStartView @JvmOverloads constructor(
tvColdStartContent.text = getColdStartEventStatus(it.eventStatus)
nodeStatusSb.clear()
it.nodeList.forEach {node->
Log.i(TAG,"node nodeName="+node.nodeName+"node status="+node.status)
val nodeDetail = node.nodeName+ " " + getColdStartNodeStatus(node.status)
if(node.status == SsmInfo.NodeStatus.NODE_FAILED || node.status ==SsmInfo.NodeStatus.NODE_TIMEOUT){
nodeStatusSb.append("<font color=\"#FFCD3D\">${nodeDetail}</font>")
@@ -321,8 +326,6 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
tvColdStartContent.visibility = View.GONE
//主动查询冷启动状态
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
}
/**
@@ -378,11 +381,11 @@ class ColdStartView @JvmOverloads constructor(
connectSSMTimer?.cancel()
//开始启动冷启动等待倒计时
coldStartProcess()
//主动查询冷启动状态
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
}
ssmConnectStatus = true
coldStartStatus = false
//主动查询冷启动状态
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
}
/**

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
import com.mogo.eagle.core.data.enums.DataSourceType
import com.mogo.eagle.core.data.enums.TrafficLightEnum
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.hmi.R
@@ -205,7 +206,7 @@ class FusionTrafficLightView @JvmOverloads constructor(
if(this@FusionTrafficLightView.visibility == View.GONE){
this@FusionTrafficLightView.visibility = View.VISIBLE
CallerHmiViewControlListenerManager.invokeV2XEvent(View.VISIBLE, TAG)
AutopilotSummaryInfo.lightServicesNum++
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.LIGHT)
}
val colorList = ArrayList<TrafficLightEnum>()

View File

@@ -7,6 +7,7 @@ import android.widget.ImageView
import android.widget.TextView
import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.view.TravelRealityView
import com.mogo.eagle.core.utilcode.util.ThreadUtils
@@ -70,26 +71,23 @@ open class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: In
}
//全息路口服务次数
tvIntersectionServicesNum = findViewById(R.id.tvIntersectionServicesNum)
tvIntersectionServicesNum?.text = CallerAutoPilotStatusListenerManager.getRoadCount().toString()
tvIntersectionServicesNum?.text = CallerServicesEventManager.getRoadNum().toString()
//路口灯态服务次数
tvLightServicesNum = findViewById(R.id.tvLightServicesNum)
tvLightServicesNum?.text = AutopilotSummaryInfo.lightServicesNum.toString()
tvLightServicesNum?.text = CallerServicesEventManager.getLightServicesNum().toString()
//道路信息提醒次数
tvInfoTipNum = findViewById(R.id.tvInfoTipNum)
AutopilotSummaryInfo.infoTipNum += random.nextInt(7) +2
tvInfoTipNum?.text = AutopilotSummaryInfo.infoTipNum.toString()
tvInfoTipNum?.text = CallerServicesEventManager.getInfoTipNum().toString()
//车辆行为提醒次数
tvVehicleTipNum = findViewById(R.id.tvVehicleTipNum)
AutopilotSummaryInfo.vehicleTipNum += random.nextInt(7) +2
tvVehicleTipNum?.text = AutopilotSummaryInfo.vehicleTipNum.toString()
tvVehicleTipNum?.text = CallerServicesEventManager.getVehicleTipNum().toString()
//弱势参与者提醒次数
tvVulnerableTipNum = findViewById(R.id.tvVulnerableTipNum)
AutopilotSummaryInfo.vulnerableTipNum += random.nextInt(7)+2
tvVulnerableTipNum?.text = AutopilotSummaryInfo.vulnerableTipNum.toString()
tvVulnerableTipNum?.text = CallerServicesEventManager.getVulnerableTipNum().toString()
//消除安全风险隐患次数
tvDangerNum = findViewById(R.id.tvDangerNum)
AutopilotSummaryInfo.dangerNum += random.nextInt(7)+2
tvDangerNum?.text = AutopilotSummaryInfo.dangerNum.toString()
val dangerNum = CallerServicesEventManager.getInfoTipNum()+ CallerServicesEventManager.getVehicleTipNum() + CallerServicesEventManager.getVulnerableTipNum()
tvDangerNum?.text = dangerNum.toString()
//通行效率提升:本期为假数据数据为百分数值为7-14%之间的随机数保留小数点后1位
tvEfficiencyNum = findViewById(R.id.tvEfficiencyNum)
val next: Float= random.nextInt(70).toFloat()/10
@@ -113,7 +111,12 @@ open class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: In
private fun showSummaryTipContent(){
ThreadUtils.runOnUiThread {
val vehicleServiceNum = AutopilotSummaryInfo.infoTipNum+ AutopilotSummaryInfo.vehicleTipNum + AutopilotSummaryInfo.vulnerableTipNum + AutopilotSummaryInfo.lightServicesNum + CallerAutoPilotStatusListenerManager.getRoadCount()
val vehicleServiceNum =
CallerServicesEventManager.getInfoTipNum()+
CallerServicesEventManager.getVehicleTipNum() +
CallerServicesEventManager.getVulnerableTipNum() +
CallerServicesEventManager.getLightServicesNum() +
CallerServicesEventManager.getRoadNum()
var smartRoadLen = 1000f
try {
smartRoadLen =random.nextFloat()*mileage
@@ -138,12 +141,7 @@ open class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: In
travelRealityView?.onPause()
travelRealityView?.onDestroy()
//对本次服务记录清零
AutopilotSummaryInfo.lightServicesNum = 0
AutopilotSummaryInfo.infoTipNum = 0
AutopilotSummaryInfo.vehicleTipNum = 0
AutopilotSummaryInfo.vulnerableTipNum = 0
AutopilotSummaryInfo.dangerNum = 0
CallerAutoPilotStatusListenerManager.resetRoadCount()
CallerServicesEventManager.resetServicesNum()
}
}

View File

@@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListen
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
@@ -54,6 +55,8 @@ class SingleTrafficLightView @JvmOverloads constructor(
private var trafficLightUser = 0 //0:默认1Taxi乘客屏肤色
private var isShowLight: Boolean = false
init{
context?.let {
val typedArray = it.obtainStyledAttributes(attrs, R.styleable.SingleTrafficLightView)
@@ -119,6 +122,7 @@ class SingleTrafficLightView @JvmOverloads constructor(
super.showTrafficLight(checkLightId, lightSource)
UiThreadHandler.post {
CallerLogger.d("$M_HMI$TAG","update checkLightId:$checkLightId, lightSource: $lightSource")
isShowLight = true
mCurrentLightId = checkLightId
updateTrafficLightIcon(checkLightId, lightSource)
}
@@ -400,4 +404,11 @@ class SingleTrafficLightView @JvmOverloads constructor(
}
}
override fun onVisibilityChanged(changedView: View, visibility: Int) {
super.onVisibilityChanged(changedView, visibility)
if(visibility == View.VISIBLE && isShowLight){
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.LIGHT)
}
}
}