diff --git a/config.gradle b/config.gradle index 2d4c6d6ddc..a0654f8743 100644 --- a/config.gradle +++ b/config.gradle @@ -93,7 +93,7 @@ ext { // obu sdk obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", - mogoobu : 'com.mogo.support.obu:mogo-obu:1.1.0_beta1', + mogoobu : 'com.mogo.support.obu:mogo-obu:1.1.0_beta3', // google googlezxing : "com.google.zxing:core:3.3.3", diff --git a/core/function-impl/mogo-core-function-datacenter/README.md b/core/function-impl/mogo-core-function-datacenter/README.md index b17a6584f3..3721fcd10f 100644 --- a/core/function-impl/mogo-core-function-datacenter/README.md +++ b/core/function-impl/mogo-core-function-datacenter/README.md @@ -44,7 +44,7 @@ MogoObuManager.getInstance().init(Context context); ``` ## 连接 ```java -//默认192.168.1.199 +//默认 MogoObuManager.getInstance().connect(); //自定义 IP MogoObuManager.getInstance().connect(String ip); diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt index 3e55c6a63f..5866e03d0a 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt @@ -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) { + MogoPrivateObuNewManager.INSTANCE.uploadObuPack(filePathArray) + } } \ 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/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index 2df54c4021..9ed1316354 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -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 是否立即升级 + * false:OBU设备下次上电时执行升级程序 + * ture: OBU设备立即执行升级程序 TODO 警告:执行立即升级时请确保车辆是静止状态。车辆在运行过程中升级设备可能会影响驾驶,严重时可能造成安全隐患!!! + * @param listener 升级回调 + * @return 是否调用成功 + */ + fun uploadObuPack(filePathArray: Array) { + 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 { /** * 连接状态的改变 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 4dbc384f01..c3dfb3780d 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 @@ -239,4 +239,8 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun apmEnvProvider(): IApmEnvProvider = apmEnvProvider + + override fun queryObuUpgrade(obuVersionName: String) { + bindingCarManager.queryObuUpgrade(obuVersionName) + } } \ 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/binding/BindingCarManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt index 2e08b89f0a..1c032cbf7b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt @@ -9,11 +9,14 @@ import com.mogo.eagle.core.data.app.AppConfigInfo.role import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.data.obu.MogoObuConst import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager +import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isDriver import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager @@ -59,9 +62,6 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.macAddress)) { Log.d("Upgrade", "MoGoHandAdasMsgManager address = " + carConfigResp.macAddress) getBindingCarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn) - - //obu的升级,只需要司机屏连接 - queryObuUpgrade(carConfigResp.macAddress) } } @@ -164,14 +164,16 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { fun queryAppUpgrade() { UpgradeAppNetWorkManager.getInstance() .getAppUpgradeInfo(mContext, mAddress, role.toString() + "") + } /** * 司机屏 处理obu升级即可,乘客屏不需要处理 - * + * obu的升级,只需要司机屏连接 */ - private fun queryObuUpgrade(macAddress: String) { - ObuUpgradeAppNetWorkManager.getInstance().getObuUpgradeInfo(mContext, macAddress) + fun queryObuUpgrade(obuVersionName: String) { + CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}","queryObuUpgrade isConnected = ${CallerObuApiManager.isConnected()} --- mAddress = $mAddress") + ObuUpgradeAppNetWorkManager.getInstance().getObuUpgradeInfo(mContext, mAddress, obuVersionName) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java index cf5a8832bd..08169d44e9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java @@ -3,17 +3,17 @@ package com.zhjt.mogo_core_function_devatools.upgrade; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING; import android.content.Context; +import android.util.Log; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.constants.HostConst; import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo; +import com.mogo.eagle.core.data.obu.MogoObuConst; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.eagle.core.network.utils.GsonUtil; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.AppUtils; - import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.annotations.NonNull; @@ -50,15 +50,15 @@ public class ObuUpgradeAppNetWorkManager { /** * 获取obu升级信息,obu升级服务端使用app升级接口,根据screenType区分类型 - * mac :工控机mac地址 + * mac :工控机mac地址, * screenType : 类型 */ - public void getObuUpgradeInfo(Context context, String mac) { + public void getObuUpgradeInfo(Context context, String mac, String versionName) { // String sn = "X20202203105S688HZ"; -// String mac = "48:b0:2d:3a:bc:78"; +// String mac1 = "48:b0:2d:4d:33:40"; + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - String obuVersionName = String.valueOf(AppUtils.getAppVersionCode()); // TODO 获取obu的版本号, string和int 服务端处理 - CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo mac = " + mac + "---sn = " + sn + "---obuVersionName =" + obuVersionName); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo mac = " + mac + " ---sn = " + sn + " ---versionName = " + versionName); UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, "7"); RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)); mUpgradeApiService.getUpgradeInfo(requestBody) @@ -72,10 +72,9 @@ public class ObuUpgradeAppNetWorkManager { @Override public void onNext(@NonNull UpgradeAppInfo info) { if (info != null && info.result != null) { - CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo url = " + info.result.getAppUrl() + "----name = " + info.result.getVersionName() + "--obuVersionName =" + obuVersionName + "--info.result = " + info.result); - if (!String.valueOf(info.result.getVersionName()).equals(obuVersionName)) { - //下载 TAG和文件名 TODO - CallerDevaToolsManager.INSTANCE.downLoadPackage("OBU", info.result.getAppUrl()); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo appFileName = " + info.result.getAppFileName() + " ----url = " + info.result.getAppUrl() + " ----name = " + info.result.getVersionName() + " --obuVersionName =" + versionName + " ---info.result = " + info.result); + if (!String.valueOf(info.result.getVersionName()).equals(versionName)) { //判断是否下载,当文件名称不一致的时候,就下载 + CallerDevaToolsManager.INSTANCE.downLoadPackage(info.result.getAppFileName(), info.result.getAppUrl()); } } else { CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo onNext info == null"); @@ -84,7 +83,7 @@ public class ObuUpgradeAppNetWorkManager { @Override public void onError(Throwable e) { - + CallerLogger.INSTANCE.e(M_BINDING + TAG, "getObuUpgradeInfo e = " + e); } @Override diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt index 3fdbdce9b6..f8773ed393 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt @@ -2,18 +2,23 @@ package com.zhjt.mogo_core_function_devatools.upgrade import android.app.NotificationManager import android.content.Context +import android.util.Log import androidx.core.app.NotificationCompat import com.elegant.utils.UiThreadHandler +import com.mogo.eagle.core.data.obu.MogoObuConst import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.updateStatusBarDownloadView +import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.utilcode.breakpoint.Config import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload import com.mogo.eagle.core.utilcode.breakpoint.utils.DownloadUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.util.AppUtils +import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.ZipUtils import java.io.IOException @@ -29,12 +34,18 @@ class UpgradeManager : IDownload { } private var map: Map? = null + private var mDownloadFileName: String? = null fun downLoadPackage(context: Context, downloadKey: String,downloadUrl: String) { + CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "UpgradeManager downLoadPackage = " + downloadUrl?.contains(".zip") + "----downloadKey = $downloadKey ---downloadUrl = $downloadUrl") + if (downloadUrl?.contains(".zip")) { + mDownloadFileName = downloadKey + } + DownloadUtils.downLoad( context, downloadUrl, - Config.downLoadPath, + if (downloadUrl?.contains(".zip")) Config.downLoadObuPath else Config.downLoadPath, downloadKey, 5, this @@ -81,7 +92,7 @@ class UpgradeManager : IDownload { } override fun onFinished(downloadUrl: String?, threadBean: ThreadBean?) { - if (downloadUrl != null) { + if (downloadUrl != null) { //TODO 需要判断是否是apk文件 AppUtils.installApp(Config.downLoadPath + downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1)) } if (downloadUrl != null) { @@ -119,7 +130,7 @@ class UpgradeManager : IDownload { } /** - * 鹰眼app下载监听 + * 鹰眼app下载监听 liyz */ fun updateUpgradeProgress(context: Context) { val builder = NotificationCompat.Builder(context) @@ -162,23 +173,38 @@ class UpgradeManager : IDownload { override fun onStart(url: String?) {} override fun onPause(url: String?) {} override fun onProgress(url: String?, length: Int) { - } override fun onFinished(url: String?) { - //下载完成,解压文件 TODO + //下载完成,解压文件 try { - val files = ZipUtils.unzipFile("", "") - //传给obu升级 - + val files = ZipUtils.unzipFile(Config.downLoadObuPath + mDownloadFileName, Config.downLoadUnzipObuPath) + CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished file = ${Config.downLoadObuPath + mDownloadFileName} -----files = $files ") + //1传给obu升级,升级成功,2需要删除相应文件夹 + var md5Path = "" + var tarPath = "" + for (f in files) { + if (f.path.contains(".md5")) { + md5Path = f.path + } + if (f.path.contains(".gz")) { + tarPath = f.path + } + } + CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "updateObuUpgradeStatus ---md5Path = $md5Path -----tarPath = $tarPath ") + CallerObuApiManager.uploadObuPack(arrayOf(md5Path, tarPath)) } catch (e: IOException) { //解压失败 - + com.mogo.eagle.core.utilcode.util.UiThreadHandler.post { + var isDeleteSuccess = FileUtils.delete(Config.downLoadObuPath) + var isDeleteUnzipSuccess = FileUtils.delete(Config.downLoadUnzipObuPath) + } e.printStackTrace() } } - override fun onError(url: String?, errorMsg: String?) {} + override fun onError(url: String?, errorMsg: String?) { + } }) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index c5a07964f2..c3245213b3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -39,6 +39,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneModule import com.mogo.eagle.core.data.enums.TrafficTypeEnum import com.mogo.eagle.core.data.gnss.AccelerationEntity import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.data.obu.MogoObuConst import com.mogo.eagle.core.data.obu.ObuStatusInfo import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.function.api.autopilot.* @@ -558,7 +559,7 @@ internal class DebugSettingView @JvmOverloads constructor( // 初始化OBU IP信息 val ipAddress = - SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, "192.168.1.199") + SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, MogoObuConst.OBU_DEFAULT_IP) etObuIP.setText(ipAddress) etObuIP.text?.let { etObuIP.setSelection(it.length) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index ffd67f3131..116662754b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -8,6 +8,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig +import com.mogo.eagle.core.data.obu.MogoObuConst import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager @@ -182,7 +183,7 @@ internal class SOPSettingView @JvmOverloads constructor( tbObu.isChecked = CallerObuApiManager.isConnected() tbObu.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { - CallerObuApiManager.resetObuIpAddress("192.168.1.199") + CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP) } else { //断开链接 CallerObuApiManager.disConnectObu() diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/AppInfo.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/AppInfo.java index 86c04140ab..9e731a91b0 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/AppInfo.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/AppInfo.java @@ -17,6 +17,7 @@ public class AppInfo implements Serializable { private String installType; // 升级类型 1:提示升级 2:静默升级 3:强制升级 private String beginTime; private String endTime; + private String appFileName; public String getAppUrl() { return appUrl; @@ -90,6 +91,14 @@ public class AppInfo implements Serializable { this.endTime = endTime; } + public String getAppFileName() { + return appFileName; + } + + public void setAppFileName(String appFileName) { + this.appFileName = appFileName; + } + @Override public String toString() { return "AppInfo{" + @@ -102,6 +111,7 @@ public class AppInfo implements Serializable { ", installType='" + installType + '\'' + ", beginTime='" + beginTime + '\'' + ", endTime='" + endTime + '\'' + + ", appFileName='" + appFileName + '\'' + '}'; } } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuConst.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/MogoObuConst.java similarity index 74% rename from core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuConst.java rename to core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/MogoObuConst.java index 8134f27b41..a80d836f78 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuConst.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/MogoObuConst.java @@ -1,4 +1,4 @@ -package com.mogo.eagle.core.function.datacenter.obu; +package com.mogo.eagle.core.data.obu; /** * author : lxiiaopeng @@ -10,10 +10,20 @@ public class MogoObuConst { /** * 自研obu的tag */ - public static final String TAG_MOGO_OBU = "MogoObu"; - public static final String TAG_MOGO_NEW_OBU = "MogoNewObu"; + /** + * 自研obu 默认ip obu的taxi和bus的ip已经全部统一成1网段ip + */ + public static String OBU_DEFAULT_IP = "192.168.1.199"; +// public static String OBU_DEFAULT_IP = "192.168.0.53"; //obu室内环境 + + /** + * obu 升级tag + */ + public static final String TAG_UPGRADE_OBU = "TagUpgradeObu"; + + // OBU 场景测试 // 场景类型 public static String BROADCAST_OBU_TYPE_EXTRA_KEY = "obuType"; diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index 8a2650d7a0..5f7cca0772 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -172,6 +172,11 @@ interface IDevaToolsProvider : IProvider { */ fun queryAppUpgrade() + /** + * 查询obu是否有更新 + */ + fun queryObuUpgrade(obuVersionName: String) + fun getEnvConfig(): EnvConfig? fun getEnvCityName():String diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt index 10251bc371..e2af230c6c 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt @@ -16,4 +16,6 @@ interface IMoGoObuProvider : IMoGoFunctionServerProvider { fun isConnected(): Boolean fun setObuLog(isChecked: Boolean) + + fun uploadObuPack(filePathArray: Array) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index 77c4892197..6c9cab0897 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -237,4 +237,8 @@ object CallerDevaToolsManager { } fun apmEnvProvider(): IApmEnvProvider? = devaToolsProviderApi?.apmEnvProvider() + + fun queryObuUpgrade(obuVersionName: String) { + devaToolsProviderApi?.queryObuUpgrade(obuVersionName) + } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt index 66327389bc..67b18a74b1 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt @@ -47,4 +47,11 @@ object CallerObuApiManager { providerApi.setObuLog(isSet) } + /** + * 升级obu硬件 + */ + fun uploadObuPack(filePathArray: Array) { + providerApi.uploadObuPack(filePathArray) + } + } \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java index 987c395343..b92e60027b 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java @@ -16,5 +16,8 @@ public class Config { public final static String downLoadObuPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/obu/"; + public final static String downLoadUnzipObuPath = Environment.getExternalStorageDirectory().getAbsolutePath() + + "/obuunzip/"; + public final static String DOWN_LOAD_TAG = "Package-DownLoad"; } diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java index c20becc8ee..77be24236a 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java @@ -51,7 +51,7 @@ public class DownloadThread extends Thread { int start = threadBean.getStart() + threadBean.getFinished(); connection.setRequestProperty("Range","bytes="+start+"-"+threadBean.getEnd()); //设置写入位置 - File file = new File(Config.downLoadPath,fileBean.getFileName()); + File file = new File(fileBean.getFileName().contains(".zip") ? Config.downLoadObuPath : Config.downLoadPath,fileBean.getFileName()); raf = new RandomAccessFile(file,"rwd"); raf.seek(start); //开始下载 diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java index 05c06c7508..59ff2b83e5 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java @@ -2,6 +2,7 @@ package com.mogo.eagle.core.utilcode.breakpoint.utils; import android.content.Context; import android.content.Intent; +import android.util.Log; import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload; diff --git a/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java b/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java index 7ab2f1d202..2c95eb0da2 100644 --- a/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java +++ b/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java @@ -3,6 +3,7 @@ package com.zhidao.support.obu; import android.content.Context; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.mogo.support.obu.MogoObuManager; import com.mogo.support.obu.ObuBase; @@ -16,6 +17,7 @@ import com.mogo.support.obu.model.MogoObuRsiWarningData; import com.mogo.support.obu.model.MogoObuRsmWarningData; import com.mogo.support.obu.model.MogoObuRvWarningData; import com.mogo.support.obu.model.MogoObuSpatWarningData; +import com.mogo.support.obu.model.MogoObuSystemBConfigData; import com.mogo.support.obu.model.advance.AccFourAxes; import com.mogo.support.obu.model.advance.DateTime; import com.mogo.support.obu.model.advance.NodeId; @@ -106,13 +108,13 @@ public class ObuManager { /** * 获取当前OBU软件版本 - * 需主动调用获取{@link MogoObuManager#getObuVersion(Context, String, OnUpgradeListener)} * * @return 版本 null表示 无法连接OBU;无法获取版本; * @since 1.1.0 */ - public String getObuVersion() { - return MogoObuManager.getInstance().getObuVersion(); + @Nullable + public MogoObuSystemBConfigData getObuSystemBConfig() { + return MogoObuManager.getInstance().getObuSystemBConfig(); } /** @@ -269,64 +271,43 @@ public class ObuManager { /** - * 检查更新 + * 获取OBu配置信息 * * @param obuIp OBU IP * @param listener 升级回调 - * @since 1.1.0 - */ - public boolean checkObuUpgrade(@NonNull Context context, @NonNull String obuIp, OnUpgradeListener listener) { - return MogoObuManager.getInstance().checkObuUpgrade(context, obuIp, listener); - } - - /** - * 检查更新 - * - * @param context 上下文 - * @param obuIp OBU IP - * @param isUpgradeNow 是否立即升级 - * false:OBU设备下次上电时执行升级程序 - * ture: OBU设备立即执行升级程序 TODO 警告:执行立即升级时请确保车辆是静止状态。车辆在运行过程中升级设备可能会影响驾驶,严重时可能造成安全隐患!!! - * @param listener 升级回调 - * @return 是否调用成功 - * @since 1.1.0 - */ - public boolean checkObuUpgrade(@NonNull Context context, @NonNull String obuIp, boolean isUpgradeNow, OnUpgradeListener listener) { - return MogoObuManager.getInstance().checkObuUpgrade(context, obuIp, isUpgradeNow, listener); - } - - /** - * 获取当前连接OBU的版本号 - * 如果调用 {@link MogoObuManager#checkObuUpgrade(Context, String, OnUpgradeListener)}方法可以不用调用此方法,检查更新会获取版本号 - * - * @param context 上下文 - * @param obuIp OBU IP - * @param listener 升级回调 * @return 是否调用成功 * @since 1.1.0 */ - public boolean getObuVersion(@NonNull Context context, @NonNull String obuIp, OnUpgradeListener listener) { - return MogoObuManager.getInstance().getObuVersion(context, obuIp, listener); + public boolean readSystemBConfig(Context context, @NonNull String obuIp, OnUpgradeListener listener) { + return MogoObuManager.getInstance().readSystemBConfig(context, obuIp, listener); } /** - * 传入升级包版本 + * 上传升级包到OBU 非立即执行升级程序 * - * @param newVersion 升级包版本 + * @param obuIp OBU IP + * @param upgradePackage 升级包文件绝对路径 只能包含 升级包MD5文件和升级包文件 + * @param listener 升级回调 * @since 1.1.0 */ - public void setObuUpgradePackageVersion(@NonNull String newVersion) { - MogoObuManager.getInstance().setObuUpgradePackageVersion(newVersion); + public boolean uploadUpgradePackage(@NonNull String obuIp, @NonNull String[] upgradePackage, OnUpgradeListener listener) { + return MogoObuManager.getInstance().uploadUpgradePackage(obuIp, upgradePackage, false, listener); } /** - * 传入升级包 + * 上传升级包到OBU * - * @param newUpgradePackage 升级包文件绝对路径 只能包含 升级包MD5文件和升级包文件 + * @param obuIp OBU IP + * @param upgradePackage 升级包文件绝对路径 只能包含 升级包MD5文件和升级包文件 + * @param isUpgradeNow 是否立即升级 + * false:OBU设备下次上电时执行升级程序 + * ture: OBU设备立即执行升级程序 TODO 警告:执行立即升级时请确保车辆是静止状态。车辆在运行过程中升级设备可能会影响驾驶,严重时可能造成安全隐患!!! + * @param listener 升级回调 + * @return 是否调用成功 * @since 1.1.0 */ - public void setObuUpgradePackage(@NonNull String[] newUpgradePackage) { - MogoObuManager.getInstance().setObuUpgradePackage(newUpgradePackage); + public boolean uploadUpgradePackage(@NonNull String obuIp, @NonNull String[] upgradePackage, boolean isUpgradeNow, OnUpgradeListener listener) { + return MogoObuManager.getInstance().uploadUpgradePackage(obuIp, upgradePackage, isUpgradeNow, listener); } /** @@ -334,10 +315,11 @@ public class ObuManager { * * @since 1.1.0 */ - public void stopObuUpgrade() { - MogoObuManager.getInstance().stopObuUpgrade(); + public void stopProcess() { + MogoObuManager.getInstance().stopProcess(); } + private final OnMogoObuListener mogoObuListener = new OnMogoObuListener() { @Override public void onConnectStatus(int connectStatus) {