diff --git a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt index 280e55603f..3a89aa6874 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt @@ -24,6 +24,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD_SHOW import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS import com.mogo.eagle.core.data.map.MogoLocation @@ -236,6 +237,14 @@ class HttpDnsStartUp : AndroidStartup() { */ private fun registerSocketHttpDnsTTL(host: String?) { mogoHttpDns.addressChangedListener(object : OnAddressChangedListener { + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, + linkCode = CHAIN_LINK_CLOUD_SHOW, + endpoint = PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED, + paramIndexes = [0], + clientPkFileName = "sn" + ) override fun onAddressChanged(address: Map?) { val dnsCacheIp = mogoHttpDns.getCachedHttpDnsIps( host, diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index f290fc1951..133eddb235 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -13,6 +13,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_C import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_CONFIG import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP @@ -21,6 +22,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LO import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY @@ -38,6 +40,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyPlanningObj import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager.invokeAutopilotWarnMessage +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningActionsListenerManager.invokePNCActions import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotRotting import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotTrajectory import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPointCloudListenerManager @@ -401,10 +404,21 @@ class MoGoAdasListenerImpl : OnAdasListener { /** * planning决策状态, 透传 */ + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS, + linkCode = CHAIN_LINK_ADAS, + endpoint = PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS, + paramIndexes = [0, 1], + clientPkFileName = "sn" + ) override fun onPlanningActionMsg( header: MessagePad.Header?, planningActionMsg: MessagePad.PlanningActionMsg? ) { + planningActionMsg?.let { + invokePNCActions(it) + } } diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index 669a626baa..52271dd4ab 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -2,7 +2,7 @@ package com.mogo.eagle.core.function.autopilot.adapter import android.annotation.SuppressLint import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.commons.debug.DebugConfig +import com.mogo.commons.debug.DebugConfig.* import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener @@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.autopilot.network.AdasServiceModel import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL import com.mogo.eagle.core.utilcode.util.ToastUtils @@ -18,6 +19,9 @@ import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasConnectStatusListener import com.zhidao.support.adas.high.bean.VersionCompatibility import com.zhidao.support.adas.high.common.Constants +import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.* +import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DRIVER +import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.PASSENGER import io.reactivex.Flowable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -133,7 +137,29 @@ class MoGoAdasMsgConnectStatusListenerImpl : OnAdasConnectStatusListener, CallerLogger.d("$M_ADAS_IMPL$TAG", "同步PAD的SN给工控机……") // 设置PAD-SN给工控,网络环境 AdasManager.getInstance() - .sendBasicInfoResp(MoGoAiCloudClientConfig.getInstance().sn, DebugConfig.getNetMode()) + .sendBasicInfoResp( + MoGoAiCloudClientConfig.getInstance().sn, + getEnvironment(), + getTerminalRole() + ) + } + + private fun getEnvironment(): Int { + return when (getNetMode()) { + NET_MODE_DEV -> DEVELOP + NET_MODE_QA -> TEST + NET_MODE_RELEASE -> PRODUCTION + NET_MODE_DEMO -> DEMO + else -> PRODUCTION + } + } + + private fun getTerminalRole(): Int { + return when { + AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) -> DRIVER + AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) -> PASSENGER + else -> DRIVER + } } /** diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/server/AsyncDataToAutopilotServer.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/server/AsyncDataToAutopilotServer.kt index f67f021802..6b152a42b0 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/server/AsyncDataToAutopilotServer.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/server/AsyncDataToAutopilotServer.kt @@ -3,7 +3,7 @@ package com.mogo.eagle.core.function.autopilot.server import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager -import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager /** * @author xiaoyuzhou @@ -22,7 +22,7 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen } fun initServer() { - CallTrafficLightListenerManager.registerTrafficLightListener(TAG, this) + CallerTrafficLightListenerManager.registerTrafficLightListener(TAG, this) } override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt index 96aae4d0f5..94c6d849af 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt @@ -57,6 +57,8 @@ class TraceManager : IMoGoCloudListener { FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT) fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS] = FwBuild(false, 30, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_PLANNING_OBJECTS) + fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS] = + FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_PLANNING_ACTIONS) traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = ChainLogParam(true, "ADAS连接状态") @@ -72,6 +74,8 @@ class TraceManager : IMoGoCloudListener { ChainLogParam(false, "ADAS车辆底盘数据") traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS] = ChainLogParam(false, "ADAS PLANNING 感知障碍物") + traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS] = + ChainLogParam(true, "ADAS PLANNING 决策行为") FileWriteManager.getInstance() .init(context, MoGoAiCloudClientConfig.getInstance().sn, pkgName, fwBuildMap) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt new file mode 100644 index 0000000000..102955c0fb --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/pnc/PncActionsView.kt @@ -0,0 +1,91 @@ +package com.mogo.eagle.core.function.hmi.ui.pnc + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.data.autopilot.pnc.PncActionsHelper +import com.mogo.eagle.core.data.trafficlight.TrafficLightResult +import com.mogo.eagle.core.data.trafficlight.currentRoadTrafficLight +import com.mogo.eagle.core.data.trafficlight.isRed +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener +import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningActionsListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import kotlinx.android.synthetic.main.view_pnc_actions.view.* +import mogo.telematics.pad.MessagePad + +class PncActionsView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotPlanningActionsListener, + IMoGoTrafficLightListener { + + companion object { + const val TAG = "PncActionsView" + } + + @Volatile + private var mTrafficLightResult: TrafficLightResult? = null + + init { + LayoutInflater.from(context).inflate(R.layout.view_pnc_actions, this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerAutopilotPlanningActionsListenerManager.addListener(TAG, this) + CallerTrafficLightListenerManager.registerTrafficLightListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerAutopilotPlanningActionsListenerManager.removeListener(TAG) + CallerTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) + } + + override fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) { + UiThreadHandler.post { + var actions: String? = null + planningActionMsg.actionMsg?.let { + + actions = PncActionsHelper.getAction(it.drivingState.number, it.drivingAction.number) + + //如果是存在云端红绿灯数据条件下,设置云端数据 + if (PncActionsHelper.isWaitingTrafficlight( + it.drivingState.number, + it.drivingAction.number + ) + && mTrafficLightResult != null + && getWaitTrafficlightTime().isNotBlank() + ) { + actions += ",预计${getWaitTrafficlightTime()}秒后通过" + } else { + mTrafficLightResult = null + } + } + // update view + actions?.let { + tvHmiPncActions.text = actions + } + } + } + + override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) { + mTrafficLightResult = trafficLightResult + } + + private fun getWaitTrafficlightTime(): String { + return if (mTrafficLightResult != null + && mTrafficLightResult!!.currentRoadTrafficLight() != null + && mTrafficLightResult!!.currentRoadTrafficLight()!!.isRed() + ) { + mTrafficLightResult!!.currentRoadTrafficLight()!!.remain.toString() + } else { + "" + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_pnc_actions.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_pnc_actions.xml new file mode 100644 index 0000000000..c1092a0b63 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_pnc_actions.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt index f2b071ffbe..5fffe10672 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt @@ -5,9 +5,8 @@ import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_V2X_MODULE import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider -import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightManager import com.mogo.eagle.core.function.v2x.events.V2XEventManager -import com.mogo.eagle.core.function.v2x.redlightwarning.RedLightWarningManager import com.mogo.eagle.core.function.v2x.speedlimit.SpeedLimitDataManager import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightDispatcher import com.mogo.eagle.core.function.v2x.vip.VipCarManager @@ -20,7 +19,7 @@ class V2XProvider : IMoGoFunctionServerProvider { get() = "V2XProvider" override fun init(context: Context) { - CallTrafficLightManager.getTrafficLightProvider().initTrafficLightServer(context) + CallerTrafficLightManager.getTrafficLightProvider().initTrafficLightServer(context) VipCarManager.INSTANCE.initServer(context) SpeedLimitDataManager.getInstance().start() TrafficLightDispatcher.INSTANCE.initServer(context) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt index 749617a443..feb8c877d3 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt @@ -10,9 +10,8 @@ import com.mogo.eagle.core.function.api.vip.IMoGoVipSetListener import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager -import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.vip.CallVipSetListenerManager -import com.mogo.eagle.core.function.v2x.vip.VipCarManager import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.map.navi.IMogoCarLocationChangedListener2 import com.mogo.module.common.MogoApisHandler @@ -72,12 +71,9 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener, } fun listenTrafficLight() { - CallTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this) - CallTrafficLightListenerManager.registerTrafficLightListener(TAG, this) - MogoApisHandler.getInstance().apis.registerCenterApi.registerCarLocationChangedListener( - VipCarManager.TAG, - this - ) + CallerTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this) + CallerTrafficLightListenerManager.registerTrafficLightListener(TAG, this) + MogoApisHandler.getInstance().apis.registerCenterApi.registerCarLocationChangedListener(TAG, this) CallVipSetListenerManager.registerVipSetListener(TAG, this) } @@ -196,9 +192,9 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener, } fun onDestroy() { - CallTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) + CallerTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) CallVipSetListenerManager.unRegisterVipSetListener(TAG) - CallTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG) + CallerTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG) MogoApisHandler.getInstance().apis.registerCenterApi.unregisterCarLocationChangedListener( TAG, this ) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt index 3b1acf95b2..9911a3b99c 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -11,7 +11,7 @@ import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.trafficlight.isInRange import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager -import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightHMIManager import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_CROSS_ROAD import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT @@ -52,7 +52,7 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { //第一次查询路口时,如果红绿灯显示,则隐藏掉 if(firstLoopCrossRoad && TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()){ TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallTrafficLightListenerManager.resetTrafficLightData() + CallerTrafficLightListenerManager.resetTrafficLightData() } firstLoopCrossRoad = false mLocation?.let { it -> @@ -81,7 +81,7 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { it.latitude, it.longitude, it.bearing.toDouble(), road, { result -> trafficLightResult = result // TrafficLightHMIManager.INSTANCE.updateTrafficLight(result) - CallTrafficLightListenerManager.invokeTrafficLightStatus(result) + CallerTrafficLightListenerManager.invokeTrafficLightStatus(result) }, { errorMsg -> //如果没有获取到正确的红绿灯数据,则取消读灯,继续读路口,防止出现一直读灯的情况 @@ -103,9 +103,9 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { } if (TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()) { TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallTrafficLightListenerManager.resetTrafficLightData() + CallerTrafficLightListenerManager.resetTrafficLightData() } - CallTrafficLightListenerManager.invokeTrafficRequestError() + CallerTrafficLightListenerManager.invokeTrafficRequestError() }) } @@ -130,18 +130,18 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { if (trafficLightResult != null && it.isInRange(loc.latitude, loc.longitude)) { inRange = true // CallerLogger.d(M_V2X + TAG, "进入路口") - CallTrafficLightListenerManager.invokeEnterCrossRoad(true) + CallerTrafficLightListenerManager.invokeEnterCrossRoad(true) return } if (inRange) { // CallerLogger.d(M_V2X + TAG, "离开路口") - CallTrafficLightListenerManager.invokeEnterCrossRoad(false) + CallerTrafficLightListenerManager.invokeEnterCrossRoad(false) inRange = false trafficLightResult = null firstLoopCrossRoad = true mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT) TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallTrafficLightListenerManager.resetTrafficLightData() + CallerTrafficLightListenerManager.resetTrafficLightData() } } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt index 49e2be29a1..79cf50b8c9 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt @@ -7,7 +7,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightHMIManager import perception.TrafficLightOuterClass import perception.TrafficLightOuterClass.TrafficLight @@ -34,11 +34,11 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener , IMoGoTrafficLigh fun initServer(context: Context){ mContext = context //注册监听AI云获取红绿灯状态 - CallTrafficLightListenerManager.registerTrafficLightListener(TAG, this) + CallerTrafficLightListenerManager.registerTrafficLightListener(TAG, this) //注册监听AI云进入路口 - CallTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this) + CallerTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this) //注册监听红绿灯请求失败 - CallTrafficLightListenerManager.registerTrafficRequestErrorListener(TAG,this) + CallerTrafficLightListenerManager.registerTrafficRequestErrorListener(TAG,this) //注册监听工控机感知红绿灯 CallerAutopilotIdentifyListenerManager.addListener(TAG, this) } @@ -119,13 +119,13 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener , IMoGoTrafficLigh fun destroy(){ //取消注册监听AI云获取红绿灯状态 - CallTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) + CallerTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) //取消注册监听工控机感知红绿灯 CallerAutopilotIdentifyListenerManager.removeListener(TAG) //取消注册监听红绿灯请求失败 - CallTrafficLightListenerManager.unRegisterTrafficRequestErrorListener(TAG) + CallerTrafficLightListenerManager.unRegisterTrafficRequestErrorListener(TAG) //取消注册监听AI云进入路口 - CallTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG) + CallerTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt index 9e47b7fcb4..7b8c2410c1 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt @@ -15,7 +15,7 @@ import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager -import com.mogo.eagle.core.function.call.trafficlight.CallTrafficLightListenerManager +import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.vip.CallVipSetListenerManager import com.mogo.eagle.core.function.v2x.trafficlight.core.MogoTrafficLightManager import com.mogo.eagle.core.function.v2x.vip.network.VipNetWorkModel @@ -183,8 +183,8 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe ) CallerHmiManager.vipIdentification(true) CallVipSetListenerManager.invokeVipSetStatus(true) - CallTrafficLightListenerManager.registerTrafficLightListener(TAG, this) - CallTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this) + CallerTrafficLightListenerManager.registerTrafficLightListener(TAG, this) + CallerTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this) } private fun cancelVip() { @@ -194,8 +194,8 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe } CallerHmiManager.vipIdentification(false) CallVipSetListenerManager.invokeVipSetStatus(false) - CallTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) - CallTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG) + CallerTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) + CallerTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG) } private fun canGetThroughCross( diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt new file mode 100644 index 0000000000..8d8591d7ba --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt @@ -0,0 +1,54 @@ +package com.mogo.eagle.core.data.autopilot.pnc + +import mogo.telematics.pad.MessagePad.DrivingState.* + +class PncActionsHelper { + + companion object { + fun getAction(driveState: Int, driveAction: Int): String { + return when (driveState) { + // 不在自动驾驶状态 + NO_AUTODRIVING_VALUE -> { + "" + } + // 车道保持 + LANKE_KEEP_VALUE -> { + "正在跟随车辆行驶" + } + // 红绿灯通行状态 driving_action:1 表示停止动作;driving_action:2 表示通行动作 + TRAFFIC_LIGHT_VALUE -> { + if (driveAction == 1) "正在等红灯" else "" + } + // follow全局择机向左变道状态 driving_action:1 表示触发变道;driving_action:2 表示择机保持;driving_action:3 表示变道完成 + FOLLOW_LANE_CHANGE_LEFT_VALUE -> { + if (driveAction == 2) "正在向左变道" else if (driveAction == 3) "正在完成变道" else "" + } + // follow全局择机向右变道状态 driving_action:1 表示触发变道;driving_action:2 表示择机保持;driving_action:3 表示变道完成 + FOLLOW_LANE_CHANGE_RIGHT_VALUE -> { + if (driveAction == 2) "正在向右变道" else if (driveAction == 3) "正在完成变道" else "" + } + // 变道绕障 主动向左/右变道状态 driving_action:1 表示触发变道;driving_action:2 表示执行变道;driving_action:3 表示变道取消;driving_action:4 表示变道完成 + AUTO_LANE_CHANGE_LEFT_VALUE, AUTO_LANE_CHANGE_RIGHT_VALUE -> { + if (driveAction == 2) "正在绕过障碍物" else if (driveAction == 3) "变道取消" else "" + } + // 主动向左/右绕行状态 driving_action:1 表示触发绕行;driving_action:2 表示执行绕行;driving_action:3 表示绕行取消;driving_action:4 表示绕行完成 + LANE_AVOID_LEFT_VALUE, LANE_AVOID_RIGHT_VALUE -> { + if (driveAction == 2) "正在避让障碍物" else "" + } + // 起步状态 driving_action:1 表示正常启动;driving_action:2 表示择机起步; + START_UP_VALUE -> { + if (driveAction == 1) "正在出站" else if (driveAction == 2) "正在等待出站" else "" + } + // 靠边停车状态 driving_action:1 表示正常靠边停车;driving_action:2 表示择机靠边停车; + PULL_OVER_VALUE -> { + if (driveAction == 1) "正在进站" else if (driveAction == 2) "正在等待进站" else "" + } + else -> "" + } + } + + fun isWaitingTrafficlight(driveState: Int, driveAction: Int): Boolean { + return driveState == TRAFFIC_LIGHT_VALUE && driveAction == 1 + } + } +} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index 7d18003de7..bc017b4ca1 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -19,6 +19,7 @@ class ChainConstant { const val CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE = 5 const val CHAIN_LINK_LOG_WEB_SOCKET_TRAFFIC_LIGHT = 6 const val CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_OBJECTS = 7 + const val CHAIN_LINK_LOG_WEB_SOCKET_PLANNING_ACTIONS = 8 const val CHAIN_LINK_LOG_ADAS_INIT = "-eagleInitStatus" const val CHAIN_LINK_LOG_ADAS_GNSS = "-adasWsGnssInfo" @@ -28,6 +29,7 @@ class ChainConstant { const val CHAIN_LINK_LOG_ADAS_VEHICLE = "-adasWsVehicle" const val CHAIN_LINK_LOG_ADAS_TRAFFIC_LIGHT = "-adasWsTrafficLight" const val CHAIN_LINK_LOG_ADAS_PLANNING_OBJECTS = "-adasWsPlanningObj" + const val CHAIN_LINK_LOG_ADAS_PLANNING_ACTIONS = "-adasWsPlanningActions" const val CHAIN_ALIAS_CODE_MULTI_CONNECT = "CHAIN_ALIAS_CODE_MULTI_CONNECT" const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_CONFIG = "CHAIN_ALIAS_CODE_CAR_CONFIG" @@ -42,12 +44,14 @@ class ChainConstant { const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE = "PAD_ADAS_MESSAGE_AUTOPILOT_VEHICLE" const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAFFIC_LIGHT = "PAD_ADAS_MESSAGE_AUTOPILOT_TRAFFIC_LIGHT" const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS = "CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_OBJECTS" + const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS = "CHAIN_ALIAS_CODE_ADAS_MESSAGE_PLANNING_ACTIONS" const val CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP = "CHAIN_ALIAS_CODE_ADAS_STATUS_QUERY_RESP" const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN = "PAD_ADAS_MESSAGE_AUTOPILOT_WARN" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST" + const val CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED = "CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED" const val CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED = "CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED" const val CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT = "CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT" diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotPlanningActionsListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotPlanningActionsListener.kt new file mode 100644 index 0000000000..1a15ae0e84 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotPlanningActionsListener.kt @@ -0,0 +1,14 @@ +package com.mogo.eagle.core.function.api.autopilot + +import mogo.telematics.pad.MessagePad + +/** + * 自动驾驶决策行为相关的监听 + */ +interface IMoGoAutopilotPlanningActionsListener { + + /** + * pnc actions 决策 驾驶的意图 + */ + fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotPlanningActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotPlanningActionsListenerManager.kt new file mode 100644 index 0000000000..1d9801fc5c --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotPlanningActionsListenerManager.kt @@ -0,0 +1,69 @@ +package com.mogo.eagle.core.function.call.autopilot + +import androidx.annotation.Nullable +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener +import com.mogo.eagle.core.function.call.base.CallerBase +import mogo.telematics.pad.MessagePad +import java.util.concurrent.ConcurrentHashMap + +/** + * PNC 决策行为相关监听 + */ +object CallerAutopilotPlanningActionsListenerManager : CallerBase() { + + private val M_AUTOPILOT_PLANNING_ACTIONS_LISTENER: ConcurrentHashMap = + ConcurrentHashMap() + + /** + * 添加监听 + * @param tag 标记,用来注销监听使用 + * @param listener 监听回调 + */ + fun addListener( + @Nullable tag: String, + @Nullable listener: IMoGoAutopilotPlanningActionsListener + ) { + if (M_AUTOPILOT_PLANNING_ACTIONS_LISTENER.containsKey(tag)) { + return + } + M_AUTOPILOT_PLANNING_ACTIONS_LISTENER[tag] = listener + } + + /** + * 删除监听 + * @param tag 标记,用来注销监听使用 + */ + fun removeListener(@Nullable tag: String) { + if (!M_AUTOPILOT_PLANNING_ACTIONS_LISTENER.containsKey(tag)) { + return + } + M_AUTOPILOT_PLANNING_ACTIONS_LISTENER.remove(tag) + } + + /** + * 删除自动驾驶按钮选中监听 + * @param listener 要删除的监听对象 + */ + fun removeListener(@Nullable listener: IMoGoAutopilotPlanningActionsListener) { + M_AUTOPILOT_PLANNING_ACTIONS_LISTENER.forEach { + if (it.value == listener) { + M_AUTOPILOT_PLANNING_ACTIONS_LISTENER.remove(it.key) + } + } + } + + /** + * pnc actions 决策回调 + * @param planningActionMsg 具体决策 + */ + @Synchronized + fun invokePNCActions(planningActionMsg: MessagePad.PlanningActionMsg) { + M_AUTOPILOT_PLANNING_ACTIONS_LISTENER.forEach { + val tag = it.key + val listener = it.value + listener.pncActions(planningActionMsg) + } + } + + +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallTrafficLightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt similarity index 99% rename from core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallTrafficLightListenerManager.kt rename to core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt index a520edaf98..eb6563c810 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallTrafficLightListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightListenerManager.kt @@ -5,7 +5,7 @@ import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import java.util.concurrent.ConcurrentHashMap -object CallTrafficLightListenerManager { +object CallerTrafficLightListenerManager { private val M_TRAFFIC_LIGHT_LISTENER: ConcurrentHashMap = ConcurrentHashMap() diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallTrafficLightManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightManager.kt similarity index 91% rename from core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallTrafficLightManager.kt rename to core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightManager.kt index efc7a7d7ee..0c8f8e649e 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallTrafficLightManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/trafficlight/CallerTrafficLightManager.kt @@ -4,7 +4,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.api.trafficlight.ITrafficLightProvider import com.mogo.eagle.core.function.call.base.CallerBase -object CallTrafficLightManager : CallerBase() { +object CallerTrafficLightManager : CallerBase() { fun getTrafficLightProvider(): ITrafficLightProvider { return getApiInstance(