From b6165fbb2d59ef59071fc198f9b0be43a7e16008 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 12 Nov 2021 13:13:37 +0800 Subject: [PATCH] fix bug --- .../trafficlight/TrafficLightHMIManager.kt | 8 +++ .../v2x/trafficlight/TrafficLightProvider.kt | 2 +- .../core/MogoTrafficLightManager.kt | 50 ++++++++----------- .../core/TrafficLightThreadHandler.kt | 2 +- .../network/TrafficLightApiService.kt | 2 +- .../network/TrafficLightNetWorkModel.kt | 3 +- .../core/function/v2x/vip/VipCarManager.kt | 9 +++- .../eagle/core/data/trafficlight/RoadArrow.kt | 5 +- .../core/data/trafficlight/RoadIDResult.kt | 6 +-- 9 files changed, 48 insertions(+), 39 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightHMIManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightHMIManager.kt index 76669939e0..d423f4a7b0 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightHMIManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightHMIManager.kt @@ -32,19 +32,27 @@ class TrafficLightHMIManager { CallerHmiManager.showWarningTrafficLight(3) if (trafficLightStatus.remain != 99999) { CallerHmiManager.changeCountdownGreen(trafficLightStatus.remain) + CallerHmiManager.changeCountdownRed(-1) + CallerHmiManager.changeCountdownYellow(-1) } } trafficLightStatus.isFlashGreen() -> { CallerHmiManager.showWarningTrafficLight(3) CallerHmiManager.changeCountdownGreen(trafficLightStatus.remain) + CallerHmiManager.changeCountdownRed(-1) + CallerHmiManager.changeCountdownYellow(-1) } trafficLightStatus.isYellow() -> { CallerHmiManager.showWarningTrafficLight(2) CallerHmiManager.changeCountdownYellow(trafficLightStatus.remain) + CallerHmiManager.changeCountdownGreen(-1) + CallerHmiManager.changeCountdownRed(-1) } trafficLightStatus.isRed() -> { CallerHmiManager.showWarningTrafficLight(1) CallerHmiManager.changeCountdownRed(trafficLightStatus.remain) + CallerHmiManager.changeCountdownGreen(-1) + CallerHmiManager.changeCountdownYellow(-1) } } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightProvider.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightProvider.kt index 995746b19d..9f606b63f0 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightProvider.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/TrafficLightProvider.kt @@ -38,7 +38,7 @@ class TrafficLightProvider : ITrafficLightProvider { } override fun onDestroy() { - //todo MogoTrafficLightManager onDestroy + MogoTrafficLightManager.INSTANCE.onDestroy() } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt index bc1247acc1..651aaa3cce 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -40,28 +40,18 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { fun initServer(context: Context) { mContext = context - MogoApisHandler.getInstance().apis.registerCenterApi.registerCarLocationChangedListener( - TAG, - this - ) - Logger.d(TAG, "ready to start mThreadHandler") + MogoApisHandler.getInstance().apis + .registerCenterApi.registerCarLocationChangedListener(TAG, this) mThreadHandler = TrafficLightThreadHandler(WorkThreadHandler.newInstance("TrafficLight").looper, { Logger.d(TAG, "loop search roadID , mLocation : $mLocation") mLocation?.let { it -> - val tileId = - MogoApisHandler.getInstance().apis.mapServiceApi.mapUIController.getTileId( - it.longitude, - it.latitude - ) + val tileId = MogoApisHandler.getInstance().apis + .mapServiceApi.mapUIController.getTileId(it.longitude, it.latitude) trafficLightNetWorkModel.requestRoadID( - tileId, - it.latitude, - it.longitude, - it.bearing.toDouble(), - { - mThreadHandler!!.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_CROSS_ROAD) + tileId, it.latitude, it.longitude, it.bearing.toDouble(), { + mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_CROSS_ROAD) roadId = it }, { @@ -72,12 +62,13 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { //stop loop search road id trafficLightNetWorkModel.cancelRequestRoadID() //开始请求红绿灯 - mThreadHandler!!.sendEmptyMessage(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT) + mThreadHandler?.sendEmptyMessage(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT) }, { //start loop traffic light mLocation?.let { + val road = if (roadId.isNullOrBlank()) "" else roadId!! trafficLightNetWorkModel.requestTrafficLight( - it.latitude, it.longitude, it.bearing.toDouble(), roadId!!, { result -> + it.latitude, it.longitude, it.bearing.toDouble(), road, { result -> trafficLightResult = result TrafficLightHMIManager.INSTANCE.updateTrafficLight(result) CallTrafficLightListenerManager.invokeTrafficLightStatus(result) @@ -90,12 +81,9 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { //stop loop traffic light trafficLightNetWorkModel.cancelRequestTrafficLight() //刚经过红绿灯,加入3秒延时请求路口ID - mThreadHandler!!.sendEmptyMessageDelayed( - MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, - 3_000L - ) + mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 3_000L) }) - mThreadHandler!!.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 5_000L) + mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 5_000L) } fun getTrafficLightCurrentState(): TrafficLightDetail? { @@ -126,18 +114,24 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { // 检测是否开过路口,开过路口则停止读灯。并重置 trafficLightResult 值为 null if (trafficLightResult != null && (CoordinateUtils.calculateLineDistance( - it.longitude, - it.latitude, - trafficLightResult!!.lon, - trafficLightResult!!.lat + it.longitude, it.latitude, + trafficLightResult!!.lon, trafficLightResult!!.lat ) < 5) ) { trafficLightResult = null TrafficLightHMIManager.INSTANCE.hideTrafficLight() CallTrafficLightListenerManager.resetTrafficLightData() - mThreadHandler!!.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT) + mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT) } } } + fun onDestroy() { + mThreadHandler = null + mContext = null + mLocation = null + roadId = null + trafficLightResult = null + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt index 9bddcf3ac6..49d17d7945 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt @@ -50,7 +50,7 @@ class TrafficLightThreadHandler : Handler { } MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT -> { loopSearchTrafficLight?.invoke() - sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT,500L) + sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT,600L) } MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT -> { if(hasMessages(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT)){ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightApiService.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightApiService.kt index 6badf1f773..d498cfa27d 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightApiService.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightApiService.kt @@ -16,7 +16,7 @@ interface TrafficLightApiService { //获取前方红绿灯状态 @FormUrlEncoded - @POST("mec-etl-server/light//bgd/channel/realTime") + @POST("mec-etl-server/light/bgd/channel/realTime") suspend fun getTrafficLight(@FieldMap status: Map): BaseResponse //变灯 diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt index d00e67ef45..89dc7addad 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt @@ -6,6 +6,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.BaseResponse import com.mogo.eagle.core.data.trafficlight.* import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightConst +import com.mogo.utils.logger.Logger import com.mogo.utils.network.apiCall import com.mogo.utils.network.cancel import com.mogo.utils.network.request @@ -39,7 +40,7 @@ class TrafficLightNetWorkModel { } onSuccess { if (it.result != null) { - onSuccess.invoke(it.result.rSCrossId) + onSuccess.invoke(it.result.rsCrossId) } else { onError.invoke("requestRoadID result is null : ${it.result}") } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt index fa20ef0042..280db5f512 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt @@ -32,7 +32,8 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe } private var mContext: Context? = null - private var mLocation: Location? = null + private var mLocation:Location? = null + private var turnLightFirst = false private var turnLightEnd = true private var result: TrafficLightResult? = null @@ -80,7 +81,11 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe } override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) { - turnLight() + if (!turnLightFirst) { + // 首次判断,变灯 + turnLightFirst = true + turnLight() + } this.result = trafficLightResult //如果上次结果和本次灯态结果变化比较大,则已变灯,控制HMI展示弹窗 if ((result!!.laneList.mid.remain - trafficLightResult.laneList.mid.remain) > 3) { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadArrow.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadArrow.kt index 7ec5d679e2..c63ba750d1 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadArrow.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadArrow.kt @@ -11,10 +11,11 @@ class RoadArrow { private const val TURN_LEFT = 205 //左转 private const val TURN_LEFT_OR_U_TURN = 206 //左转或转向 private const val TURN_RIGHT = 206 //右转 + private const val TURN_LEFT_OR_RIGHT = 210 //左右转向 const val U_TURN = 211 //转向 fun isLeft(arrowId: Int): Boolean { - return arrowId == STRAIGHT_OR_LEFT || arrowId == TURN_LEFT || arrowId == TURN_LEFT_OR_U_TURN + return arrowId == STRAIGHT_OR_LEFT || arrowId == TURN_LEFT || arrowId == TURN_LEFT_OR_U_TURN || arrowId == TURN_LEFT_OR_RIGHT } fun isStraight(arrowId: Int): Boolean { @@ -22,7 +23,7 @@ class RoadArrow { } fun isRight(arrowId: Int): Boolean { - return arrowId == TURN_RIGHT || arrowId == STRAIGHT_OR_RIGHT + return arrowId == TURN_RIGHT || arrowId == STRAIGHT_OR_RIGHT || arrowId == TURN_LEFT_OR_RIGHT } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadIDResult.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadIDResult.kt index 9d85272dcb..d3a4804277 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadIDResult.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/RoadIDResult.kt @@ -7,10 +7,10 @@ package com.mogo.eagle.core.data.trafficlight * distance : 当前车道需驶入到距离终点距离 * baseLaneInfoList : 驶入路口需要经过路段 */ -class RoadIDResult( - val rSCrossId: String, +data class RoadIDResult( + val rsCrossId: String, val crossId: String, val distance: Double, - val baseLaneInfoList: BaseLaneInfoList + val baseLaneInfoList: List ) { } \ No newline at end of file