[6.1.0] fix bug of traffic light and v2n biz , plus change the range cross

This commit is contained in:
zhongchao
2023-09-25 12:01:08 +08:00
parent 80a99a27fb
commit 3f4d7caf3e
8 changed files with 43 additions and 25 deletions

View File

@@ -118,7 +118,7 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
"$M_V2X$TAG", "$M_V2X$TAG",
"路口经度为:${trafficLightResult.lon},纬度为:${trafficLightResult.lat};车的经度为:${it.longitude},纬度为:${it.latitude};两点距离为:${distance}" "路口经度为:${trafficLightResult.lon},纬度为:${trafficLightResult.lat};车的经度为:${it.longitude},纬度为:${it.latitude};两点距离为:${distance}"
) )
val remainTime = trafficLightStatus.remain val remainTime = trafficLightStatus.time()
val arriveTime = distance / speed val arriveTime = distance / speed
CallerLogger.d( CallerLogger.d(
"$M_V2X$TAG", "$M_V2X$TAG",
@@ -235,7 +235,7 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType),
speed speed
) )
if (content.isNullOrEmpty() || tts.isNullOrEmpty()) { if (content.isEmpty() || tts.isEmpty()) {
Log.d("MsgBox-RedLightWarManaG", "alertContent或ttsContent为空!") Log.d("MsgBox-RedLightWarManaG", "alertContent或ttsContent为空!")
} }
CallerMsgBoxManager.saveMsgBox( CallerMsgBoxManager.saveMsgBox(
@@ -263,8 +263,8 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
} }
override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) { override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
gnssInfo?.let { mogoLocation?.let {
mLocation = it mLocation = it
} }
} }

View File

@@ -41,9 +41,7 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener,
private var roadIDResult: RoadIDResult? = null private var roadIDResult: RoadIDResult? = null
@Volatile @Volatile
private var trafficLightResult: TrafficLightResult? = null private var trafficLightResult: TrafficLightResult? = null
@Volatile @Volatile
private var mCross: Boolean = false
private var inRange: Boolean = false private var inRange: Boolean = false
@Volatile @Volatile
private var firstLoopCrossRoad: Boolean = true //开启循环请求路口 private var firstLoopCrossRoad: Boolean = true //开启循环请求路口
@@ -125,7 +123,9 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener,
override fun onRoadChange(cross: Boolean) { override fun onRoadChange(cross: Boolean) {
super.onRoadChange(cross) super.onRoadChange(cross)
mCross = cross if(!cross){
outOfCrossRange()
}
} }
private fun checkOutOfRange() { private fun checkOutOfRange() {
@@ -133,24 +133,34 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener,
roadIDResult?.let { roadIDResult?.let {
// 检测是否开过路口,开过路口则停止读灯。并重置 trafficLightResult 值为 null // 检测是否开过路口,开过路口则停止读灯。并重置 trafficLightResult 值为 null
if (trafficLightResult != null && it.isInRange(loc.latitude, loc.longitude)) { if (trafficLightResult != null && it.isInRange(loc.latitude, loc.longitude)) {
if(inRange){
return
}
inRange = true inRange = true
// CallerLogger.d(M_V2X + TAG, "进入路口") CallerLogger.d(M_V2X + TAG, "进入路口")
CallerTrafficLightListenerManager.invokeEnterCrossRoad(true) CallerTrafficLightListenerManager.invokeEnterCrossRoad(true)
return return
} }
if (inRange || !mCross) { if (inRange) {
// CallerLogger.d(M_V2X + TAG, "离开路口") outOfCrossRange()
CallerTrafficLightListenerManager.invokeEnterCrossRoad(false)
inRange = false
trafficLightResult = null
firstLoopCrossRoad = true
mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT)
CallerTrafficLightListenerManager.resetTrafficLightStatus()
} }
} }
} }
} }
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? { fun getRoadResult(): RoadIDResult? {
return roadIDResult return roadIDResult
} }

View File

