reset traffic light manager to main server

This commit is contained in:
zhongchao
2021-11-17 19:23:08 +08:00
parent 1347fb2ded
commit 2fa4e86baa

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.trafficlight.core
import android.content.Context
import android.location.Location
import android.os.Handler
import android.os.Looper
import com.mogo.cloud.commons.utils.CoordinateUtils
import com.mogo.eagle.core.data.map.MogoLatLng
import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail
@@ -14,7 +15,6 @@ import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHand
import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_STOP_SEARCH_CROSS_ROAD
import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT
import com.mogo.eagle.core.function.v2x.trafficlight.network.TrafficLightNetWorkModel
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.module.common.MogoApisHandler
import com.mogo.utils.logger.Logger
@@ -43,58 +43,60 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 {
MogoApisHandler.getInstance().apis
.registerCenterApi.registerCarLocationChangedListener(TAG, this)
mThreadHandler =
TrafficLightThreadHandler(WorkThreadHandler.newInstance("TrafficLight").looper,
{
Logger.d(TAG, "loop search roadID , mLocation : $mLocation")
TrafficLightThreadHandler(Looper.getMainLooper(), {
Logger.d(TAG, "loop search roadID , mLocation : $mLocation")
//查询路口时,如果红绿灯显示,则隐藏掉
if(TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()){
TrafficLightHMIManager.INSTANCE.hideTrafficLight()
CallTrafficLightListenerManager.resetTrafficLightData()
}
//查询路口时,如果红绿灯显示,则隐藏掉
if (TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()) {
TrafficLightHMIManager.INSTANCE.hideTrafficLight()
CallTrafficLightListenerManager.resetTrafficLightData()
}
mLocation?.let { it ->
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)
roadId = it
},
{
Logger.d(TAG, "request road id error : $it")
})
}
}, {
//stop loop search road id
trafficLightNetWorkModel.cancelRequestRoadID()
//开始请求红绿灯
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(), road, { result ->
trafficLightResult = result
TrafficLightHMIManager.INSTANCE.updateTrafficLight(result)
CallTrafficLightListenerManager.invokeTrafficLightStatus(result)
},
{ errorMsg ->
//如果没有获取到正确的红绿灯数据,则取消读灯,继续读路口,防止出现一直读灯的情况
Logger.d(TAG, "request Traffic Light error : $errorMsg")
//stop loop traffic light
trafficLightNetWorkModel.cancelRequestTrafficLight()
//未查到红绿灯加入2秒延时请求路口ID
mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 2_000L)
})
}
}, {
//stop loop traffic light
trafficLightNetWorkModel.cancelRequestTrafficLight()
//刚经过红绿灯加入3秒延时请求路口ID
mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 3_000L)
})
mLocation?.let { it ->
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)
roadId = it
},
{
Logger.d(TAG, "request road id error : $it")
})
}
}, {
//stop loop search road id
trafficLightNetWorkModel.cancelRequestRoadID()
//开始请求红绿灯
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(), road, { result ->
trafficLightResult = result
TrafficLightHMIManager.INSTANCE.updateTrafficLight(result)
CallTrafficLightListenerManager.invokeTrafficLightStatus(result)
},
{ errorMsg ->
//如果没有获取到正确的红绿灯数据,则取消读灯,继续读路口,防止出现一直读灯的情况
Logger.d(TAG, "request Traffic Light error : $errorMsg")
//stop loop traffic light
trafficLightNetWorkModel.cancelRequestTrafficLight()
//未查到红绿灯加入2秒延时请求路口ID
mThreadHandler?.sendEmptyMessageDelayed(
MSG_WHAT_LOOP_SEARCH_CROSS_ROAD,
2_000L
)
})
}
}, {
//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, 5_000L)
}
@@ -130,7 +132,7 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 {
trafficLightResult!!.lon, trafficLightResult!!.lat
) < 10)
) {
Logger.d(TAG,"开过路口")
Logger.d(TAG, "开过路口")
trafficLightResult = null
TrafficLightHMIManager.INSTANCE.hideTrafficLight()
CallTrafficLightListenerManager.resetTrafficLightData()