From e2541db3b3e2e2dad6087057c368c6101bd63541 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 29 Nov 2024 19:43:13 +0800 Subject: [PATCH] =?UTF-8?q?[6.9.0]OTA=E5=8D=87=E7=BA=A7=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=97=AD=E7=8E=AF=E9=9C=80=E6=B1=82=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 33 ++++++++ .../autopilot/adapter/MoGoAdasListenerImpl.kt | 16 +++- .../DevaToolsProvider.kt | 2 + .../ota/OTAManager.kt | 7 -- .../ota/OTAUpgradeConfig.kt | 11 +++ .../ota/OTAUpgradeManager.kt | 82 ++++++++++++++++++ .../core/function/hmi/ui/MoGoHmiProvider.kt | 12 +++ .../function/hmi/ui/tools/OTAUpgradeDialog.kt | 76 +++++++++++++++++ .../main/res/layout/dialog_ota_upgrade.xml | 84 +++++++++++++++++++ .../src/main/res/values/strings.xml | 4 + .../IMoGoAutopilotControlProvider.kt | 25 ++++++ .../api/devatools/ICaptureImgListener.kt | 17 ++++ .../function/api/devatools/IOTAListener.kt | 31 +++++++ .../api/hmi/warning/IMoGoHmiProvider.kt | 5 ++ .../CallerAutoPilotControlManager.kt | 30 +++++++ .../call/devatools/CallerCaptureImgManager.kt | 22 +++++ .../call/devatools/CallerOTAManager.kt | 48 +++++++++++ .../function/call/hmi/CallerHmiManager.kt | 7 ++ 18 files changed, 501 insertions(+), 11 deletions(-) delete mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAManager.kt create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeConfig.kt create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeDialog.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_upgrade.xml create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/ICaptureImgListener.kt create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IOTAListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerCaptureImgManager.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerOTAManager.kt diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 5494a0ca96..ed326e701b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -82,6 +82,7 @@ import com.zhjt.service.chain.ChainLog import io.netty.channel.Channel import mogo.telematics.pad.MessagePad import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest +import system_master.SsmInfo import java.util.* import java.util.concurrent.TimeUnit @@ -1480,4 +1481,36 @@ class MoGoAutopilotControlProvider : return AdasManager.getInstance().sendSimulationWireFailure(isTrigger)>-1 } + /** + * SSM发送OTA升级提示请求响应 + * @param token 域控发送OTA升级请求中的Token {@link SsmInfo.OtaDownloadRequest#getOtaToken()} + * @param ifUpgrade {@link SsmInfo.IfUpgrade#IMMEDIATELY}:立即 + * {@link SsmInfo.IfUpgrade#DELAY}:推迟 + */ + override fun sendSsmFuncOtaDownloadResponse( + token: String, + ifUpgrade: SsmInfo.IfUpgrade + ): Boolean { + return AdasManager.getInstance().sendSsmFuncOtaDownloadResponse(token, ifUpgrade)>-1 + } + + /** + * 查询OTA状态 + * @param token 域控发送OTA升级请求中的Token {@link SsmInfo.OtaDownloadRequest#getOtaToken()} + * 如果没有可以传null或"" + */ + override fun sendSsmFuncOtaStatusQuery(token: String): Boolean { + return AdasManager.getInstance().sendSsmFuncOtaStatusQuery(token)>-1 + } + + /** + * 人工接管时获取前方和后方摄像头数据 + * 一次请求域控回调次两次摄像头数据 根据{@link MessagePad.CaptureImgOnTakeOver#getUuid()}进行区分是否是哪次请求 + * 例如下发uuid = 1 域控正常会回调两次响应接口 两次的uuid都是1,通过isFront区分是前方还是后方摄像头 + * 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)} + */ + override fun sendCaptureImgReqOnTakeOver(uuid: Int): Boolean { + return AdasManager.getInstance().sendCaptureImgReqOnTakeOver(uuid)>-1 + } + } \ 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 87b6d7c4f9..e5824a8c58 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 @@ -83,6 +83,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCloudTaskL import com.mogo.eagle.core.function.call.autopilot.CallerTakeoverListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerCaptureImgManager +import com.mogo.eagle.core.function.call.devatools.CallerOTAManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.obu.CallerObuMapMathListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuWarningRsiListenerManager @@ -439,7 +441,9 @@ class MoGoAdasListenerImpl : OnAdasListener { timestamp: Long, request: SsmInfo.OtaDownloadRequest? ) { - + if(request != null){ + CallerOTAManager.invokeOtaDownloadRequest(request) + } } /** @@ -456,7 +460,9 @@ class MoGoAdasListenerImpl : OnAdasListener { timestamp: Long, progress: SsmInfo.OtaLoadingProgess? ) { - + if(progress != null){ + CallerOTAManager.invokeOtaLoadingProgress(progress) + } } /** @@ -477,7 +483,9 @@ class MoGoAdasListenerImpl : OnAdasListener { isQuery: Boolean, status: SsmInfo.OtaStatus? ) { - + if(status != null){ + CallerOTAManager.invokeOtaStatus(status) + } } /** @@ -1350,7 +1358,7 @@ class MoGoAdasListenerImpl : OnAdasListener { isFront: Boolean, data: MessagePad.CaptureImgOnTakeOver ) { - + CallerCaptureImgManager.invokeCaptureImgOnTakeOver(isFront, data) } /** diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index a728266da4..5401c0a2cf 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -73,6 +73,7 @@ import com.zhjt.mogo_core_function_devatools.mofang.MoGoMoFangProviderImpl import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager import com.zhjt.mogo_core_function_devatools.monitor.db.MonitorDb import com.zhjt.mogo_core_function_devatools.monitor.db.MonitorDb.Companion.getDb +import com.zhjt.mogo_core_function_devatools.ota.OTAUpgradeManager import com.zhjt.mogo_core_function_devatools.perf.MoGoCpuUsageProviderImpl import com.zhjt.mogo_core_function_devatools.report.IPCReportManager.Companion.iPCReportManager import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager @@ -204,6 +205,7 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { // apmEnvProvider.init(if(DebugConfig.isDebug()) "0" else "1", "${ DebugConfig.getNetMode() }", mDockerVersion ?: "") BadCaseManager.init(mContext!!) ColdStartManager.init(mContext!!) + OTAUpgradeManager.init(mContext!!) if (DebugConfig.isDebug()) { SdtManager.init(mContext!!, true, DetectResultImpl()) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAManager.kt deleted file mode 100644 index 17315896cc..0000000000 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAManager.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.zhjt.mogo_core_function_devatools.ota - -/** - * OTA升级管理类 - */ -class OTAManager { -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeConfig.kt new file mode 100644 index 0000000000..1b096fc60a --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeConfig.kt @@ -0,0 +1,11 @@ +package com.zhjt.mogo_core_function_devatools.ota + +/** + * OTA升级配置 + */ +object OTAUpgradeConfig { + + @JvmField + var otaToken: String = "" + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt new file mode 100644 index 0000000000..774bc35424 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt @@ -0,0 +1,82 @@ +package com.zhjt.mogo_core_function_devatools.ota + +import android.content.Context +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.datacenter.IDataCenterBizListener +import com.mogo.eagle.core.function.api.devatools.IOTAListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener +import com.mogo.eagle.core.function.call.devatools.CallerOTAManager +import system_master.SsmInfo + +/** + * OTA升级管理类 + */ +object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, IOTAListener { + + const val TAG = "OTAUpgradeManager" + + fun init(context: Context){ + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + CallerDataCenterBizListener.addListener(TAG,this) + CallerOTAManager.addListener(TAG,this) + //查询OTA状态 + CallerAutoPilotControlManager.sendSsmFuncOtaStatusQuery(OTAUpgradeConfig.otaToken) + } + + /** + * 自动驾驶状态信息 + * @param state 状态信息 + * 0-不可自动驾驶,adas与工控机没有链接,或工控机异常 + * 1-可自动驾驶,目前处于人工干预状态 + * 2-自动驾驶中 + * 7-平行驾驶中 + */ + override fun onAutopilotStatusResponse(state: Int) { + super.onAutopilotStatusResponse(state) + + } + + /** + * 是否有订单 + * @param inOrder true有订单 false没有订单 + */ + override fun invokeOrderStatus(inOrder: Boolean) { + super.invokeOrderStatus(inOrder) + + } + + /** + * SSM发送OTA升级提示请求 + * @param request SSM发送OTA升级提示内容 + */ + override fun onOtaDownloadRequest(request: SsmInfo.OtaDownloadRequest) { + super.onOtaDownloadRequest(request) + + } + + /** + * SSM上报OTA下载进度, 开始升级后定频上报 + * @param progress 下载进度 + */ + override fun onOtaLoadingProgress(progress: SsmInfo.OtaLoadingProgess) { + super.onOtaLoadingProgress(progress) + + + } + + /** + * SSM上报OTA状态和查询OTA状态 + * 冷启动状态变更上报以及查询状态 + * 如果是查询到的结果,{@link SsmInfo.OtaStatus#getOtaInfo()} + * 中的{@link SsmInfo.OtaDownloadRequest#getOtaToken()}==""表示不存在升级任务 + * @param status 冷启动状态变更上报以及查询状态 + */ + override fun onOtaStatus(status: SsmInfo.OtaStatus) { + super.onOtaStatus(status) + OTAUpgradeConfig.otaToken = status.otaInfo.otaToken + } + + +} \ 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/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index 19f3ce8003..8831e1c072 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -58,6 +58,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.StatusView import com.mogo.eagle.core.function.hmi.ui.setting.ToolsView.Companion.toolsView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.ModifyBindingCarDialog +import com.mogo.eagle.core.function.hmi.ui.tools.OTAUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.ToBindingCarDialog import com.mogo.eagle.core.function.hmi.ui.tools.UpgradeAppDialog import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog @@ -659,4 +660,15 @@ class MoGoHmiProvider : IMoGoHmiProvider { CallerHmiViewControlListenerManager.invokeColdStartProcessView() } + /** + * 展示OTA升级弹窗 + */ + override fun showOTAUpgradeDialog() { + ThreadUtils.runOnUiThread{ + if (context != null){ + OTAUpgradeDialog.show(context) + } + } + } + } \ 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/tools/OTAUpgradeDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeDialog.kt new file mode 100644 index 0000000000..3b916ba7fe --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeDialog.kt @@ -0,0 +1,76 @@ +package com.mogo.eagle.core.function.hmi.ui.tools + +import android.content.Context +import android.widget.TextView +import androidx.lifecycle.LifecycleObserver +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog +import com.zhjt.mogo_core_function_devatools.ota.OTAUpgradeConfig +import system_master.SsmInfo + +/** + * OTA升级对话框 + */ +class OTAUpgradeDialog(context: Context) : + BaseFloatDialog(context,TAG), LifecycleObserver { + + companion object { + private const val TAG = "OTAUpgradeDialog" + private var otaUpgradeDialog: OTAUpgradeDialog? = null + + fun show(context: Context?) { + context?.let { + if (otaUpgradeDialog == null) { + otaUpgradeDialog = OTAUpgradeDialog(it) + } + otaUpgradeDialog?.let { dialog -> + if (dialog.isShowing) { + return + } + dialog.show() + } + } + } + } + + private var clickListener: ClickListener? = null + private lateinit var tvUpgradeNow: TextView //立即升级 + private lateinit var tvUpgradeLater: TextView //稍后升级 + + init{ + setContentView(R.layout.dialog_ota_upgrade) + setCanceledOnTouchOutside(false) + initView() + } + + private fun initView(){ + tvUpgradeNow = findViewById(R.id.tv_upgrade_now) + tvUpgradeLater = findViewById(R.id.tv_upgrade_later) + //立即升级 + tvUpgradeNow.setOnClickListener { + CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.IMMEDIATELY) + } + //稍后升级 + tvUpgradeLater.setOnClickListener { + CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY) + } + } + + override fun dismiss() { + super.dismiss() + otaUpgradeDialog = null + } + + fun setClickListener(clickListener: ClickListener) { + this.clickListener = clickListener + } + + interface ClickListener{ + //立即升级 + fun upgradeNow() + //稍后升级 + fun upgradeLater() + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_upgrade.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_upgrade.xml new file mode 100644 index 0000000000..970833aaa6 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_upgrade.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index ab631a8ec0..b64d420f88 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -248,4 +248,8 @@ 冷启动进度条 + + 立即升级 + 稍后升级 + diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index c50de87886..fe977c21d8 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -17,6 +17,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume.Suspend import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp import mogo.telematics.pad.MessagePad import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest +import system_master.SsmInfo /** * @author xiaoyuzhou @@ -706,4 +707,28 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun sendSimulationWireFailure(isTrigger: Boolean): Boolean + /** + * SSM发送OTA升级提示请求响应 + * + * @param token 域控发送OTA升级请求中的Token {@link SsmInfo.OtaDownloadRequest#getOtaToken()} + * @param ifUpgrade {@link SsmInfo.IfUpgrade#IMMEDIATELY}:立即 + * {@link SsmInfo.IfUpgrade#DELAY}:推迟 + */ + fun sendSsmFuncOtaDownloadResponse(token: String,ifUpgrade: SsmInfo.IfUpgrade): Boolean + + /** + * 查询OTA状态 + * + * @param token 域控发送OTA升级请求中的Token {@link SsmInfo.OtaDownloadRequest#getOtaToken()} + * 如果没有可以传null或"" + */ + fun sendSsmFuncOtaStatusQuery(token: String): Boolean + + /** + * 人工接管时获取前方和后方摄像头数据 + * 一次请求域控回调次两次摄像头数据 根据{@link MessagePad.CaptureImgOnTakeOver#getUuid()}进行区分是否是哪次请求 + * 例如下发uuid = 1 域控正常会回调两次响应接口 两次的uuid都是1,通过isFront区分是前方还是后方摄像头 + * 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)} + */ + fun sendCaptureImgReqOnTakeOver(uuid: Int): Boolean } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/ICaptureImgListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/ICaptureImgListener.kt new file mode 100644 index 0000000000..b55de08596 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/ICaptureImgListener.kt @@ -0,0 +1,17 @@ +package com.mogo.eagle.core.function.api.devatools + +import mogo.telematics.pad.MessagePad + +/** + * 接管时前方和后方摄像头数据请求响应回调 + */ +interface ICaptureImgListener { + + /** + * 接管时前方和后方摄像头数据请求的响应 + * @param isFront true:前方摄像头 false:后方摄像头 + * @param data 数据 + */ + fun onCaptureImgOnTakeOver(isFront: Boolean, data: MessagePad.CaptureImgOnTakeOver){} + +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IOTAListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IOTAListener.kt new file mode 100644 index 0000000000..d200779363 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IOTAListener.kt @@ -0,0 +1,31 @@ +package com.mogo.eagle.core.function.api.devatools + +import system_master.SsmInfo + +/** + * OTA升级接口 + */ +interface IOTAListener { + + /** + * SSM发送OTA升级提示请求 + * @param request SSM发送OTA升级提示内容 + */ + fun onOtaDownloadRequest(request: SsmInfo.OtaDownloadRequest){} + + /** + * SSM上报OTA下载进度, 开始升级后定频上报 + * @param progress 下载进度 + */ + fun onOtaLoadingProgress(progress: SsmInfo.OtaLoadingProgess){} + + /** + * SSM上报OTA状态和查询OTA状态 + * 冷启动状态变更上报以及查询状态 + * 如果是查询到的结果,{@link SsmInfo.OtaStatus#getOtaInfo()} + * 中的{@link SsmInfo.OtaDownloadRequest#getOtaToken()}==""表示不存在升级任务 + * @param status 冷启动状态变更上报以及查询状态 + */ + fun onOtaStatus(status: SsmInfo.OtaStatus){} + +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt index a12e2d146d..0dd405c6db 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt @@ -322,4 +322,9 @@ interface IMoGoHmiProvider :IProvider{ * 展示冷启动进度条 */ fun showColdStartProcessView() + + /** + * 展示OTA升级弹窗 + */ + fun showOTAUpgradeDialog() } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 33fdcfc114..8a8aebc6f3 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -38,6 +38,7 @@ import com.zhjt.service.chain.ChainLog import com.zhjt.service_biz.BizConfig import kotlinx.coroutines.launch import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest +import system_master.SsmInfo import java.lang.StringBuilder import kotlin.random.Random @@ -1063,4 +1064,33 @@ object CallerAutoPilotControlManager { return providerApi?.sendSimulationWireFailure(isTrigger)?:false } + /** + * SSM发送OTA升级提示请求响应 + * @param token 域控发送OTA升级请求中的Token {@link SsmInfo.OtaDownloadRequest#getOtaToken()} + * @param ifUpgrade {@link SsmInfo.IfUpgrade#IMMEDIATELY}:立即 + * {@link SsmInfo.IfUpgrade#DELAY}:推迟 + */ + fun sendSsmFuncOtaDownloadResponse(token: String,ifUpgrade: SsmInfo.IfUpgrade): Boolean{ + return providerApi?.sendSsmFuncOtaDownloadResponse(token,ifUpgrade)?:false + } + + /** + * 查询OTA状态 + * @param token 域控发送OTA升级请求中的Token {@link SsmInfo.OtaDownloadRequest#getOtaToken()} + * 如果没有可以传null或"" + */ + fun sendSsmFuncOtaStatusQuery(token: String): Boolean{ + return providerApi?.sendSsmFuncOtaStatusQuery(token)?:false + } + + /** + * 人工接管时获取前方和后方摄像头数据 + * 一次请求域控回调次两次摄像头数据 根据{@link MessagePad.CaptureImgOnTakeOver#getUuid()}进行区分是否是哪次请求 + * 例如下发uuid = 1 域控正常会回调两次响应接口 两次的uuid都是1,通过isFront区分是前方还是后方摄像头 + * 域控响应接口{@link OnAdasListener#onCaptureImgOnTakeOver(MessagePad.Header, boolean, MessagePad.CaptureImgOnTakeOver)} + */ + fun sendCaptureImgReqOnTakeOver(uuid: Int): Boolean{ + return providerApi?.sendCaptureImgReqOnTakeOver(uuid)?:false + } + } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerCaptureImgManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerCaptureImgManager.kt new file mode 100644 index 0000000000..64260411c1 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerCaptureImgManager.kt @@ -0,0 +1,22 @@ +package com.mogo.eagle.core.function.call.devatools + +import com.mogo.eagle.core.function.api.devatools.ICaptureImgListener +import com.mogo.eagle.core.function.call.base.CallerBase +import mogo.telematics.pad.MessagePad + +/** + * 接管时前方和后方摄像头数据请求响应回调管理 + */ +object CallerCaptureImgManager: CallerBase() { + + /** + * 接管时前方和后方摄像头数据请求的响应 + */ + fun invokeCaptureImgOnTakeOver(isFront: Boolean, data: MessagePad.CaptureImgOnTakeOver){ + M_LISTENERS.forEach{ + val listener = it.value + listener.onCaptureImgOnTakeOver(isFront, data) + } + } + +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerOTAManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerOTAManager.kt new file mode 100644 index 0000000000..dcb60a0a47 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerOTAManager.kt @@ -0,0 +1,48 @@ +package com.mogo.eagle.core.function.call.devatools + +import com.mogo.eagle.core.function.api.devatools.IOTAListener +import com.mogo.eagle.core.function.call.base.CallerBase +import system_master.SsmInfo + +/** + * OTA升级接口回调管理 + */ +object CallerOTAManager: CallerBase() { + + /** + * SSM发送OTA升级提示请求 + * @param request SSM发送OTA升级提示内容 + */ + fun invokeOtaDownloadRequest(request: SsmInfo.OtaDownloadRequest){ + M_LISTENERS.forEach { + val listener = it.value + listener.onOtaDownloadRequest(request) + } + } + + /** + * SSM上报OTA下载进度, 开始升级后定频上报 + * @param progress 下载进度 + */ + fun invokeOtaLoadingProgress(progress: SsmInfo.OtaLoadingProgess){ + M_LISTENERS.forEach { + val listener = it.value + listener.onOtaLoadingProgress(progress) + } + } + + /** + * SSM上报OTA状态和查询OTA状态 + * 冷启动状态变更上报以及查询状态 + * 如果是查询到的结果,{@link SsmInfo.OtaStatus#getOtaInfo()} + * 中的{@link SsmInfo.OtaDownloadRequest#getOtaToken()}==""表示不存在升级任务 + * @param status 冷启动状态变更上报以及查询状态 + */ + fun invokeOtaStatus(status: SsmInfo.OtaStatus){ + M_LISTENERS.forEach { + val listener = it.value + listener.onOtaStatus(status) + } + } + +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index 6af31878c4..287775138d 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -469,4 +469,11 @@ object CallerHmiManager { hmiProviderApi?.showColdStartProcessView() } + /** + * 展示OTA升级弹窗 + */ + fun showOTAUpgradeDialog(){ + hmiProviderApi?.showOTAUpgradeDialog() + } + } \ No newline at end of file