fix bug of vip

This commit is contained in:
zhongchao
2021-11-27 17:50:01 +08:00
parent 9c143c51f4
commit f4d3fff3ea

View File

@@ -20,6 +20,7 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.module.common.MogoApisHandler
import com.mogo.module.common.enums.EventTypeEnum
import com.mogo.service.cloud.socket.IMogoOnMessageListener
import com.mogo.utils.UiThreadHandler
import com.mogo.utils.logger.Logger
import kotlin.math.abs
@@ -41,8 +42,14 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
private var mLocation: Location? = null
private var turnLightFirst = false
private var turnLightEnd = true
private var result: TrafficLightResult? = null
private var vip: Boolean = false
@Volatile
private var enter: Boolean = false
private var result: TrafficLightResult? = null
private var lastResult: TrafficLightStatus? = null
private val vipNetWorkModel = VipNetWorkModel()
private val handler = Handler(Looper.getMainLooper(), this)
@@ -96,15 +103,21 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
if (!vip) {
return
}
if (enter) {
Logger.d(TAG, "驶入路口,返回 , then resetConditions")
resetConditions()
return
}
if (trafficLightResult.currentRoadTrafficLight() == null) {
Logger.d(TAG, "vip 获取到灯态,但没找到对应车道数据 result : $trafficLightResult")
Logger.d(TAG, "vip 获取到灯态,但没找到对应车道数据 result : $trafficLightResult , then resetConditions")
resetConditions()
return
}
val currentResult = trafficLightResult.currentRoadTrafficLight()
val lastResult = result?.currentRoadTrafficLight()
lastResult = result?.currentRoadTrafficLight()
Logger.d(
TAG,
"检查是否变灯 last.remain : ${lastResult?.remain} , current.remain : ${currentResult?.remain}"
"检查是否变灯 last.remain : ${lastResult?.remain} , color : ${lastResult?.color} , current.remain : ${currentResult?.remain} , color : ${currentResult?.color}, turnLightFirst : $turnLightFirst"
)
this.result = trafficLightResult
@@ -118,7 +131,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
}
lastResult?.let {
//如果上次结果和本次灯态结果变化比较大则已变灯控制HMI展示弹窗
if (abs(lastResult.remain - currentResult!!.remain) > 3) {
if (abs(it.remain - currentResult!!.remain) > 5) {
CallerHmiManager.showWarningV2X(EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType.toInt(),
EventTypeEnum.TYPE_VIP_IDENTIFICATION.content,
EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts,
@@ -128,10 +141,9 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
override fun onDismiss() {
Logger.d(
TAG,
"showWarningV2X vip dismiss , reset turnLightFirst to false "
"showWarningV2X vip dismiss , resetConditions"
)
turnLightFirst = false
turnLightEnd = true
resetConditions()
}
})
}
@@ -145,6 +157,13 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
// }
}
private fun resetConditions() {
turnLightFirst = false
turnLightEnd = true
result = null
lastResult = null
}
private fun setVip(cancelDelayTime: Long) {
vip = true
handler.sendEmptyMessageDelayed(
@@ -154,6 +173,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
CallerHmiManager.vipIdentification(true)
CallVipSetListenerManager.invokeVipSetStatus(true)
CallTrafficLightListenerManager.registerTrafficLightListener(TAG, this)
CallTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this)
}
private fun cancelVip() {
@@ -164,6 +184,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
CallerHmiManager.vipIdentification(false)
CallVipSetListenerManager.invokeVipSetStatus(false)
CallTrafficLightListenerManager.unRegisterTrafficLightListener(TAG)
CallTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG)
}
private fun canGetThroughCross(
@@ -202,6 +223,13 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
})
}
override fun onEnterCrossRoad(enter: Boolean) {
super.onEnterCrossRoad(enter)
UiThreadHandler.post {
this.enter = enter
}
}
private fun turnLight(controlTime: Int) {
result?.let {
MogoTrafficLightManager.INSTANCE.turnLightToGreen(