From 4f25b0fd436467f4a9d30c216f1af7a09f2de91b Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 14 Feb 2023 15:17:40 +0800 Subject: [PATCH] [2.13.0-arch-opt] merge 2.14.0 line id func --- .../passenger/model/BusPassengerModel.java | 5 ++ .../mogo/och/bus/presenter/BusPresenter.java | 5 ++ .../sweeper/presenter/SweeperPresenter.java | 5 ++ .../passenger/model/TaxiPassengerModel.java | 4 + .../com/mogo/och/taxi/model/TaxiModel.java | 5 ++ .../eagle/function/biz/FuncBizProvider.kt | 14 ++++ .../function/biz/v2x/road/ILineUploadApi.kt | 16 ++++ .../biz/v2x/road/LineUploadManager.kt | 75 +++++++++++++++++++ .../hmi/ui/widget/SteeringWheelView.java | 5 ++ .../src/main/res/values/attr.xml | 1 + .../routeoverlay/MogoRouteOverlayManager.java | 5 ++ .../eagle/core/data/v2x/LineUploadData.kt | 6 ++ .../autopilot/IMoGoAutopilotStatusListener.kt | 7 +- .../CallerAutoPilotStatusListenerManager.kt | 18 +++++ .../com/mogo/commons/constants/HostConst.java | 1 + 15 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt create mode 100644 core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index b4cdfb2088..1d1af8189c 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -334,6 +334,11 @@ public class BusPassengerModel { private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index afdc84c3cf..bedbb415d9 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -267,6 +267,11 @@ public class BusPresenter extends Presenter onAutopilotStatusResponse(info); } + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotGuardian(MogoReportMsg.MogoReportMessage guardianInfo) { BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo); diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index e0534eaf5e..8ce4713150 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -161,6 +161,11 @@ public class SweeperPresenter extends Presenter } + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { if (autopilotStatusInfo == null) return; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 74ec039d91..9a7964d873 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -499,6 +499,10 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ + @Override + public void onAutopilotRouteLineId(long lineId) { + + } @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 2b7db7e77d..188faf6027 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1144,6 +1144,11 @@ public class TaxiModel { private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { } 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 86a2933f6e..c820952fa3 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 @@ -4,15 +4,18 @@ import android.content.Context import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.camera.CameraEntity +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.api.biz.IMoGoFuncBizProvider import com.mogo.eagle.core.function.api.biz.IMoGoNoticeNetCallBack +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.function.biz.dispatch.DispatchAutoPilotManager.Companion.dispatchAutoPilotManager import com.mogo.eagle.function.biz.monitoring.CronTaskManager.Companion.cronTaskManager import com.mogo.eagle.function.biz.notice.NoticeSocketManager.Companion.noticeSocketManager import com.mogo.eagle.function.biz.notice.network.NoticeNetWorkManager import com.mogo.eagle.function.biz.v2x.overview.OverViewDataManager 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.vip.VipCarManager @@ -22,13 +25,19 @@ class FuncBizProvider : IMoGoFuncBizProvider { override val functionName: String get() = "FuncBiz" + private var mContext:Context? = null + override fun init(context: Context) { + mContext = context noticeSocketManager.init(context) dispatchAutoPilotManager.init(context) cronTaskManager.startCronTask() OverviewDb.getDb(context) MogoTrafficLightManager.INSTANCE.initServer(context) VipCarManager.INSTANCE.initServer(context) + if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + LineUploadManager.getInstance(context)?.init() + } // RedLightWarningManager.INSTANCE.listenTrafficLight() } @@ -81,6 +90,11 @@ class FuncBizProvider : IMoGoFuncBizProvider { cronTaskManager.release() VipCarManager.INSTANCE.destroy() + if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + mContext?.let { + LineUploadManager.getInstance(it)?.onDestroy() + } + } // RedLightWarningManager.INSTANCE.onDestroy() } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt new file mode 100644 index 0000000000..aed87f69b2 --- /dev/null +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt @@ -0,0 +1,16 @@ +package com.mogo.eagle.function.biz.v2x.road + +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.v2x.LineUploadData +import io.reactivex.Observable +import retrofit2.http.Body +import retrofit2.http.Headers +import retrofit2.http.POST + +interface ILineUploadApi { + + @Headers("Content-type:application/json;charset=UTF-8" ) + @POST( "" ) + fun uploadLineId(@Body lineId: LineUploadData): Observable + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt new file mode 100644 index 0000000000..790ca44ab0 --- /dev/null +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt @@ -0,0 +1,75 @@ +package com.mogo.eagle.function.biz.v2x.road + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.constants.HostConst.DATA_CENTER_HOST +import com.mogo.eagle.core.data.v2x.LineUploadData +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers + +class LineUploadManager private constructor(context: Context) : IMoGoAutopilotStatusListener { + + companion object { + + private const val TAG = "LineUploadManager" + + @Volatile + private var lineUploadManager: LineUploadManager? = null + + @Synchronized + fun getInstance(context: Context): LineUploadManager? { + if (lineUploadManager == null) { + synchronized(LineUploadManager::class.java) { + if (lineUploadManager == null) { + lineUploadManager = LineUploadManager(context) + } + } + } + return lineUploadManager + } + } + + private var mContext: Context? = null + private var disposable: Disposable? = null + + init { + mContext = context + } + + fun init() { + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + } + + override fun onAutopilotRouteLineId(lineId: Long) { + super.onAutopilotRouteLineId(lineId) + if (lineId > 0) { + uploadLine(lineId) + } + } + + private fun uploadLine(lineId: Long) { + val lineUploadData = LineUploadData(lineId, MoGoAiCloudClientConfig.getInstance().sn) + disposable = MoGoRetrofitFactory.getInstance(DATA_CENTER_HOST) + .create(ILineUploadApi::class.java) + .uploadLineId(lineUploadData) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ data -> + CallerLogger.d(TAG, " uploadLine : $data") + }, { + CallerLogger.d(TAG, "e : ${it.message}") + }) + } + + fun onDestroy() { + mContext = null + disposable?.dispose() + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java index b32cfeeab4..f21e6f73e2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java @@ -104,6 +104,11 @@ public class SteeringWheelView extends ConstraintLayout implements private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml index 2b18f99042..4f2048218d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml @@ -71,6 +71,7 @@ + diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java index 9809818667..eeb872d6d3 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java @@ -126,4 +126,9 @@ public class MogoRouteOverlayManager implements @Override public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { } + + @Override + public void onAutopilotRouteLineId(long lineId) { + + } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt new file mode 100644 index 0000000000..8700029ed9 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt @@ -0,0 +1,6 @@ +package com.mogo.eagle.core.data.v2x + +/** + * 路线上报 + */ +data class LineUploadData(val lineId:Long,val sn:String) \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index 86208cc151..87d4452fb7 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -44,7 +44,12 @@ interface IMoGoAutopilotStatusListener { /** * 工控机主动查询 AdasManager#sendStatusQueryReq(),后会收到如下回调 */ - fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) { } + fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} + + /** + * 自动驾驶路线ID回调 + */ + fun onAutopilotRouteLineId(lineId: Long){} companion object { /** diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index e158d6bced..a8e8131ab8 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -7,6 +7,9 @@ import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.utilcode.util.GsonUtils import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg +import system_master.* +import java.util.concurrent.ConcurrentHashMap +import kotlin.properties.Delegates import system_master.SystemStatusInfo /** @@ -20,6 +23,20 @@ object CallerAutoPilotStatusListenerManager : CallerBase + if(newValue == null){ + return@observable + } + M_AUTOPILOT_STATUS_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotRouteLineId(newValue) + } + } + + // 存储所有注册了监听的对象,invokeXXXX进行遍历回调,将信息同步 + private val M_AUTOPILOT_STATUS_LISTENERS: ConcurrentHashMap = + ConcurrentHashMap() + @Volatile private var autoPilotMessageCode: String = "" @@ -167,6 +184,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase