fix bug
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ class TrafficLightProvider : ITrafficLightProvider {
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
//todo MogoTrafficLightManager onDestroy
|
||||
MogoTrafficLightManager.INSTANCE.onDestroy()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)){
|
||||
|
||||
@@ -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<String, String>): BaseResponse<TrafficLightResult>
|
||||
|
||||
//变灯
|
||||
|
||||
@@ -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}")
|
||||
}
|
||||
|
||||
@@ -32,7 +32,8 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, 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<VipMessage>, 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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<BaseLaneInfoList>
|
||||
) {
|
||||
}
|
||||
Reference in New Issue
Block a user