From 96585e089e5adf484b50697964603c71c3f2cd45 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 29 Nov 2022 19:19:09 +0800 Subject: [PATCH] =?UTF-8?q?2.13.0=20=E8=81=94=E8=B0=83=E4=BA=86=E6=A0=87?= =?UTF-8?q?=E7=89=8C=EF=BC=8C=E4=BA=8B=E4=BB=B6=E9=A2=84=E8=AD=A6=EF=BC=8C?= =?UTF-8?q?=E5=BC=B1=E5=8A=BF=E4=BA=A4=E9=80=9A=E4=B8=80=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 2 +- .../obu/mogo/MogoPrivateObuNewManager.kt | 1003 ++++++++--------- .../eagle/core/data/enums/V2iEventTypeEnum.kt | 115 +- 3 files changed, 552 insertions(+), 568 deletions(-) diff --git a/config.gradle b/config.gradle index 79ebbd27c3..869ea08506 100644 --- a/config.gradle +++ b/config.gradle @@ -97,7 +97,7 @@ ext { // obu sdk obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", mogoobuold : 'com.zhidao.support.obu:mogoobu:1.0.0.33', - mogoobu : 'com.mogo.support.obu:mogo-obu:1.0.4', + mogoobu : 'com.mogo.support.obu:mogo-obu:1.0.6', mogoami : 'com.zhidao.support.obu.ami:mogoami:1.0.0.24', // google diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt index b5bb3413eb..32984120d6 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt @@ -1,7 +1,6 @@ package com.mogo.eagle.core.function.obu.mogo import android.content.Context -import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.enums.WarningDirectionEnum @@ -25,6 +24,7 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.V2XMsg import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.obu.mogo.MogoObuConst.TAG_MOGO_OBU +import com.mogo.eagle.core.function.obu.mogo.utils.TrafficDataConvertUtils import com.mogo.support.obu.MogoObuManager import com.mogo.support.obu.OnMogoObuListener import com.mogo.support.obu.constants.MogoObuComType @@ -122,13 +122,9 @@ class MogoPrivateObuNewManager private constructor() { * HV车辆基础信息 CvxHvCarIndInfo CvxHvInfoIndInfo */ override fun onMogoObuHvBasics(p0: MogoObuHvBasicsData?) { - Log.d( - TAG_MOGO_OBU, - "onMogoObuHvBasics ------ p0 = ${p0.toString()}" + "-----FunctionBuildConfig.gpsProvider = " + FunctionBuildConfig.gpsProvider - ) if (p0 != null && p0.vehBasicsMsg != null) { - Log.d( - TAG_MOGO_OBU, + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "onMogoObuHvBasics lon = ${p0.vehBasicsMsg.longitude} --- lat = ${p0.vehBasicsMsg.latitude} ---speed = ${p0.vehBasicsMsg.speed} ---heading = ${p0.vehBasicsMsg.heading} --acceleration = ${p0.vehBasicsMsg.accFourAxes.accLat} --yawRate = ${p0.vehBasicsMsg.accFourAxes.accYaw}" ) val data = JSONObject() @@ -173,50 +169,43 @@ class MogoPrivateObuNewManager private constructor() { */ override fun onMogoObuRvWarning(data: MogoObuRvWarningData) { super.onMogoObuRvWarning(data) + if (!data.warningMsg.warningData.isNullOrEmpty()) { + // 更新数据,远车数据,之前要匹配uuid + TrafficDataConvertUtilsNew.cvxRvInfoIndInfo2TrafficData(data)?.let { + CallerMapUIServiceManager.getMarkerService()?.updateITrafficLocationInfo(it) + } - // 更新数据,远车数据,之前要匹配uuid - TrafficDataConvertUtilsNew.cvxRvInfoIndInfo2TrafficData(data)?.let { - CallerMapUIServiceManager.getMarkerService()?.updateITrafficLocationInfo(it) - } - - Log.d(TAG_MOGO_OBU, data.toString()) - data.let { - //预警信息,预警类型 threat_level 2、3 - var status = data.status - data.vehBasicsMsg?.let { - //预警方位 - val direction = getMessageDirection(data.vehBasicsMsg.targetPosition) - //处理预警类型 - var appId = "0" - var level = -1 - - data.warningMsg?.let { - if (data.warningMsg.warningData != null && data.warningMsg.warningData.size > 0) { - level = data.warningMsg.warningData[0].warningLevel - appId = data.warningMsg.warningData[0].warningType.toString() + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", data.toString()) + data.let { + //预警信息,预警类型 threat_level 2、3 + var status = data.status + data.vehBasicsMsg?.let { + //预警方位 + val direction = getMessageDirection(data.vehBasicsMsg.targetPosition) + //处理预警类型 + var appId = "" + var level = -1 + data.warningMsg?.let { + if (data.warningMsg.warningData != null && data.warningMsg.warningData.size > 0) { + level = data.warningMsg.warningData[0].warningLevel + appId = data.warningMsg.warningData[0].warningType.toString() + } } - } - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onMogoObuRvWarning target_classification = ${ - getMessageDirection(data.vehBasicsMsg.targetPosition) - } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" - ) - - Log.e( - TAG_MOGO_OBU, - "onMogoObuRvWarning target_classification = ${ - getMessageDirection(data.vehBasicsMsg.targetPosition) - } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" - ) - - //拼凑数据 - if (appId != null) { - handleSdkObu(appId, direction, status, level, data) + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onMogoObuRvWarning target_classification = ${ + getMessageDirection(data.vehBasicsMsg.targetPosition) + } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" + ) + //拼凑数据 + if (appId != null) { + handleSdkObu(appId, direction, status, level, data) + } } } } + } /** @@ -252,7 +241,7 @@ class MogoPrivateObuNewManager private constructor() { val direction = getMessageDirection(data.warningMsg[0].targetPosition) CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxRtiThreatIndInfo appId = $appId --status = $status --level = $level -- eventSerialNum = ${data.warningMsg[0].eventSerialNum} -- direction = $direction -- targetPosition = ${data.warningMsg[0].targetPosition}" + "onCvxRtiThreatIndInfo appId = $appId --status = $status --level = $level -- eventSerialNum = ${data.warningMsg[0].eventSerialNum} ---signSerialNum = ${data.warningMsg[0].signSerialNum} --- direction = $direction -- targetPosition = ${data.warningMsg[0].targetPosition}" ) when (appId) { @@ -279,11 +268,23 @@ class MogoPrivateObuNewManager private constructor() { V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType } } + alertContent = V2iEventTypeEnum.getWarningContent(appId) + ttsContent = V2iEventTypeEnum.getWarningTts(appId) + alertContent = String.format( //事件才有影响范围 + alertContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) + ttsContent = String.format( + ttsContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) } //车内标牌 MogoObuConstants.RSI_SCENE_TYPE.IVS.toString() -> { - when (data.warningMsg[0].eventSerialNum) { + when (data.warningMsg[0].signSerialNum) { // MogoObuConstants.RTS.RTI_TYPE_INTERSECTION -> { //十字路口 // appId = V2iEventTypeEnum.TYPE_ID_NTERSECTION.poiType // } @@ -356,78 +357,84 @@ class MogoPrivateObuNewManager private constructor() { appId = V2iEventTypeEnum.TYPE_USECASE_ID_ACCIDENT.poiType } } + + alertContent = V2iEventTypeEnum.getWarningContent(appId) + ttsContent = V2iEventTypeEnum.getWarningTts(appId) + alertContent = String.format( //标牌是没有影响范围的 + alertContent, + Math.round(data.warningMsg[0].distance).toString() + ) + ttsContent = String.format( + ttsContent, + Math.round(data.warningMsg[0].distance).toString() + ) } // 拥堵 MogoObuConstants.RSI_SCENE_TYPE.TJW.toString() -> { appId = V2iEventTypeEnum.TYPE_USECASE_ID_TJW.poiType + + alertContent = V2iEventTypeEnum.getWarningContent(appId) + ttsContent = V2iEventTypeEnum.getWarningTts(appId) + alertContent = String.format( //事件才有影响范围 + alertContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) + ttsContent = String.format( + ttsContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) } //限速预警, ADD处理一次 MogoObuConstants.RSI_SCENE_TYPE.SLW.toString() -> { - + alertContent = V2iEventTypeEnum.getWarningContent(appId) + ttsContent = V2iEventTypeEnum.getWarningTts(appId) } } - alertContent = V2iEventTypeEnum.getWarningContent(appId) - ttsContent = V2iEventTypeEnum.getWarningTts(appId) - alertContent = String.format( - alertContent, - data.warningMsg[0].distance.toString(), - data.warningMsg[0].eventRadius.toString() - ) - ttsContent = String.format( - ttsContent, - data.warningMsg[0].distance.toString(), - data.warningMsg[0].eventRadius.toString() - ) - CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "ttsContent = $ttsContent --alertContent = $alertContent --appId = $appId ---direction = ${direction.direction} " + "ttsContent = $ttsContent --alertContent = $alertContent --appId = $appId ---direction = ${direction.direction} --distance = ${Math.round(data.warningMsg[0].distance)} ---eventRadius = ${Math.round(data.warningMsg[0].eventRadius)} --speedMaxLimit = ${data.warningMsg[0].speedMaxLimit.toInt()}" ) - when (status) { // 添加 MogoObuConstants.STATUS.ADD -> { - if (appId == "1") { //限速预警 TODO - CallerHmiManager.showLimitingVelocity((data.warningMsg[0].speedMaxLimit*3.6).toInt()) - } else { - //显示警告红边 + //显示警告红边 // CallerHmiManager.showWarning(direction) - //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg( - appId, - alertContent, - ttsContent - ) + //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框 + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg( + appId, + alertContent, + ttsContent ) ) - CallerHmiManager.warningV2X( - appId, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 - object : IMoGoWarningStatusListener { - override fun onDismiss() { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - } - }, - true, - 3000L - ) - - // 更新数据 - TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)?.let { - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) + ) + CallerHmiManager.warningV2X( + appId, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : IMoGoWarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) } + }, + true, + 3000L + ) + + // 更新数据 + TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)?.let { + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) } -// } } MogoObuConstants.STATUS.UPDATE -> { // 更新 @@ -436,23 +443,18 @@ class MogoPrivateObuNewManager private constructor() { // 删除 MogoObuConstants.STATUS.DELETE -> { - if (appId == "1") { //限速预警 - CallerHmiManager.disableLimitingVelocity(); - } else { - // 关闭警告红边 + // 关闭警告红边 // CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - // 移除顶部弹窗 + // 移除顶部弹窗 // CallerHmiManager.disableWarningV2X((appId + direction.direction)) - // 更新数据 - TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data) - ?.let { - // 事件结束,还原车辆颜色 - it.threatLevel = 0x01 - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficInfo(it) - } - } - + // 更新数据 + TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data) + ?.let { + // 事件结束,还原车辆颜色 + it.threatLevel = 0x01 + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficInfo(it) + } } } } @@ -461,6 +463,12 @@ class MogoPrivateObuNewManager private constructor() { /** * RSM预警信息 CvxPtcThreatIndInfo CvxPtcInfoIndInfo(主车与弱势交通参与者之间的预警(如:弱势交通参与者碰撞预警)) + * 交通参与者类型 + * 0:未知 + * 1:机动车 + * 2:非机动车 + * 3:行人 + * 4:OBU自身 */ override fun onMogoObuRsmWarning( data: MogoObuRsmWarningData? @@ -469,23 +477,15 @@ class MogoPrivateObuNewManager private constructor() { if (HmiBuildConfig.isShowObuWeaknessTrafficView) { CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onMogoObuRsmWarning ------> $data" + "onMogoObuRsmWarning ------> ${data.toString()}" ) - Log.d(TAG_MOGO_OBU, "data = ${data.toString()}") // 交通参与者类型 0x0:未知 UNKNOWN | 1机动车 2:非机动车 NON_MOTOR | 3:行人 PEDESTRIAN 4:obu if (data != null && data.participant != null && (data.participant.ptcType == 1 || data.participant.ptcType == 3)) { CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "onMogoObuRsmWarning ---status---> ${data.status}" ) - /** - * 交通参与者类型 - * 0:未知 - * 1:机动车 - * 2:非机动车 - * 3:行人 - * 4:OBU自身 - */ + var v2xType = "" if (data.participant.ptcType == 1) { //机动车 v2xType = @@ -541,15 +541,15 @@ class MogoPrivateObuNewManager private constructor() { ) // } - // 更新数据 - TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData( - data - ) - ?.let { - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficInfo(it) - } - + // 更新数据 TODO +// TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)?.let { +// CallerMapUIServiceManager.getMarkerService() +// ?.updateITrafficInfo(it) +// } + TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)?.let { + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } } MogoObuConstants.STATUS.UPDATE -> {// 更新 @@ -575,424 +575,417 @@ class MogoPrivateObuNewManager private constructor() { } /** - * 地图匹配 是OBU算法输出地图匹配结果,主车匹配道路哪条路或者哪条车道 + * 地图匹配 是OBU算法输出地图匹配结果,主车匹配道路哪条路或者哪条车道 TODO */ override fun onMogoObuMapMath(data: MogoObuMapMathData?) { super.onMogoObuMapMath(data) + if (data != null) { + CallerLogger.d( + "$M_OBU${TAG_MOGO_OBU}", + "onMogoObuMapMathstatus = ${data.status} --speedMaxLimit = ${Math.round((data.speedMaxLimit*3.6))}") + when (data.status) { + MogoObuConstants.STATUS.ADD -> { // 添加 + CallerHmiManager.showLimitingVelocity(Math.round((data.speedMaxLimit*3.6)).toInt()) + } + MogoObuConstants.STATUS.UPDATE -> { // 更新 + + } + + MogoObuConstants.STATUS.DELETE -> { // 删除 + CallerHmiManager.disableLimitingVelocity() + } + } + } } - } -} + } -/** - * 获取消息的方位 车辆相关 - */ -private fun getMessageDirection(targetClassification: Int): WarningDirectionEnum { - CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "预警红边:预警方向->$targetClassification") - return when (targetClassification) { - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_IN_LANE, - MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_TOP //正前方 + /** + * 获取消息的方位 车辆相关 + */ + private fun getMessageDirection(targetClassification: Int): WarningDirectionEnum { + // CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "预警红边:预警方向->$targetClassification") + return when (targetClassification) { + MogoObuConstants.VEH_TARGET_POSITION.AHEAD_IN_LANE, + MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_TOP //正前方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_BOTTOM //正后方 + MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_BOTTOM //正后方 - MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_RIGHT -> WarningDirectionEnum.ALERT_WARNING_RIGHT //正右方 + MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_RIGHT -> WarningDirectionEnum.ALERT_WARNING_RIGHT //正右方 - MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_LEFT -> WarningDirectionEnum.ALERT_WARNING_LEFT //正左方 + MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_LEFT -> WarningDirectionEnum.ALERT_WARNING_LEFT //正左方 - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_LEFT, - MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_LEFT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAR_LEFT - -> WarningDirectionEnum.ALERT_WARNING_TOP_LEFT //左前方 + MogoObuConstants.VEH_TARGET_POSITION.AHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_LEFT, + MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_LEFT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAR_LEFT + -> WarningDirectionEnum.ALERT_WARNING_TOP_LEFT //左前方 - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_RIGHT, - MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAT_RIGHT - -> WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT //右前方 + MogoObuConstants.VEH_TARGET_POSITION.AHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_RIGHT, + MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAT_RIGHT + -> WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT //右前方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_LEFT, - -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT //左后方 + MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_LEFT, + -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT //左后方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_RIGHT, - -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT //右后方 + MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_RIGHT, + -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT //右后方 - MogoObuConstants.VEH_TARGET_POSITION.UNCLASSIFIED -> WarningDirectionEnum.ALERT_WARNING_NON //未知 - else -> WarningDirectionEnum.ALERT_WARNING_ALL + MogoObuConstants.VEH_TARGET_POSITION.UNCLASSIFIED -> WarningDirectionEnum.ALERT_WARNING_NON //未知 + else -> WarningDirectionEnum.ALERT_WARNING_ALL + } } -} -/** - * 构造对应展示数据和场景 根据obu的场景,add change delete确定是否展示 - * - * @param appId 使用WarningTypeEnum获取icon、提示内容、tts内容 - * - * @see com.mogo.module.common.enums.EventTypeEnum - */ -private fun handleSdkObu( - appId: String, - direction: WarningDirectionEnum, - status: Int, - level: Int, - info: MogoObuRvWarningData -) { - // 这里排除需要特殊定制的语音及文案外,其余的都可以使用 EventTypeEnumNew 提供的 - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "handleSdkObu appId = $appId --- handleDirection = $direction ---level = $level ---status = $status" - ) - Log.d( - TAG_MOGO_OBU, - "handleSdkObu appId = $appId --- handleDirection = $direction ---level = $level ---status = $status" - ) - var alertContent: String - var ttsContent: String - var changeVisualAngle = false - when (appId) { - // 变道预警,注意左后车辆/注意右后车辆 - EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType -> { - alertContent = EventTypeEnumNew.getWarningContent(appId) - ttsContent = EventTypeEnumNew.getWarningTts(appId) - if ( - direction == WarningDirectionEnum.ALERT_WARNING_LEFT || - direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT || - direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT - ) { - ttsContent = String.format(ttsContent, "左") - alertContent = String.format(alertContent, "左") - } else if ( - direction == WarningDirectionEnum.ALERT_WARNING_RIGHT || - direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT || - direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT - ) { - ttsContent = String.format(ttsContent, "右") - alertContent = String.format(alertContent, "右") + /** + * 构造对应展示数据和场景 根据obu的场景,add change delete确定是否展示 + * + * @param appId 使用WarningTypeEnum获取icon、提示内容、tts内容 + * + * @see com.mogo.module.common.enums.EventTypeEnum + */ + private fun handleSdkObu( + appId: String, + direction: WarningDirectionEnum, + status: Int, + level: Int, + info: MogoObuRvWarningData + ) { + // 这里排除需要特殊定制的语音及文案外,其余的都可以使用 EventTypeEnumNew 提供的 + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "handleSdkObu appId = $appId --- handleDirection = $direction ---level = $level ---status = $status" + ) + + var alertContent: String + var ttsContent: String + var changeVisualAngle = false + when (appId) { + // 变道预警,注意左后车辆/注意右后车辆 + EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType -> { + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + if ( + direction == WarningDirectionEnum.ALERT_WARNING_LEFT || + direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT || + direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT + ) { + ttsContent = String.format(ttsContent, "左") + alertContent = String.format(alertContent, "左") + } else if ( + direction == WarningDirectionEnum.ALERT_WARNING_RIGHT || + direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT || + direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT + ) { + ttsContent = String.format(ttsContent, "右") + alertContent = String.format(alertContent, "右") + } + } + + //车辆失控预警 + EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType -> { + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = String.format(alertContent, direction.desc) + ttsContent = String.format(ttsContent, direction.desc) + } + + //异常车辆提醒 + EventTypeEnumNew.TYPE_USECASE_ID_AVW.poiType -> { + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = String.format(alertContent, direction.desc) + ttsContent = String.format(ttsContent, direction.desc) + } + + //盲区预警 + EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType -> { + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = EventTypeEnumNew.getWarningContent(appId) + if ( + direction == WarningDirectionEnum.ALERT_WARNING_LEFT || + direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT || + direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT + ) { //左后 + changeVisualAngle = true + ttsContent = String.format(ttsContent, "左") + alertContent = String.format(alertContent, "左") + } else if ( + direction == WarningDirectionEnum.ALERT_WARNING_RIGHT || + direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT || + direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT + ) { //右后 + changeVisualAngle = true + ttsContent = String.format(ttsContent, "右") + alertContent = String.format(alertContent, "右") + } + } + // 这里处理固定的提示信息,包括了<紧急车辆提醒> + else -> { + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = EventTypeEnumNew.getWarningContent(appId) } } - //车辆失控预警 - EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType -> { - alertContent = EventTypeEnumNew.getWarningContent(appId) - ttsContent = EventTypeEnumNew.getWarningTts(appId) - alertContent = String.format(alertContent, direction.desc) - ttsContent = String.format(ttsContent, direction.desc) - } - - //异常车辆提醒 - EventTypeEnumNew.TYPE_USECASE_ID_AVW.poiType -> { - alertContent = EventTypeEnumNew.getWarningContent(appId) - ttsContent = EventTypeEnumNew.getWarningTts(appId) - alertContent = String.format(alertContent, direction.desc) - ttsContent = String.format(ttsContent, direction.desc) - } - - //盲区预警 - EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType -> { - ttsContent = EventTypeEnumNew.getWarningTts(appId) - alertContent = EventTypeEnumNew.getWarningContent(appId) - if ( - direction == WarningDirectionEnum.ALERT_WARNING_LEFT || - direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT || - direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT - ) { //左后 - changeVisualAngle = true - ttsContent = String.format(ttsContent, "左") - alertContent = String.format(alertContent, "左") - } else if ( - direction == WarningDirectionEnum.ALERT_WARNING_RIGHT || - direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT || - direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT - ) { //右后 - changeVisualAngle = true - ttsContent = String.format(ttsContent, "右") - alertContent = String.format(alertContent, "右") - } - } - // 这里处理固定的提示信息,包括了<紧急车辆提醒> - else -> { - ttsContent = EventTypeEnumNew.getWarningTts(appId) - alertContent = EventTypeEnumNew.getWarningContent(appId) - } - } - - when (status) { - // 添加,更新 add的时候,可能级别是2, - MogoObuConstants.STATUS.ADD, - MogoObuConstants.STATUS.UPDATE -> { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" - ) - Log.d( - TAG_MOGO_OBU, - "appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" - ) - if (level == 2 || level == 3) { - //不显示弹框,其它保留 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg( - appId, - alertContent, - ttsContent + when (status) { + // 添加,更新 add的时候,可能级别是2, + MogoObuConstants.STATUS.ADD, + MogoObuConstants.STATUS.UPDATE -> { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" + ) + if (level == 2 || level == 3) { + //不显示弹框,其它保留 + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg( + appId, + alertContent, + ttsContent + ) ) ) - ) - CallerHmiManager.warningV2X( - appId, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 - object : IMoGoWarningStatusListener { - override fun onShow() { - super.onShow() - if (changeVisualAngle) { - CallerVisualAngleManager.changeVisualAngle(TooClose) - } - } - - override fun onDismiss() { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - if (changeVisualAngle) { - CallerVisualAngleManager.changeVisualAngle(Default()) - } - } - }, - true, - 3000L - ) - //显示警告红边 - CallerHmiManager.showWarning(direction) - } - //更新周边车辆进行预警颜色变换,车辆实时移动和变色 ,UUID不需要匹配了 - TrafficDataConvertUtilsNew.cvxV2vThreatIndInfo2TrafficData(info)?.let { - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) - } - } - // 删除 - MogoObuConstants.STATUS.DELETE -> { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - // 移除顶部弹窗 -// CallerHmiManager.disableWarningV2X((appId + direction.direction)) - //更新周边车辆进行预警颜色变换,车辆实时移动和变色 - TrafficDataConvertUtilsNew.cvxV2vThreatIndInfo2TrafficData(info)?.let { - it.threatLevel = 0x01 - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) - } - } - } -} - -/** - * 处理红绿灯 - */ -private fun handlerTrafficLight(appId: Int, status: Int, lights: List) { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "handlerTrafficLight --- status = $status ---lights.size = ${lights.size} ---lights = $lights ---appId = $appId" - ) - Log.d( - TAG_MOGO_OBU, - "handlerTrafficLight --- status = $status ---lights.size = ${lights.size} ---lights = $lights ---appId = $appId " - ) - - when (status) { - // 添加 - MogoObuConstants.STATUS.ADD, - MogoObuConstants.STATUS.UPDATE - -> { - changeTrafficLightStatus(appId, lights) - } - // 删除 - MogoObuConstants.STATUS.DELETE -> { - // 移除顶部弹窗 - CallerHmiManager.disableWarningTrafficLight() - CallerHmiManager.disableWarningV2X(appId.toString()) - } - } -} - -private var isRedLight = false -private var isGreenLight = false - -/** - * 修改红绿灯 - */ -@Synchronized -private fun changeTrafficLightStatus( - appId: Int, - lights: List -) { - var ttsContent = "" - var alertContent = "" - //这里需要根据真实数据确定 index 取值方式 - val currentLight = lights[0] - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "currentLight = $currentLight ---currentLight.phase = ${currentLight.phaseId} ---appId = $appId" - ) - Log.d( - TAG_MOGO_OBU, - "currentLight = $currentLight ---currentLight.phase = ${currentLight.phaseId} ---appId = $appId" - ) - // 闯红灯预警 - when (appId) { - 0x0 -> {//不可用 V2I_RLVW_VIOLATION_TYPE_UNAVAILABLE 无效 - - } - 0x1 -> {//闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT TODO 需要约束一个红灯周期只显示一次 -// CallerHmiManager.disableWarningV2X(appId.toString()) -// Log.e(TAG, "changeTrafficLightStatus 闯红灯 --------> ") -// ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) -// alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) -// CallerHmiManager.warningV2X( -// appId.toString(), alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 -// appId.toString(), null, true, 5000L, MsgBoxType.OBU -// ) - } - - 0x2 -> {//绿波通行引导 V2I_RLVW_VIOLATION_TYPE_NO_VIOLATION TODO 需要约束一个绿灯周期只显示一次 - ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) - alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg( - appId.toString(), + CallerHmiManager.warningV2X( + appId, alertContent, - ttsContent - ) - ) - ) - CallerHmiManager.warningV2X( - appId.toString(), alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - appId.toString(), null, true, 3000L - ) + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : IMoGoWarningStatusListener { + override fun onShow() { + super.onShow() + if (changeVisualAngle) { + CallerVisualAngleManager.changeVisualAngle(TooClose) + } + } - // 拼接建议速度 -// Log.e(TAG, "changeTrafficLightStatus 绿波通行引导 --------> ") -// CallerLogger.d( -// "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", -// "speed_min = ${currentLight.suggestMinSpeed} --speed_max = ${currentLight.suggestMaxSpeed}" -// ) -// val adviceSpeed = -// "${currentLight.suggestMinSpeed*3.6} - ${currentLight.suggestMaxSpeed*3.6}" -// val adviceSpeedTts = -// "${currentLight.suggestMinSpeed*3.6}到${currentLight.suggestMaxSpeed*3.6}" -// ttsContent = -// String.format( -// EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), -// adviceSpeedTts -// ) -// alertContent = -// String.format( -// EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), -// adviceSpeed -// ) -// val maxSpeed = currentLight.suggestMaxSpeed*3.6 -// if (maxSpeed > 0) { -// CallerHmiManager.warningV2X( -// EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, -// alertContent, -// ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 -// appId.toString(), -// null, -// true, -// 5000L, -// MsgBoxType.OBU -// ) -// } + override fun onDismiss() { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + if (changeVisualAngle) { + CallerVisualAngleManager.changeVisualAngle(Default()) + } + } + }, + true, + 3000L + ) + //显示警告红边 + CallerHmiManager.showWarning(direction) + } + //更新周边车辆进行预警颜色变换,车辆实时移动和变色 ,UUID不需要匹配了 + TrafficDataConvertUtilsNew.cvxV2vThreatIndInfo2TrafficData(info)?.let { + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } + } + // 删除 + MogoObuConstants.STATUS.DELETE -> { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + // 移除顶部弹窗 + // CallerHmiManager.disableWarningV2X((appId + direction.direction)) + //更新周边车辆进行预警颜色变换,车辆实时移动和变色 + TrafficDataConvertUtilsNew.cvxV2vThreatIndInfo2TrafficData(info)?.let { + it.threatLevel = 0x01 + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } + } } } - when (currentLight.light) { - // 灯光不可用 - 0 -> { - CallerHmiManager.showWarningTrafficLight(0, 2) - } - // 红灯 - 2, 3 -> { - if (!isRedLight) { - CallerHmiManager.disableWarningV2X(appId.toString()) - isRedLight = true + /** + * 处理红绿灯 + */ + private fun handlerTrafficLight(appId: Int, status: Int, lights: List) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "handlerTrafficLight --- status = $status ---lights.size = ${lights.size} ---lights = $lights ---appId = $appId" + ) + when (status) { + // 添加 + MogoObuConstants.STATUS.ADD, + MogoObuConstants.STATUS.UPDATE + -> { + changeTrafficLightStatus(appId, lights) } - isGreenLight = false - CallerHmiManager.showWarningTrafficLight(1, 2) - - val red = currentLight.countDown.toInt() - CallerHmiManager.changeCountdownRed(red) -// CallerHmiManager.changeCountdownGreen(0) -// CallerHmiManager.changeCountdownYellow(0) - } - // 绿灯 - 4, 5, 6 -> { - if (!isGreenLight) { + // 删除 + MogoObuConstants.STATUS.DELETE -> { + // 移除顶部弹窗 + CallerHmiManager.disableWarningTrafficLight() CallerHmiManager.disableWarningV2X(appId.toString()) - isGreenLight = true } - isRedLight = false - CallerHmiManager.showWarningTrafficLight(3, 2) - val green = currentLight.countDown.toInt() - CallerHmiManager.changeCountdownGreen(green) - //防止数据出现问题的容错 - CallerHmiManager.changeCountdownRed(0) - CallerHmiManager.changeCountdownYellow(0) - // 拼接建议速度 - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "speed_min = ${currentLight.suggestMinSpeed} --speed_max = ${currentLight.suggestMaxSpeed}" - ) - val adviceSpeed = - "${currentLight.suggestMinSpeed} - ${currentLight.suggestMaxSpeed}" - val adviceSpeedTts = - "${currentLight.suggestMinSpeed}到${currentLight.suggestMaxSpeed}" - ttsContent = - String.format( - EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), - adviceSpeedTts - ) - alertContent = - String.format( - EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), - adviceSpeed - ) + } + } - val maxSpeed = currentLight.suggestMaxSpeed - if (maxSpeed > 0) { + private var isRedLight = false + private var isGreenLight = false + + /** + * 修改红绿灯 + */ + @Synchronized + private fun changeTrafficLightStatus( + appId: Int, + lights: List + ) { + var ttsContent = "" + var alertContent = "" + //这里需要根据真实数据确定 index 取值方式 + val currentLight = lights[0] + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "currentLight = $currentLight ---currentLight.phase = ${currentLight.phaseId} ---appId = $appId" + ) + // 闯红灯预警 + when (appId) { + 0x0 -> {//不可用 V2I_RLVW_VIOLATION_TYPE_UNAVAILABLE 无效 + + } + 0x1 -> {//闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT TODO 需要约束一个红灯周期只显示一次 + // CallerHmiManager.disableWarningV2X(appId.toString()) +// CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}","changeTrafficLightStatus 闯红灯 --------> ") + // ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) + // alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) + // CallerHmiManager.warningV2X( + // appId.toString(), alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + // appId.toString(), null, true, 5000L, MsgBoxType.OBU + // ) + } + + 0x2 -> {//绿波通行引导 V2I_RLVW_VIOLATION_TYPE_NO_VIOLATION TODO 需要约束一个绿灯周期只显示一次 + ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) + alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.OBU, V2XMsg( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, + appId.toString(), alertContent, ttsContent ) ) ) CallerHmiManager.warningV2X( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - appId.toString(), - null, - true, - 3000L + appId.toString(), alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + appId.toString(), null, true, 3000L ) + + // 拼接建议速度 + // CallerLogger.d( + // "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + // "绿波通行引导 --------> speed_min = ${currentLight.suggestMinSpeed} --speed_max = ${currentLight.suggestMaxSpeed}" + // ) + // val adviceSpeed = + // "${currentLight.suggestMinSpeed*3.6} - ${currentLight.suggestMaxSpeed*3.6}" + // val adviceSpeedTts = + // "${currentLight.suggestMinSpeed*3.6}到${currentLight.suggestMaxSpeed*3.6}" + // ttsContent = + // String.format( + // EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), + // adviceSpeedTts + // ) + // alertContent = + // String.format( + // EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), + // adviceSpeed + // ) + // val maxSpeed = currentLight.suggestMaxSpeed*3.6 + // if (maxSpeed > 0) { + // CallerHmiManager.warningV2X( + // EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, + // alertContent, + // ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + // appId.toString(), + // null, + // true, + // 5000L, + // MsgBoxType.OBU + // ) + // } } -// CallerHmiManager.changeCountdownRed(0) -// CallerHmiManager.changeCountdownYellow(0) } - // 黄灯 - 7, 8 -> { - CallerHmiManager.disableWarningV2X(appId.toString()) - CallerHmiManager.showWarningTrafficLight(2, 2) - val yellow = currentLight.countDown.toInt() - CallerHmiManager.changeCountdownYellow(yellow) -// CallerHmiManager.changeCountdownGreen(0) -// CallerHmiManager.changeCountdownRed(0) + + when (currentLight.light) { + // 灯光不可用 + 0 -> { + CallerHmiManager.showWarningTrafficLight(0, 2) + } + // 红灯 + 2, 3 -> { + if (!isRedLight) { + CallerHmiManager.disableWarningV2X(appId.toString()) + isRedLight = true + } + isGreenLight = false + CallerHmiManager.showWarningTrafficLight(1, 2) + + val red = currentLight.countDown.toInt() + CallerHmiManager.changeCountdownRed(red) + } + // 绿灯 + 4, 5, 6 -> { + if (!isGreenLight) { + CallerHmiManager.disableWarningV2X(appId.toString()) + isGreenLight = true + } + isRedLight = false + CallerHmiManager.showWarningTrafficLight(3, 2) + val green = currentLight.countDown.toInt() + CallerHmiManager.changeCountdownGreen(green) + //防止数据出现问题的容错 + CallerHmiManager.changeCountdownRed(0) + CallerHmiManager.changeCountdownYellow(0) + // 拼接建议速度 + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "speed_min = ${currentLight.suggestMinSpeed} --speed_max = ${currentLight.suggestMaxSpeed}" + ) + val adviceSpeed = + "${currentLight.suggestMinSpeed} - ${currentLight.suggestMaxSpeed}" + val adviceSpeedTts = + "${currentLight.suggestMinSpeed}到${currentLight.suggestMaxSpeed}" + ttsContent = + String.format( + EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), + adviceSpeedTts + ) + alertContent = + String.format( + EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), + adviceSpeed + ) + + val maxSpeed = currentLight.suggestMaxSpeed + if (maxSpeed > 0) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg( + EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, + alertContent, + ttsContent + ) + ) + ) + CallerHmiManager.warningV2X( + EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + appId.toString(), + null, + true, + 3000L + ) + } + } + // 黄灯 + 7, 8 -> { + CallerHmiManager.disableWarningV2X(appId.toString()) + CallerHmiManager.showWarningTrafficLight(2, 2) + val yellow = currentLight.countDown.toInt() + CallerHmiManager.changeCountdownYellow(yellow) + } } - } -} + } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt index 25dbb1dd41..e287315253 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt @@ -55,6 +55,14 @@ enum class V2iEventTypeEnum( content = "前方%s米逆行车辆,影响路段%s米", tts = "前方%s米逆行车辆,影响路段%s米" ), + TYPE_USECASE_ID_ROAD_SPEED_LIMIT( + 1.toString(), + "限速", + poiTypeSrcVr = R.drawable.icon_warning_v2x_over_speed, + content = "前方%s米限速", + tts = "前方%s米限速" + ), + //------------道路危险情况预警 end -----------> //------------车内标牌 start --------------> @@ -68,169 +76,155 @@ enum class V2iEventTypeEnum( TYPE_ID_SHAPR_TURNS( 2.toString(), "急转弯", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米急转弯,影响路段%s米", - tts = "前方%s米急转弯,影响路段%s米" + poiTypeSrcVr = R.drawable.icon_warning_v2x_turn_left_sharp, + content = "前方%s米急转弯", + tts = "前方%s米急转弯" ), TYPE_ID_BRIDGE( 8.toString(), "桥梁", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米桥梁,影响路段%s米", - tts = "前方%s米桥梁,影响路段%s米" + content = "前方%s米桥梁", + tts = "前方%s米桥梁" ), TYPE_ID_PEDESTRIAN( 10.toString(), "行人", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米行人,影响路段%s米", - tts = "前方%s米行人,影响路段%s米" + poiTypeSrcVr = R.drawable.icon_warning_v2x_pedestrian_crossing, + content = "前方%s米行人", + tts = "前方%s米行人" ), TYPE_ID_SLIPPERY_ROAD( 17.toString(), "路滑", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米路滑,影响路段%s米", - tts = "前方%s米路滑,影响路段%s米" + content = "前方%s米路滑", + tts = "前方%s米路滑" ), TYPE_ID_TUNNEL( 21.toString(), "隧道", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米隧道,影响路段%s米", - tts = "前方%s米隧道,影响路段%s米" + content = "前方%s米隧道", + tts = "前方%s米隧道" ), TYPE_ID_FERRY( 22.toString(), "渡轮", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米渡轮,影响路段%s米", - tts = "前方%s米渡轮,影响路段%s米" + content = "前方%s米渡轮", + tts = "前方%s米渡轮" ), TYPE_ID_UNEVEN_ROAD( 24.toString(), "路面不平", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米路面不平,影响路段%s米", - tts = "前方%s米路面不平,影响路段%s米" + content = "前方%s米路面不平", + tts = "前方%s米路面不平" ), TYPE_ID_NON_MOTOR_VEHICLE( 32.toString(), "非机动车", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米有非机动车,影响路段%s米", - tts = "前方%s米有非机动车,影响路段%s米" + content = "前方%s米有非机动车", + tts = "前方%s米有非机动车" ), TYPE_ID_OBSTACLE( 36.toString(), "障碍", poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米障碍,影响路段%s米", - tts = "前方%s米障碍,影响路段%s米" + content = "前方%s米障碍", + tts = "前方%s米障碍" ), TYPE_FOURS_ROAD_WORK( 38.toString(), "施工", poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米施工,影响路段%s米", - tts = "前方%s米施工,影响路段%s米" + content = "前方%s米施工", + tts = "前方%s米施工" ), TYPE_VEHICLE_QUEUE( 47.toString(), "车队", poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米车队,影响路段%s米", - tts = "前方%s米车队,影响路段%s米" + content = "前方%s米车队", + tts = "前方%s米车队" ), TYPE_NO_PASSING( 51.toString(), "不通", poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米不通,影响路段%s米", - tts = "前方%s米不通,影响路段%s米" + content = "前方%s米不通", + tts = "前方%s米不通" ), TYPE_NO_TURNING_AROUND( 75.toString(), "禁止掉头", poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米禁止掉头,影响路段%s米", - tts = "前方%s米禁止掉头,影响路段%s米" + content = "前方%s米禁止掉头", + tts = "前方%s米禁止掉头" ), TYPE_USECASE_ID_ROAD_NO_PARKING( 78.toString(), "禁止停车", poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米禁止停车,影响路段%s米", - tts = "前方%s米禁止停车,影响路段%s米" + content = "前方%s米禁止停车", + tts = "前方%s米禁止停车" ), TYPE_USECASE_ID_ROAD_NO_TOOTING( 80.toString(), "禁止鸣笛", poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米禁止鸣笛,影响路段%s米", - tts = "前方%s米禁止鸣笛,影响路段%s米" - ), - TYPE_USECASE_ID_ROAD_SPEED_LIMIT( - 85.toString(), - "限速", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米限速,影响路段%s米", - tts = "前方%s米限速,影响路段%s米" + content = "前方%s米禁止鸣笛", + tts = "前方%s米禁止鸣笛" ), + // TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT( // 100.toString(), // "直行或右转", // poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, -// content = "前方%s米直行或右转,影响路段%s米", -// tts = "前方%s米直行或右转,影响路段%s米" +// content = "前方%s米直行或右转", +// tts = "前方%s米直行或右转" // ), TYPE_USECASE_ID_BUS_WARNING( 123.toString(), "公交提醒", poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米公交提醒,影响路段%s米", - tts = "前方%s米公交提醒,影响路段%s米" + content = "前方%s米公交提醒", + tts = "前方%s米公交提醒" ), TYPE_USECASE_ID_NARROW_RIGHT( 163.toString(), "右侧变窄/车道数减少", poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米右侧变窄/车道数减少,影响路段%s米", - tts = "前方%s米右侧变窄/车道数减少,影响路段%s米" + content = "前方%s米右侧变窄/车道数减少", + tts = "前方%s米右侧变窄/车道数减少" ), TYPE_USECASE_ID_GAS_STATION( 201.toString(), "加油站", poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米加油站,影响路段%s米", - tts = "前方%s米加油站,影响路段%s米" + content = "前方%s米加油站", + tts = "前方%s米加油站" ), TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL( 242.toString(), "学校", poiTypeSrcVr = R.drawable.icon_warning_v2x_school, - content = "前方%s米学校,影响路段%s米", - tts = "前方%s米学校,影响路段%s米" + content = "前方%s米学校", + tts = "前方%s米学校" ), TYPE_USECASE_ID_ACCIDENT( 244.toString(), "事故", poiTypeSrcVr = R.drawable.icon_warning_v2x_school, - content = "前方%s米事故,影响路段%s米", - tts = "前方%s米事故,影响路段%s米" + content = "前方%s米事故", + tts = "前方%s米事故" ), //------------车内标牌 end --------------> - TYPE_USECASE_ID_IVS( - 0x2B07.toString(), - "车内标牌", - poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "车内标牌", - tts = "" - ), - TYPE_USECASE_ID_IVP( 0x2.toString(), "闯红灯预警", @@ -281,7 +275,6 @@ enum class V2iEventTypeEnum( fun getWarningIcon(poiType: String?): Int { return when (poiType) { TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.poiTypeSrcVr - TYPE_USECASE_ID_IVS.poiType -> TYPE_USECASE_ID_IVS.poiTypeSrcVr TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.poiTypeSrcVr TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.poiTypeSrcVr TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.poiTypeSrcVr @@ -326,7 +319,6 @@ enum class V2iEventTypeEnum( fun getWarningContent(poiType: String?): String { return when (poiType) { TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.content - TYPE_USECASE_ID_IVS.poiType -> TYPE_USECASE_ID_IVS.content TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.content TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.content TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.content @@ -373,7 +365,6 @@ enum class V2iEventTypeEnum( fun getWarningTts(poiType: String?): String { return when (poiType) { TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.tts - TYPE_USECASE_ID_IVS.poiType -> TYPE_USECASE_ID_IVS.tts TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.tts TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.tts TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.tts