From 3f4d7caf3e96e8a40efdd30c0fa7ac92d95d32e6 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 25 Sep 2023 12:01:08 +0800 Subject: [PATCH] [6.1.0] fix bug of traffic light and v2n biz , plus change the range cross --- .../redlightwarning/RedLightWarningManager.kt | 8 ++--- .../core/MogoTrafficLightManager.kt | 34 ++++++++++++------- .../v2n/scenario/scene/airoad/AiRoadMarker.kt | 2 ++ .../function/biz/v2x/vip/VipCarManager.kt | 4 ++- .../datacenter/v2x/TrafficLightDispatcher.kt | 4 +-- .../function/hmi/ui/vehicle/PncActionsView.kt | 3 +- .../biz/trafficlight/TrafficLightResult.kt | 6 ++-- .../biz/trafficlight/TrafficLightStatus.kt | 7 ++-- 8 files changed, 43 insertions(+), 25 deletions(-) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/redlightwarning/RedLightWarningManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/redlightwarning/RedLightWarningManager.kt index 20d157fa0a..9beb4fd4fb 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/redlightwarning/RedLightWarningManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/redlightwarning/RedLightWarningManager.kt @@ -118,7 +118,7 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener, "$M_V2X$TAG", "路口经度为:${trafficLightResult.lon},纬度为:${trafficLightResult.lat};车的经度为:${it.longitude},纬度为:${it.latitude};两点距离为:${distance}" ) - val remainTime = trafficLightStatus.remain + val remainTime = trafficLightStatus.time() val arriveTime = distance / speed CallerLogger.d( "$M_V2X$TAG", @@ -235,7 +235,7 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener, EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), speed ) - if (content.isNullOrEmpty() || tts.isNullOrEmpty()) { + if (content.isEmpty() || tts.isEmpty()) { Log.d("MsgBox-RedLightWarManaG", "alertContent或ttsContent为空!") } CallerMsgBoxManager.saveMsgBox( @@ -263,8 +263,8 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener, CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) } - override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) { - gnssInfo?.let { + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + mogoLocation?.let { mLocation = it } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt index a4cbfcd60d..0132da1f0b 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -41,9 +41,7 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener, private var roadIDResult: RoadIDResult? = null @Volatile private var trafficLightResult: TrafficLightResult? = null - @Volatile - private var mCross: Boolean = false private var inRange: Boolean = false @Volatile private var firstLoopCrossRoad: Boolean = true //开启循环请求路口 @@ -125,7 +123,9 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener, override fun onRoadChange(cross: Boolean) { super.onRoadChange(cross) - mCross = cross + if(!cross){ + outOfCrossRange() + } } private fun checkOutOfRange() { @@ -133,24 +133,34 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener, roadIDResult?.let { // 检测是否开过路口,开过路口则停止读灯。并重置 trafficLightResult 值为 null if (trafficLightResult != null && it.isInRange(loc.latitude, loc.longitude)) { + if(inRange){ + return + } inRange = true -// CallerLogger.d(M_V2X + TAG, "进入路口") + CallerLogger.d(M_V2X + TAG, "进入路口") CallerTrafficLightListenerManager.invokeEnterCrossRoad(true) return } - if (inRange || !mCross) { -// CallerLogger.d(M_V2X + TAG, "离开路口") - CallerTrafficLightListenerManager.invokeEnterCrossRoad(false) - inRange = false - trafficLightResult = null - firstLoopCrossRoad = true - mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT) - CallerTrafficLightListenerManager.resetTrafficLightStatus() + if (inRange) { + outOfCrossRange() } } } } + private fun outOfCrossRange(){ + CallerLogger.d(M_V2X + TAG, "离开路口 , inRange:$inRange") + if(!inRange){ + return + } + CallerTrafficLightListenerManager.invokeEnterCrossRoad(false) + inRange = false + trafficLightResult = null + firstLoopCrossRoad = true + mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT) + CallerTrafficLightListenerManager.resetTrafficLightStatus() + } + fun getRoadResult(): RoadIDResult? { return roadIDResult } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt index c8f17091c6..f63ef682d9 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt @@ -123,6 +123,7 @@ class AiRoadMarker { } } + @Synchronized private fun realMark( marker: Marker, wrapper: MarkerWrapper, @@ -212,6 +213,7 @@ class AiRoadMarker { aiMakers.remove(id) } MarkerRemoveManager.addMarker(wrapper) + countDown.set(0) } private fun removeLine() { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt index 00425f7ffb..f8b8b54b48 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/vip/VipCarManager.kt @@ -11,6 +11,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight import com.mogo.eagle.core.data.biz.trafficlight.isGreen +import com.mogo.eagle.core.data.biz.trafficlight.time import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_VIP import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2N import com.mogo.eagle.core.data.enums.CommunicationType @@ -34,6 +35,7 @@ import com.mogo.eagle.function.biz.v2x.trafficlight.core.MogoTrafficLightManager import com.mogo.eagle.function.biz.v2x.v2n.utils.V2XEventAnalyticsManager import com.mogo.eagle.function.biz.v2x.vip.network.VipNetWorkModel import com.zhjt.service_biz.BizConfig +import kotlin.math.abs class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListener, Handler.Callback { @@ -133,7 +135,7 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe if (!turnLight) { // 首次判断,变灯 turnLight = true - val controlTime = if (currentResult!!.isGreen()) 45 - currentResult.remain else 45 + val controlTime = if (currentResult!!.isGreen()) 45 - abs(currentResult.time()) else 45 turnLight(controlTime) } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt index 89ce762699..902302fec5 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt @@ -293,10 +293,10 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight "updateTrafficLight ----- currentTrafficLight = $currentTrafficLight" ) currentTrafficLight?.let { - val remain = if (it.remain > 99) { + val remain = if (it.time() > 99) { 99 } else { - it.remain + it.time() } onTrafficLightPlusSource(it.convert(), remain, DataSourceType.AICLOUD) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt index aadf84df1d..028f485e6a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt @@ -10,6 +10,7 @@ import com.mogo.eagle.core.data.autopilot.pnc.PncActionsHelper import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight import com.mogo.eagle.core.data.biz.trafficlight.isRed +import com.mogo.eagle.core.data.biz.trafficlight.time import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_ACTIONS import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener @@ -137,7 +138,7 @@ class PncActionsView @JvmOverloads constructor( && mTrafficLightResult!!.currentRoadTrafficLight() != null && mTrafficLightResult!!.currentRoadTrafficLight()!!.isRed() ) { - mTrafficLightResult!!.currentRoadTrafficLight()!!.remain.toString() + mTrafficLightResult!!.currentRoadTrafficLight()!!.time().toString() } else { "" } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightResult.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightResult.kt index 276ddc2e42..6e80ea8eb8 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightResult.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightResult.kt @@ -18,13 +18,13 @@ fun TrafficLightResult.toTrafficLightDetail():MessagePad.TrafficLightDetail{ if(this.laneList != null){ left.phaseNo = this.laneList.left.phaseNo left.color = this.laneList.left.color - left.remain = this.laneList.left.remain + left.remain = this.laneList.left.time() mid.phaseNo = this.laneList.mid.phaseNo mid.color = this.laneList.mid.color - mid.remain = this.laneList.mid.remain + mid.remain = this.laneList.mid.time() right.phaseNo = this.laneList.right.phaseNo right.color = this.laneList.right.color - right.remain = this.laneList.right.remain + right.remain = this.laneList.right.time() } return trafficLightBuilder.build() } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt index 7587fcf105..8d07c66261 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/biz/trafficlight/TrafficLightStatus.kt @@ -25,13 +25,16 @@ fun TrafficLightStatus.turnRedAtOnce(): Boolean { return isFlashGreen() || isYellow() } +fun TrafficLightStatus.time():Int{ + return if(remain.contains("--") || remain.isEmpty()) -1 else remain.toInt() +} + /** * 红绿灯路口具体灯态信息 */ data class TrafficLightStatus( val phaseNo: String, //相位编号 val color: String, //灯态: 红灯-R,绿灯-G,绿闪-FG,黄-Y,B-黑 - val remain: Int //倒计时-秒 todo 云端string类型 如果返回 -- 解析异常 + val remain: String //倒计时-秒 todo 云端string类型 如果返回 -- 解析异常 ) { - } \ No newline at end of file