diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt index ac999a64b0..58f583c45e 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt @@ -19,7 +19,6 @@ import com.mogo.eagle.function.biz.v2x.overview.db.OverviewDb import com.mogo.eagle.function.biz.v2x.road.LineUploadManager import com.mogo.eagle.function.biz.v2x.trafficlight.core.MogoTrafficLightManager import com.mogo.eagle.function.biz.v2x.v2n.V2XEventManager -import com.mogo.eagle.function.biz.v2x.v2n.V2XPoiLoader.Companion.v2xPoiLoader import com.mogo.eagle.function.biz.v2x.v2n.pnc.* import com.mogo.eagle.function.biz.v2x.vip.VipCarManager @@ -92,11 +91,11 @@ class FuncBizProvider : IMoGoFuncBizProvider { } override fun getAllV2XEvents() { - OverViewDataManager.getAllV2XEventsByLineId(MoGoAiCloudClientConfig.getInstance().sn) +// OverViewDataManager.getAllV2XEventsByLineId(MoGoAiCloudClientConfig.getInstance().sn) } override fun queryV2XEvents() { - v2xPoiLoader.queryWholeRoadEvents() +// v2xPoiLoader.queryWholeRoadEvents() } override fun onDestroy() { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt index 3c4f19f1af..a68860ee45 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt @@ -6,9 +6,11 @@ import android.os.Handler import android.os.Looper import android.util.Log import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_V2N import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CLOUD_V2N +import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.enums.EventTypeHelper import com.mogo.eagle.core.data.enums.TrafficTypeEnum @@ -41,7 +43,11 @@ import com.mogo.eagle.function.biz.v2x.v2n.utils.toRoadMarker import com.mogo.eagle.core.data.v2x.V2XEvent import com.mogo.eagle.core.data.v2x.V2XMarkerCardResult import com.mogo.eagle.core.data.v2x.V2XWarningTarget +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoV2XListener import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.function.biz.v2x.v2n.V2XPoiLoader.Companion.v2xPoiLoader import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -58,9 +64,11 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.launch import java.util.concurrent.atomic.AtomicBoolean import mogo.telematics.pad.MessagePad.PlanningObject +import mogo.v2x.MogoV2X object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, - IMoGoAutopilotIdentifyListener, IMoGoCloudListener { + IMoGoAutopilotIdentifyListener, IMoGoCloudListener, + IMoGoV2XListener, IMoGoAutopilotStatusListener { private const val TAG = "V2XEventManager" @@ -70,6 +78,9 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, private val hasInit by lazy { AtomicBoolean(false) } + @Volatile + private var eventCount = -1 + fun init(context: Context) { BridgeApi.init(context) if (hasInit.compareAndSet(false, true)) { @@ -85,6 +96,8 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, v2xPoiLoader.addCallback(this) CallerCloudListenerManager.addListener(TAG,this) CallerAutopilotIdentifyListenerManager.addListener(TAG, this) + CallerV2XListenerManager.addListener(TAG, this) + CallerAutoPilotStatusListenerManager.addListener(TAG, this) } private fun unRegisterListener() { @@ -92,6 +105,8 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, v2xPoiLoader.removeCallback(this) CallerCloudListenerManager.removeListener(TAG) CallerAutopilotIdentifyListenerManager.removeListener(TAG) + CallerV2XListenerManager.removeListener(TAG) + CallerAutoPilotStatusListenerManager.removeListener(TAG) } override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { @@ -381,4 +396,31 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, } } + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + if (autoPilotStatusInfo.autopilotControlParameters != null) { + eventCount = -1 + } + } + + override fun onV2nGlobalPathEvents( + eventCount: Int, + construct: MogoV2X.RSI_PB?, + triangle: MogoV2X.RSI_PB?, + congestion: MogoV2X.RSI_PB?, + parkingViolation: MogoV2X.RSM_PB? + ) { + if (this.eventCount == -1) { + this.eventCount = eventCount + if (eventCount >= 0) { + sendToMsgBox(eventCount) + } + } + } + + private fun sendToMsgBox(count: Int) { + val msgBoxBean = + MsgBoxBean(MsgBoxType.V2X, V2XMsg("", "查询到当前全程共${count}个事件", "")) + msgBoxBean.sourceType = DataSourceType.SUMMARY + CallerMsgBoxManager.saveMsgBox(msgBoxBean) + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 657e8df8b2..ed6d141d1b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -655,7 +655,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param parkingViolation 违停 ---包含 静态障碍车 */ override fun onV2nGlobalPathEvents(header: MessagePad.Header, roadOverview: RoadOverviewEvents.RoadOverviewData, construct: MogoV2X.RSI_PB?, triangle: MogoV2X.RSI_PB?, congestion: MogoV2X.RSI_PB?, parkingViolation: MogoV2X.RSM_PB?) { - + CallerV2XListenerManager.dispatchV2nGlobalPathEvents(roadOverview.eventCount, construct, triangle, congestion, parkingViolation) } /** diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index 3cef39a6a1..7c746334c2 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -22,13 +22,16 @@ import com.amap.api.maps.TextureMapView import com.amap.api.maps.model.* import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.data.v2x.Center import com.mogo.eagle.core.data.v2x.V2XEventData import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoV2XListener import com.mogo.eagle.core.function.api.biz.IFuncBizProvider import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.getGlobalPath import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager import com.mogo.eagle.core.function.call.biz.CallerFuncBizListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showVideoDialog import com.mogo.eagle.core.function.map.R @@ -43,9 +46,12 @@ import com.mogo.eagle.core.function.smp.MarkerDrawerManager.startLoopCalCarLocat import com.mogo.eagle.core.function.smp.MarkerDrawerManager.updateRoutePoints import com.mogo.eagle.core.function.smp.V2XMarkerView import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils +import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import me.jessyan.autosize.utils.AutoSizeUtils import mogo.telematics.pad.MessagePad +import mogo.v2x.MogoV2X +import kotlin.math.pow /** * 全览地图View @@ -57,7 +63,7 @@ class OverMapView @JvmOverloads constructor( attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : RelativeLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener, - IMoGoPlanningRottingListener { + IMoGoPlanningRottingListener, IMoGoV2XListener { // =============自定义属性相关============= private var mapStylePath: String? = null @@ -313,9 +319,10 @@ class OverMapView @JvmOverloads constructor( } override fun onV2XEvents(v2XEventData: List?) { - showV2XEventMarkers(v2XEventData) +// showV2XEventMarkers(v2XEventData) } }) + CallerV2XListenerManager.addListener(TAG, this) // 主动查一次全局路径规划的数据 getGlobalPath() } @@ -471,6 +478,7 @@ class OverMapView @JvmOverloads constructor( // 注册定位监听 CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) CallerPlanningRottingListenerManager.removeListener(TAG) + CallerV2XListenerManager.removeListener(TAG) } override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { @@ -696,4 +704,53 @@ class OverMapView @JvmOverloads constructor( handlePlanningData(it.wayPointsList) } } + + override fun onV2nGlobalPathEvents( + eventCount: Int, + construct: MogoV2X.RSI_PB?, + triangle: MogoV2X.RSI_PB?, + congestion: MogoV2X.RSI_PB?, + parkingViolation: MogoV2X.RSM_PB? + ) { + val constructList = construct?.rsiFrame?.rtes?.rteDataList + val triangleList = triangle?.rsiFrame?.rtes?.rteDataList + val congestionList = congestion?.rsiFrame?.rtes?.rteDataList + val parkingList = parkingViolation?.rsmFrame?.participants?.participantDataList + val list = ArrayList() + constructList?.forEach { + it.eventPos?.offsetLL?.positionLatLon?.let { latLon -> + list.add(V2XEventData( + 0, 0, "", Center(latLon.lat * 10.0.pow(-7.0), + latLon.lon * 10.0.pow(-7.0)), null, 0.0, "10006", 1 + )) + } + } + triangleList?.forEach { + it.eventPos?.offsetLL?.positionLatLon?.let { latLon -> + list.add(V2XEventData( + 0, 0, "", Center(latLon.lat * 10.0.pow(-7.0), + latLon.lon * 10.0.pow(-7.0)), null, 0.0, "10032", 1 + )) + } + } + congestionList?.forEach { + it.eventPos?.offsetLL?.positionLatLon?.let { latLon -> + list.add(V2XEventData( + 0, 0, "", Center(latLon.lat * 10.0.pow(-7.0), + latLon.lon * 10.0.pow(-7.0)), null, 0.0, "10007", 1 + )) + } + } + parkingList?.forEach { + it.pos?.offsetLL?.positionLatLon?.let { latLon -> + list.add(V2XEventData( + 0, 0, "", Center(latLon.lat * 10.0.pow(-7.0), + latLon.lon * 10.0.pow(-7.0)), null, 0.0, "10025", 1 + )) + } + } + UiThreadHandler.post { + showV2XEventMarkers(list) + } + } } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoV2XListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoV2XListener.kt new file mode 100644 index 0000000000..1c0b3abd29 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoV2XListener.kt @@ -0,0 +1,11 @@ +package com.mogo.eagle.core.function.api.autopilot + +import mogo.v2x.MogoV2X + + +/** + * V2X数据 + */ +interface IMoGoV2XListener { + fun onV2nGlobalPathEvents(eventCount: Int, construct: MogoV2X.RSI_PB?, triangle: MogoV2X.RSI_PB?, congestion: MogoV2X.RSI_PB?, parkingViolation: MogoV2X.RSM_PB?) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerV2XListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerV2XListenerManager.kt new file mode 100644 index 0000000000..db94d4d4e4 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerV2XListenerManager.kt @@ -0,0 +1,21 @@ +package com.mogo.eagle.core.function.call.autopilot + +import com.mogo.eagle.core.function.api.autopilot.IMoGoV2XListener +import com.mogo.eagle.core.function.call.base.CallerBase +import mogo.v2x.MogoV2X + +/** + * 工控机发过来的V2X数据 + */ +object CallerV2XListenerManager : CallerBase() { + + /** + * 分发主车路径全局事件 + */ + fun dispatchV2nGlobalPathEvents(eventCount: Int, construct: MogoV2X.RSI_PB?, triangle: MogoV2X.RSI_PB?, congestion: MogoV2X.RSI_PB?, parkingViolation: MogoV2X.RSM_PB?) { + M_LISTENERS.forEach { + val listener = it.value + listener.onV2nGlobalPathEvents(eventCount, construct, triangle, congestion, parkingViolation) + } + } +} \ No newline at end of file