@@ -123,6 +123,7 @@ class AiRoadMarker {
} }
} }
@Synchronized
private fun realMark( private fun realMark(
marker: Marker, marker: Marker,
wrapper: MarkerWrapper, wrapper: MarkerWrapper,
@@ -212,6 +213,7 @@ class AiRoadMarker {
aiMakers.remove(id) aiMakers.remove(id)
} }
MarkerRemoveManager.addMarker(wrapper) MarkerRemoveManager.addMarker(wrapper)
countDown.set(0)
} }
private fun removeLine() { private fun removeLine() {

View File

@@ -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.TrafficLightResult
import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight 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.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.BIZ_VIP
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2N import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2N
import com.mogo.eagle.core.data.enums.CommunicationType 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.v2n.utils.V2XEventAnalyticsManager
import com.mogo.eagle.function.biz.v2x.vip.network.VipNetWorkModel import com.mogo.eagle.function.biz.v2x.vip.network.VipNetWorkModel
import com.zhjt.service_biz.BizConfig import com.zhjt.service_biz.BizConfig
import kotlin.math.abs
class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListener, class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListener,
Handler.Callback { Handler.Callback {
@@ -133,7 +135,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
if (!turnLight) { if (!turnLight) {
// 首次判断,变灯 // 首次判断,变灯
turnLight = true 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) turnLight(controlTime)
} }

View File

@@ -293,10 +293,10 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
"updateTrafficLight ----- currentTrafficLight = $currentTrafficLight" "updateTrafficLight ----- currentTrafficLight = $currentTrafficLight"
) )
currentTrafficLight?.let { currentTrafficLight?.let {
val remain = if (it.remain > 99) { val remain = if (it.time() > 99) {
99 99
} else { } else {
it.remain it.time()
} }
onTrafficLightPlusSource(it.convert(), remain, DataSourceType.AICLOUD) onTrafficLightPlusSource(it.convert(), remain, DataSourceType.AICLOUD)
} }

View File

@@ -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.TrafficLightResult
import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight 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.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.BIZ_PNC_ACTIONS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener
@@ -137,7 +138,7 @@ class PncActionsView @JvmOverloads constructor(
&& mTrafficLightResult!!.currentRoadTrafficLight() != null && mTrafficLightResult!!.currentRoadTrafficLight() != null
&& mTrafficLightResult!!.currentRoadTrafficLight()!!.isRed() && mTrafficLightResult!!.currentRoadTrafficLight()!!.isRed()
) { ) {
mTrafficLightResult!!.currentRoadTrafficLight()!!.remain.toString() mTrafficLightResult!!.currentRoadTrafficLight()!!.time().toString()
} else { } else {
"" ""
} }

View File

@@ -18,13 +18,13 @@ fun TrafficLightResult.toTrafficLightDetail():MessagePad.TrafficLightDetail{
if(this.laneList != null){ if(this.laneList != null){
left.phaseNo = this.laneList.left.phaseNo left.phaseNo = this.laneList.left.phaseNo
left.color = this.laneList.left.color 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.phaseNo = this.laneList.mid.phaseNo
mid.color = this.laneList.mid.color 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.phaseNo = this.laneList.right.phaseNo
right.color = this.laneList.right.color right.color = this.laneList.right.color
right.remain = this.laneList.right.remain right.remain = this.laneList.right.time()
} }
return trafficLightBuilder.build() return trafficLightBuilder.build()
} }

View File

@@ -25,13 +25,16 @@ fun TrafficLightStatus.turnRedAtOnce(): Boolean {
return isFlashGreen() || isYellow() return isFlashGreen() || isYellow()
} }
fun TrafficLightStatus.time():Int{
return if(remain.contains("--") || remain.isEmpty()) -1 else remain.toInt()
}
/** /**
* 红绿灯路口具体灯态信息 * 红绿灯路口具体灯态信息
*/ */
data class TrafficLightStatus( data class TrafficLightStatus(
val phaseNo: String, //相位编号 val phaseNo: String, //相位编号
val color: String, //灯态: 红灯-R绿灯-G绿闪-FG黄-YB-黑 val color: String, //灯态: 红灯-R绿灯-G绿闪-FG黄-YB-黑
val remain: Int //倒计时-秒 todo 云端string类型 如果返回 -- 解析异常 val remain: String //倒计时-秒 todo 云端string类型 如果返回 -- 解析异常
) { ) {
} }