[dev_arch_opt_3.0] 联调完成obu升级功能

This commit is contained in:
lixiaopeng
2023-02-24 17:54:36 +08:00
20 changed files with 215 additions and 84 deletions

View File

@@ -4,6 +4,7 @@ import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.constants.MoGoConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.obu.MogoObuConst
import com.mogo.eagle.core.function.api.obu.IMoGoObuProvider
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU
@@ -18,7 +19,6 @@ import com.mogo.eagle.core.utilcode.util.CommonUtils
class MoGoObuProvider : IMoGoObuProvider {
private val TAG = "MoGoObuProvider"
private var mContext: Context? = null
private val taxiObuIp = "192.168.1.199" //obu的taxi和bus的ip已经全部统一成1网段ip
override val functionName: String
get() = TAG
@@ -36,7 +36,7 @@ class MoGoObuProvider : IMoGoObuProvider {
mContext = context
mContext?.let {
val ipAddress =
SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, MogoObuConst.OBU_DEFAULT_IP)
//mogo obu
MogoPrivateObuNewManager.INSTANCE.connectObu(
it,
@@ -44,6 +44,9 @@ class MoGoObuProvider : IMoGoObuProvider {
CommonUtils.getIpAddressString()
)
}
//监听obu版本数据
MogoPrivateObuNewManager.INSTANCE.readSystemConfig()
}
/**
@@ -74,4 +77,8 @@ class MoGoObuProvider : IMoGoObuProvider {
override fun setObuLog(isChecked: Boolean) {
MogoPrivateObuNewManager.INSTANCE.setObuLog(isChecked)
}
override fun uploadObuPack(filePathArray: Array<String>) {
MogoPrivateObuNewManager.INSTANCE.uploadObuPack(filePathArray)
}
}

View File

@@ -1,33 +0,0 @@
package com.mogo.eagle.core.function.datacenter.obu;
/**
* author : lxiiaopeng
* date : 2021-08-4
* desc : 常量
*/
public class MogoObuConst {
/**
* 自研obu的tag
*/
public static final String TAG_MOGO_OBU = "MogoObu";
public static final String TAG_MOGO_NEW_OBU = "MogoNewObu";
// OBU 场景测试
// 场景类型
public static String BROADCAST_OBU_TYPE_EXTRA_KEY = "obuType";
// 场景操作状态ObuConstants.STATUS
public static String BROADCAST_OBU_STATES_EXTRA_KEY = "obuStates";
// 场景预警等级2-弹窗3-弹窗+tts+地图绘制
public static String BROADCAST_OBU_LEVEL_EXTRA_KEY = "obuLevel";
//红绿灯标识 0:不可用1红灯2绿灯3黄灯
public static String BROADCAST_LIGHT_LEVEL_EXTRA_KEY = "lightLevel";
//弱势交通 0未知1非机动车2行人
public static String BROADCAST_PTC_INFO_EXTRA_KEY = "ptcInfo";
//道路交通信息类型 0x0--0x17
public static String BROADCAST_RTI_TYPE_EXTRA_KEY = "rtiType";
//道路交通信息触发方向 0x11--0x47
public static String BROADCAST_OBU_EVENT_DIRECTION_EXTRA_KEY = "obuEventDirection";
}

View File

@@ -1,13 +1,16 @@
package com.mogo.eagle.core.function.datacenter.obu
import android.content.Context
import android.util.Log
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.enums.*
import com.mogo.eagle.core.data.obu.MogoObuConst
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.api.map.angle.Default
import com.mogo.eagle.core.function.api.map.angle.TooClose
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
@@ -18,8 +21,10 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtilsNew
import com.mogo.eagle.core.utilcode.breakpoint.Config
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU
import com.mogo.eagle.core.utilcode.util.FileUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.support.obu.ObuBase
import com.mogo.support.obu.ObuScene
@@ -31,6 +36,8 @@ import com.mogo.support.obu.model.*
import com.mogo.support.obu.option.MogoObuCom
import com.mogo.support.obu.option.MogoObuLog
import com.mogo.support.obu.option.MogoObuOptions
import com.mogo.support.obu.upgrade.ObuSoftwareUpgradeStatus
import com.mogo.support.obu.upgrade.OnUpgradeListener
import com.zhidao.support.obu.ObuManager
import com.zhidao.support.obu.OnObuListener
import mogo.telematics.pad.MessagePad
@@ -42,7 +49,7 @@ import kotlin.math.roundToInt
* @since 2021/8/23
* @description 自研OBU 管理
*/
class MogoPrivateObuNewManager private constructor() {
class MogoPrivateObuNewManager private constructor() : OnUpgradeListener {
companion object {
val INSTANCE: MogoPrivateObuNewManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
MogoPrivateObuNewManager()
@@ -50,9 +57,12 @@ class MogoPrivateObuNewManager private constructor() {
}
private var mObuStatusInfo = CallerObuConnectListenerManager.getObuStatusInfo()
private var mContext: Context? = null
var mVersionName: String? = null
fun connectObu(context: Context, obuIpAddress: String, padIpAddress: String) {
ObuManager.getInstance().registerObuListener(mogoObuListener)
mContext = context
val com = MogoObuCom.newBuilder()
.setLocalIp(padIpAddress)
.setComType(MogoObuComType.UDP)
@@ -82,6 +92,57 @@ class MogoPrivateObuNewManager private constructor() {
ObuManager.getInstance().connect(options)
}
/**
* 上传obu文件的状态, 升级成功需要删除obu的文件和解压文件夹
*/
override fun onUpgradeStatus(status: ObuSoftwareUpgradeStatus?, t: Throwable?) {
CallerLogger.d("$M_OBU${MogoObuConst.TAG_UPGRADE_OBU}", "onUpgradeStatus status = $status ")
//上传完成就相当于成功了,立即升级,比上电升级,只是多了一个重启
if (status == ObuSoftwareUpgradeStatus.UPLOAD_FINISH|| status == ObuSoftwareUpgradeStatus.EXEC_UPGRADE_PROGRAM_FINISH
|| status == ObuSoftwareUpgradeStatus.CONNECTION_FAILED|| status == ObuSoftwareUpgradeStatus.AUTHENTICATION_FAILED
|| status == ObuSoftwareUpgradeStatus.CHANNEL_ABNORMITY|| status == ObuSoftwareUpgradeStatus.UPGRADE_PACKAGE_ERROR
|| status == ObuSoftwareUpgradeStatus.UPGRADE_PACKAGE_CHECK_FAILED || status == ObuSoftwareUpgradeStatus.PACKAGE_UPLOAD_FAILED
|| status == ObuSoftwareUpgradeStatus.EXEC_UPGRADE_PROGRAM_FAILED || status == ObuSoftwareUpgradeStatus.UNKNOWN) {
UiThreadHandler.post {
var isDeleteSuccess = FileUtils.delete(Config.downLoadObuPath)
var isDeleteUnzipSuccess = FileUtils.delete(Config.downLoadUnzipObuPath)
}
}
}
/**
* 当前的obu版本
*/
override fun onCurrentVersion(version: MogoObuSystemBConfigData) {
CallerLogger.d("$M_OBU${MogoObuConst.TAG_UPGRADE_OBU}", "onCurrentVersion version = ${version.version}")
if (!version.version.isNullOrEmpty()) {
mVersionName = version.version
CallerDevaToolsManager.queryObuUpgrade(version.version)
}
}
/**
* 监听obu
*/
fun readSystemConfig() {
ObuManager.getInstance().readSystemBConfig(mContext, MogoObuConst.OBU_DEFAULT_IP, this)
}
/**
* 传递obu升级包给硬件
* @param upgradePackage 升级包文件绝对路径 只能包含 升级包MD5文件和升级包文件
* @param isUpgradeNow 是否立即升级
* falseOBU设备下次上电时执行升级程序
* ture: OBU设备立即执行升级程序 TODO 警告:执行立即升级时请确保车辆是静止状态。车辆在运行过程中升级设备可能会影响驾驶,严重时可能造成安全隐患!!!
* @param listener 升级回调
* @return 是否调用成功
*/
fun uploadObuPack(filePathArray: Array<String>) {
CallerLogger.d("$M_OBU${MogoObuConst.TAG_UPGRADE_OBU}", " uploadObuPack filePathArray = $filePathArray")
ObuManager.getInstance().uploadUpgradePackage(MogoObuConst.OBU_DEFAULT_IP, filePathArray,true,this)
}
/**
* 断开新obu
*/
@@ -100,6 +161,9 @@ class MogoPrivateObuNewManager private constructor() {
return ObuManager.getInstance().connectStatus == MogoObuConstants.CONNECT_STATUS.CONNECTED
}
/**
* 设置obu sdk日志的输出
*/
fun setObuLog(isChecked: Boolean) {
ObuManager.getInstance().setEnableLog(isChecked)
val builder: MogoObuLog.Builder =
@@ -110,6 +174,9 @@ class MogoPrivateObuNewManager private constructor() {
ObuManager.getInstance().logConfig(builder.build())
}
/**
* obu 回调监听
*/
private val mogoObuListener: OnObuListener = object : OnObuListener {
/**
* 连接状态的改变