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