[2.13.0-arch-opt] move binding car to deva tools

This commit is contained in:
zhongchao
2023-01-12 10:11:23 +08:00
parent 8ceced4bcf
commit d8728fe8c9
57 changed files with 522 additions and 1240 deletions

View File

@@ -1,80 +0,0 @@
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'kotlin-kapt'
id 'com.alibaba.arouter'
}
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
// buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode Integer.valueOf(VERSION_CODE)
versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
//ARouter apt 参数
kapt {
useBuildCache = false
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
javaCompileOptions{
annotationProcessorOptions{
arguments = ["room.schemaLocation":"$projectDir/schemas".toString()]
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation rootProject.ext.dependencies.kotlinstdlibjdk7
implementation rootProject.ext.dependencies.arouter
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.androidxroomruntime
implementation rootProject.ext.dependencies.androidxroomktx
implementation rootProject.ext.dependencies.litezxing
kapt rootProject.ext.dependencies.androidxroomcompiler
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_network
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(":foudations:mogo-commons")
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')
implementation project(':core:mogo-core-function-call')
}
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -1,3 +0,0 @@
GROUP=com.mogo.eagle.core.function.impl
POM_ARTIFACT_ID=notice
VERSION_CODE=1

View File

@@ -1,21 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.function.bindingcar">
<application>
</application>
</manifest>

View File

@@ -1,182 +0,0 @@
package com.mogo.eagle.core.function.bindingcar;
import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.config.HmiBuildConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingcarProvider;
import com.mogo.eagle.core.function.appupgrade.network.UpgradeAppNetWorkManager;
import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager;
import com.mogo.eagle.core.function.ipcupgrade.IPCUpgradeManager;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* @author lixiaopeng
* @description 绑定sn
* @since: 3/26/22
*/
@Route(path = MogoServicePaths.PATH_BINDING_CAR)
public class BindingcarProvider implements IMoGoBindingcarProvider {
private Context mContext;
private volatile String mAddress;
private volatile String mWidevineIDWithMd5; //google 数字版权
private volatile int mScreenType = -1;
@NotNull
@Override
public String getFunctionName() {
return null;
}
@Override
public void onDestroy() {
IPCUpgradeManager.Companion.getINSTANCE().destroy();
}
@Override
public void init(Context context) {
mContext = context;
IPCUpgradeManager.Companion.getINSTANCE().initServer(context);
}
/**
* 获取macaddress,每次连接请求一次
*
* @param macAddress
*/
@Override
public void getBindingcarInfo(String macAddress, String widevineIDWithMd5) {
Log.d("Upgrade", "getBindingcarInfo macAddress = " + macAddress + "--widevineIDWithMd5 = " + widevineIDWithMd5);
mAddress = macAddress;
mWidevineIDWithMd5 = widevineIDWithMd5;
if (getScreenType() == 1) { //司机屏
driverScreen(macAddress, widevineIDWithMd5);
} else if (getScreenType() == 2) { //乘客屏
passengerScreen(macAddress, widevineIDWithMd5);
}
}
/**
* 确认升级工控机docker版本
*
* @param images docker列表
* @param padSn SN
* @param releaseId 任务ID
*/
@Override
public void upgradeConfirm(List<String> images, String padSn, String releaseId) {
IPCUpgradeManager.Companion.getINSTANCE().upgradeConfirm(images, padSn, releaseId);
}
/**
* 获取新工控机docker版本
*
* @param padSn SN
* @param dockerVersion 当前工控机版本
*/
@Override
public void queryContainers(String padSn, String dockerVersion) {
IPCUpgradeManager.Companion.getINSTANCE().queryContainers(padSn, dockerVersion);
}
@Override
public void modifyCarInfo(BindingcarCallBack callBack) {
BindingcarNetWorkManager.getInstance().modifyBindingcar(mAddress, mWidevineIDWithMd5, callBack, getScreenType());
}
private void driverScreen(String macAddress, String widevineIDWithMd5) {
long currentHour = System.currentTimeMillis() / (1000 * 60);
long oldHour = SharedPrefsMgr.getInstance(mContext).getLong("typeDriver", 0);
//如果2分钟内频繁调需要拦截业务导致的会多次请求工控机信息
if (HmiBuildConfig.isShowSnBindingView) {
if (currentHour - oldHour > 1) {
SharedPrefsMgr.getInstance(mContext).putLong("typeDriver", System.currentTimeMillis() / (1000 * 60));
BindingcarNetWorkManager.getInstance().getBindingcarInfo(mContext, macAddress, widevineIDWithMd5, getScreenType());
}
}
}
private void passengerScreen(String macAddress, String widevineIDWithMd5) {
long currentHour = System.currentTimeMillis() / (1000 * 60);
long oldHour = SharedPrefsMgr.getInstance(mContext).getLong("typePassenger", 0);
//如果2分钟内频繁调需要拦截业务导致的会多次请求工控机信息
if (HmiBuildConfig.isShowSnBindingView) {
if (currentHour - oldHour > 1) {
SharedPrefsMgr.getInstance(mContext).putLong("typePassenger", System.currentTimeMillis() / (1000 * 60));
BindingcarNetWorkManager.getInstance().getBindingcarInfo(mContext, macAddress, widevineIDWithMd5, getScreenType());
}
}
}
/**
* 以后可能废弃
*
* @return
*/
private int getScreenType() {
int screenType = -1;
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = 1; //司机屏
}
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = 2; //乘客屏
}
return screenType;
}
private int getCarType() {
int carType = -1;
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
carType = 1; //bus
}
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
carType = 2; //taxi
}
return carType;
}
private String getCarScreenType() {
String screenType = "";
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = "1"; //taxi乘客端
}
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = "2"; //taxi司机端
}
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = "3"; //bus 乘客端
}
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = "4"; //bus 司机端
}
return screenType;
}
/**
* 查询app是否需要升级
*/
@Override
public void queryAppUpgrade() {
UpgradeAppNetWorkManager.getInstance().getAppUpgradeInfo(mContext, mAddress, getCarScreenType());
}
}

View File

@@ -1,175 +0,0 @@
package com.mogo.eagle.core.function.bindingcar.network;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING;
import android.content.Context;
import android.util.Log;
import com.mogo.commons.constants.HostConst;
import com.mogo.commons.constants.SharedPrefsConstants;
import com.mogo.eagle.core.data.bindingcar.BindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.bindingcar.R;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerHDMapManager;
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.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
* @author lixiaopeng
* @description 绑定车机网络请求
* @since: 3/25/22
*/
public class BindingcarNetWorkManager {
private static volatile BindingcarNetWorkManager requestNoticeManager;
private final BindingcarApiService mBindingcarApiService;
private static final String TAG = "BindingcarNetManager";
private BindingcarNetWorkManager() {
mBindingcarApiService = MoGoRetrofitFactory.getInstance(HostConst.getHost())
.create(BindingcarApiService.class);
}
public static BindingcarNetWorkManager getInstance() {
if (requestNoticeManager == null) {
synchronized (BindingcarNetWorkManager.class) {
if (requestNoticeManager == null) {
requestNoticeManager = new BindingcarNetWorkManager();
}
}
}
return requestNoticeManager;
}
/**
* 获取绑定的车辆信息
*
* @param macAddress mac地址
*/
public void getBindingcarInfo(Context context, String macAddress, String widevineIDWithMd5, int screenType) {
// String macAddress1 = "48:b0:2d:4d:33:40";
// String sn = "X2020220417KA94QIN";
BindingcarRequest request = new BindingcarRequest(macAddress, widevineIDWithMd5, screenType);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mBindingcarApiService.getBindingcarInfo(requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BindingcarInfo>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BindingcarInfo info) {
if (info != null && info.getData() != null) {
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getBindingcarInfo onNext info.getData() =" + info.getData().toString());
//根据车辆类型切换不同的车辆模型,只针对红旗做处理
updateCarVrIconRes(info.getData().getBrandId());
switch (info.getData().getCompare()) {
case "0":
CallerHmiManager.INSTANCE.showBindingcarDialog();
break;
case "3":
CallerHmiManager.INSTANCE.showModifyBindingcarDialog();
break;
case "null":
TipToast.shortTip("当前工控机没有入库");
break;
}
SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData()));
}
}
@Override
public void onError(@NonNull Throwable e) {
CallerLogger.INSTANCE.e(M_BINDING + TAG, "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
}
@Override
public void onComplete() {
}
});
}
/**
* 绑定和修改绑定车辆
* mac: 48:b0:2d:3a:9c:19
*/
public void modifyBindingcar(String macAddress, String widevineIDWithMd5, BindingcarCallBack callBack, int screenType) {
// String macAddress1 = "48:b0:2d:4d:33:40";
// String sn = "X2020220417KA94QIN";
BindingcarRequest request = new BindingcarRequest(macAddress, widevineIDWithMd5, screenType);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mBindingcarApiService.modifyBindingcarInfo(requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ModifyBindingcarInfo>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull ModifyBindingcarInfo info) {
if (info != null) {
callBack.callBackResult(info);
CallerLogger.INSTANCE.d(M_BINDING + TAG, "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString());
updateCarVrIconRes(info.getData().getBrandId());
}
}
@Override
public void onError(@NonNull Throwable e) {
CallerLogger.INSTANCE.e(M_BINDING + TAG, "modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
}
@Override
public void onComplete() {
}
});
}
private void updateCarVrIconRes(String brandId){
if(brandId == null || brandId.isEmpty()){
return;
}
CallerLogger.INSTANCE.d(M_BINDING + TAG,"updateCarVrIconRes : " + brandId);
switch (brandId){
case "1":
CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.chuzuche);
HdMapBuildConfig.currentCarVrIconRes =R.raw.chuzuche;
break;
case "2":
CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.hq_h9);
HdMapBuildConfig.currentCarVrIconRes =R.raw.hq_h9;
break;
case "3":
CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.xiaobache);
HdMapBuildConfig.currentCarVrIconRes =R.raw.xiaobache;
break;
default:
CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.chuzuche);
HdMapBuildConfig.currentCarVrIconRes =R.raw.chuzuche;
break;
}
}
}

View File

@@ -25,13 +25,12 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotProvider
import com.mogo.eagle.core.function.api.map.collect.IMoGoMapDataCollectProvider
import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoAdasListenerImpl
import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoAdasMsgConnectStatusListenerImpl
import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoHandAdasMsgManager
import com.mogo.eagle.core.function.datacenter.autopilot.server.AsyncDataToAutopilotServer
import com.mogo.eagle.core.function.datacenter.autopilot.telematic.EventListener
import com.mogo.eagle.core.function.datacenter.autopilot.telematic.IMsgHandler
import com.mogo.eagle.core.function.datacenter.autopilot.telematic.TeleMsgHandler
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -83,7 +82,6 @@ class MoGoAutopilotProvider :
get() = TAG
override fun init(context: Context) {
MoGoHandAdasMsgManager.getInstance(context)
CallerLogger.i("$M_ADAS_IMPL$TAG", "初始化工控机连接……")
mContext = context
// 初始化ADAS 域控制器
@@ -692,11 +690,7 @@ class MoGoAutopilotProvider :
}
msgHandler.synMsgToAllClients()
} else {// 乘客屏
CallerBindingcarManager.getBindingcarProvider()
.getBindingcarInfo(
carConfigResp.macAddress,
MoGoAiCloudClientConfig.getInstance().sn
)
CallerDevaToolsManager.getBindingCarInfo( carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn)
invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为${carConfigResp.macAddress}")
}
}

View File

@@ -1,60 +0,0 @@
package com.mogo.eagle.core.function.datacenter.autopilot.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager;
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import org.jetbrains.annotations.NotNull;
import mogo.telematics.pad.MessagePad;
public class MoGoHandAdasMsgManager implements
IMoGoAutopilotCarConfigListener{
private final String TAG = "AdasEventManager";
private static volatile MoGoHandAdasMsgManager moGoHandAdasMsgManager;
private Context mContext;
private MoGoHandAdasMsgManager(Context context) {
CallerAutopilotCarConfigListenerManager.INSTANCE.addListener(TAG, this);
mContext = context;
}
public static MoGoHandAdasMsgManager getInstance(Context context) {
if (moGoHandAdasMsgManager == null) {
synchronized (MoGoHandAdasMsgManager.class) {
if (moGoHandAdasMsgManager == null) {
moGoHandAdasMsgManager = new MoGoHandAdasMsgManager(context);
}
}
}
return moGoHandAdasMsgManager;
}
public void getConfig() {
com.elegant.utils.UiThreadHandler.postDelayed(new Runnable() {
@Override
public void run() {
CallerAutoPilotManager.INSTANCE.getCarConfig();
}
}, 0);
}
@Override
public void onAutopilotCarConfig(@NotNull MessagePad.CarConfigResp carConfigResp) {
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.getMacAddress())) {
Log.d("Upgrade", "MoGoHandAdasMsgManager address = " + carConfigResp.getMacAddress());
CallerBindingcarManager.getBindingcarProvider().getBindingcarInfo(carConfigResp.getMacAddress(), MoGoAiCloudClientConfig.getInstance().getSn());
}
}
}

View File

@@ -11,7 +11,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LO
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager.setDemoMode
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager.setIgnoreConditionDraw
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -93,10 +93,7 @@ class TeleMsgHandler : IMsgHandler {
TextFormat.printer().escapingNonAscii(false).printToString(carConfig)
}"
)
CallerBindingcarManager.getBindingcarProvider().getBindingcarInfo(
carConfig.macAddress,
MoGoAiCloudClientConfig.getInstance().sn
)
CallerDevaToolsManager.getBindingCarInfo(carConfig.macAddress, MoGoAiCloudClientConfig.getInstance().sn)
}
// SN
10 -> {

View File

@@ -1 +0,0 @@
/build

View File

@@ -76,6 +76,7 @@ dependencies {
implementation rootProject.ext.dependencies.androidx_datastore
implementation rootProject.ext.dependencies.androidxroomruntime
kapt rootProject.ext.dependencies.androidxroomcompiler
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.androidxroomktx
implementation rootProject.ext.dependencies.protobuf_java
implementation rootProject.ext.dependencies.androidxappcompat

View File

@@ -1,10 +1,11 @@
package com.zhjt.mogo_core_function_devatools
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.view.*
import android.view.View
import android.view.ViewGroup
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.data.deva.scene.SceneModule
@@ -12,24 +13,24 @@ import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager.Companion.bindingCarManager
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
import com.zhjt.mogo_core_function_devatools.mofang.MoFangManager
import com.zhjt.mogo_core_function_devatools.mofang.MoFangManager.Companion.moFangManager
import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager
import com.zhjt.mogo_core_function_devatools.report.IPCReportManager
import com.zhjt.mogo_core_function_devatools.report.IPCReportManager.Companion.iPCReportManager
import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager
import com.zhjt.mogo_core_function_devatools.status.*
import com.zhjt.mogo_core_function_devatools.status.StatusManager
import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager
import com.zhjt.mogo_core_function_devatools.tts.TtsManager.Companion.ttsManager
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager
import record_cache.RecordPanelOuterClass
@Route(path = MogoServicePaths.PATH_DEVA_TOOLS)
class DevaToolsProvider : IDevaToolsProvider {
companion object {
const val MODULE_NAME = "DevaToolsProvider"
const val TAG = "DevaToolsProvider"
}
private var mContext: Context? = null
@@ -39,14 +40,17 @@ class DevaToolsProvider : IDevaToolsProvider {
}
override fun initBiz() {
ttsManager.initTts(mContext!!)
ttsManager.initTts(mContext!!) //todo
//链路相关
traceManager.init(mContext!!)
bizConfigCenter.init(mContext!!)
FuncConfigImpl.init()
//开启工控机监控节点上报服务
IPCReportManager.INSTANCE.initServer()
MogoLogCatchManager.init(mContext!!)
MoFangManager.INSTANCE.init(mContext!!)
//升级(鹰眼/工控)与监控服务
iPCReportManager.initServer()
moFangManager.init(mContext!!)
bindingCarManager.init(mContext!!)
}
override fun startLogCatch() {
@@ -73,7 +77,6 @@ class DevaToolsProvider : IDevaToolsProvider {
return traceManager.getTraceInfo()
}
@SuppressLint("NewApi")
override fun refreshTraceInfo(map: HashMap<Int, ChainLogParam>) {
traceManager.refreshTraceInfo(map)
}
@@ -102,20 +105,20 @@ class DevaToolsProvider : IDevaToolsProvider {
BadCaseManager.initAiCollect(view)
}
override fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean,activity: Activity,countdown: Boolean) {
BadCaseManager.onReceiveBadCaseRecord(msgBoxBean, activity,countdown)
override fun onReceiveBadCaseRecord(
msgBoxBean: MsgBoxBean,
activity: Activity,
countdown: Boolean
) {
BadCaseManager.onReceiveBadCaseRecord(msgBoxBean, activity, countdown)
}
override fun showFeedbackWindow(ctx: Context) {
BadCaseManager.showBadCaseConfigWindow(ctx)
}
override fun getUpgradeVersionUrls(versionName: String) {
upgradeManager.getPackageUrls(versionName)
}
override fun downLoadPackage(downloadKey: String,downloadUrl: String) {
upgradeManager.downLoadPackage(mContext!!, downloadKey,downloadUrl)
override fun downLoadPackage(downloadKey: String, downloadUrl: String) {
upgradeManager.downLoadPackage(mContext!!, downloadKey, downloadUrl)
}
override fun showStatusBar(ctx: Context, container: ViewGroup) {
@@ -138,4 +141,25 @@ class DevaToolsProvider : IDevaToolsProvider {
override fun syncConfig() {
traceManager.syncConfig()
}
override fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) {
bindingCarManager.modifyCarInfo(callBack)
}
override fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) {
bindingCarManager.getBindingCarInfo(macAddress, widevineIDWithMd5)
}
override fun upgradeConfirm(images: List<String>, padSn: String, releaseId: String) {
bindingCarManager.upgradeConfirm(images, padSn, releaseId)
}
override fun queryContainers(padSn: String, dockerVersion: String) {
bindingCarManager.queryContainers(padSn, dockerVersion)
}
override fun queryAppUpgrade() {
bindingCarManager.queryAppUpgrade()
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.bindingcar.network;
package com.zhjt.mogo_core_function_devatools.binding;
import com.mogo.eagle.core.data.bindingcar.BindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
@@ -6,7 +6,6 @@ import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
@@ -15,7 +14,7 @@ import retrofit2.http.POST;
* @description 绑定车辆
* @since: 10/28/21
*/
public interface BindingcarApiService {
public interface BindingCarApiService {
/**
* 获取绑定车辆的信息
*
@@ -23,7 +22,7 @@ public interface BindingcarApiService {
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("eagleEye-mis/cmdbapi/pad/selectPadByMac")
Observable<BindingcarInfo> getBindingcarInfo(/*@Header("access_token") String access_token,*/ @Body RequestBody requestBody);
Observable<BindingcarInfo> getBindingCarInfo(/*@Header("access_token") String access_token,*/ @Body RequestBody requestBody);
/**
* 绑定和修改绑定车机
@@ -32,6 +31,6 @@ public interface BindingcarApiService {
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("eagleEye-mis/cmdbapi/pad/v2/updatePadByMac")
Observable<ModifyBindingcarInfo> modifyBindingcarInfo(/*@Header("access_token") String access_token,*/ @Body RequestBody requestBody);
Observable<ModifyBindingcarInfo> modifyBindingCarInfo(/*@Header("access_token") String access_token,*/ @Body RequestBody requestBody);
}

View File

@@ -0,0 +1,163 @@
package com.zhjt.mogo_core_function_devatools.binding
import android.content.Context
import android.text.TextUtils
import android.util.Log
import com.elegant.utils.UiThreadHandler
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
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.function.api.autopilot.IMoGoAutopilotCarConfigListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
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.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeAppNetWorkManager
import mogo.telematics.pad.MessagePad
class BindingCarManager : IMoGoAutopilotCarConfigListener {
companion object {
private const val TAG = "BindingCarManager"
val bindingCarManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
BindingCarManager()
}
}
private var mContext: Context? = null
@Volatile
private var mAddress: String? = null
@Volatile
private var mWidevineIDWithMd5 //google 数字版权
: String? = null
fun init(context: Context) {
mContext = context
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
ipcUpgradeManager.init(context)
UiThreadHandler.postDelayed({ queryAppUpgrade() }, 10_000)
}
fun onDestroy() {
CallerAutopilotCarConfigListenerManager.removeListener(TAG)
ipcUpgradeManager.destroy()
}
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.macAddress)) {
Log.d("Upgrade", "MoGoHandAdasMsgManager address = " + carConfigResp.macAddress)
getBindingCarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn)
}
}
/**
* 获取macaddress,每次连接请求一次
*
* @param macAddress
*/
fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) {
CallerLogger.d(
"$M_DEVA$TAG",
"getBindingcarInfo macAddress = $macAddress--widevineIDWithMd5 = $widevineIDWithMd5"
)
mAddress = macAddress
mWidevineIDWithMd5 = widevineIDWithMd5
if (screenType == 1) { //司机屏
driverScreen(macAddress, widevineIDWithMd5)
} else if (screenType == 2) { //乘客屏
passengerScreen(macAddress, widevineIDWithMd5)
}
}
/**
* 确认升级工控机docker版本
*
* @param images docker列表
* @param padSn SN
* @param releaseId 任务ID
*/
fun upgradeConfirm(images: List<String>, padSn: String, releaseId: String) {
ipcUpgradeManager.upgradeConfirm(images, padSn, releaseId)
}
/**
* 获取新工控机docker版本
*
* @param padSn SN
* @param dockerVersion 当前工控机版本
*/
fun queryContainers(padSn: String, dockerVersion: String) {
ipcUpgradeManager.queryContainers(padSn, dockerVersion)
}
fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) {
BindingCarNetWorkManager.instance.modifyBindingcar(mAddress, mWidevineIDWithMd5, callBack, screenType)
}
private fun driverScreen(macAddress: String, widevineIDWithMd5: String) {
val currentHour = System.currentTimeMillis() / (1000 * 60)
val oldHour = SharedPrefsMgr.getInstance(
mContext!!
).getLong("typeDriver", 0)
//如果2分钟内频繁调需要拦截业务导致的会多次请求工控机信息
if (HmiBuildConfig.isShowSnBindingView) {
if (currentHour - oldHour > 1) {
SharedPrefsMgr.getInstance(mContext!!)
.putLong("typeDriver", System.currentTimeMillis() / (1000 * 60))
BindingCarNetWorkManager.instance
.getBindingcarInfo(mContext, macAddress, widevineIDWithMd5, screenType)
}
}
}
private fun passengerScreen(macAddress: String, widevineIDWithMd5: String) {
val currentHour = System.currentTimeMillis() / (1000 * 60)
val oldHour = SharedPrefsMgr.getInstance(
mContext!!
).getLong("typePassenger", 0)
//如果2分钟内频繁调需要拦截业务导致的会多次请求工控机信息
if (HmiBuildConfig.isShowSnBindingView) {
if (currentHour - oldHour > 1) {
SharedPrefsMgr.getInstance(mContext!!)
.putLong("typePassenger", System.currentTimeMillis() / (1000 * 60))
BindingCarNetWorkManager.instance
.getBindingcarInfo(mContext, macAddress, widevineIDWithMd5, screenType)
}
}
}//乘客屏//司机屏
/**
* 以后可能废弃
*
* @return
*/
private val screenType: Int
get() {
var screenType = -1
if (isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = 1 //司机屏
}
if (isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = 2 //乘客屏
}
return screenType
}
/**
* 查询app是否需要升级
*/
fun queryAppUpgrade() {
UpgradeAppNetWorkManager.getInstance()
.getAppUpgradeInfo(mContext, mAddress, role.toString() + "")
}
}

View File

@@ -0,0 +1,169 @@
package com.zhjt.mogo_core_function_devatools.binding
import android.content.Context
import com.mogo.commons.constants.HostConst
import com.mogo.commons.constants.SharedPrefsConstants
import com.mogo.eagle.core.data.bindingcar.BindingcarInfo
import com.mogo.eagle.core.data.bindingcar.BindingcarRequest
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showBindingcarDialog
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showModifyBindingcarDialog
import com.mogo.eagle.core.function.call.map.CallerHDMapManager.changeCurrentIcon
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.zhjt.mogo_core_function_devatools.R
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.RequestBody
/**
* @author lixiaopeng
* @description 绑定车机网络请求
* @since: 3/25/22
*/
class BindingCarNetWorkManager private constructor() {
companion object {
private const val TAG = "BindingCarNetManager"
val instance: BindingCarNetWorkManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
BindingCarNetWorkManager()
}
}
private val mBindingCarApiService: BindingCarApiService = MoGoRetrofitFactory.getInstance(HostConst.getHost())
.create(BindingCarApiService::class.java)
/**
* 获取绑定的车辆信息
*
* @param macAddress mac地址
*/
fun getBindingcarInfo(
context: Context?,
macAddress: String?,
widevineIDWithMd5: String?,
screenType: Int
) {
// String macAddress1 = "48:b0:2d:4d:33:40";
// String sn = "X2020220417KA94QIN";
val request = BindingcarRequest(macAddress, widevineIDWithMd5, screenType)
val requestBody = RequestBody.create(
MediaType.get("application/json;charset=UTF-8"),
GsonUtil.jsonFromObject(request)
)
mBindingCarApiService.getBindingCarInfo(requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<BindingcarInfo> {
override fun onSubscribe(d: Disposable) {}
override fun onNext(info: BindingcarInfo) {
if (info != null && info.getData() != null) {
d(
SceneConstant.M_BINDING + TAG,
"getBindingcarInfo onNext info.getData() =" + info.getData().toString()
)
//根据车辆类型切换不同的车辆模型,只针对红旗做处理
updateCarVrIconRes(info.getData().brandId)
when (info.getData().compare) {
"0" -> showBindingcarDialog()
"3" -> showModifyBindingcarDialog()
"null" -> TipToast.shortTip("当前工控机没有入库")
}
SharedPrefsMgr.getInstance(context!!).putString(
SharedPrefsConstants.CAR_INFO,
GsonUtils.toJson(info.getData())
)
}
}
override fun onError(e: Throwable) {
e(
SceneConstant.M_BINDING + TAG,
"getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message
)
}
override fun onComplete() {}
})
}
/**
* 绑定和修改绑定车辆
* mac: 48:b0:2d:3a:9c:19
*/
fun modifyBindingcar(
macAddress: String?,
widevineIDWithMd5: String?,
callBack: (ModifyBindingcarInfo) -> Unit,
screenType: Int
) {
// String macAddress1 = "48:b0:2d:4d:33:40";
// String sn = "X2020220417KA94QIN";
val request = BindingcarRequest(macAddress, widevineIDWithMd5, screenType)
val requestBody = RequestBody.create(
MediaType.get("application/json;charset=UTF-8"),
GsonUtil.jsonFromObject(request)
)
mBindingCarApiService.modifyBindingCarInfo(requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<ModifyBindingcarInfo> {
override fun onSubscribe(d: Disposable) {}
override fun onNext(info: ModifyBindingcarInfo) {
if (info != null) {
callBack.invoke(info)
d(
SceneConstant.M_BINDING + TAG,
"modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()
)
updateCarVrIconRes(info.data.brandId)
}
}
override fun onError(e: Throwable) {
e(
SceneConstant.M_BINDING + TAG,
"modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.message
)
}
override fun onComplete() {}
})
}
private fun updateCarVrIconRes(brandId: String?) {
if (brandId == null || brandId.isEmpty()) {
return
}
d(SceneConstant.M_BINDING + TAG, "updateCarVrIconRes : $brandId")
when (brandId) {
"1" -> {
changeCurrentIcon(R.raw.chuzuche)
HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche
}
"2" -> {
changeCurrentIcon(R.raw.hq_h9)
HdMapBuildConfig.currentCarVrIconRes = R.raw.hq_h9
}
"3" -> {
changeCurrentIcon(R.raw.xiaobache)
HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache
}
else -> {
changeCurrentIcon(R.raw.chuzuche)
HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche
}
}
}
}

View File

@@ -21,7 +21,7 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
class MoFangManager private constructor() {
companion object {
val INSTANCE: MoFangManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
val moFangManager: MoFangManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
MoFangManager()
}
}

View File

@@ -6,7 +6,6 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.report.ReportEntity
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
@@ -24,7 +23,7 @@ class IPCReportManager : IMoGoAutopilotStatusListener {
companion object{
const val TAG ="IPCReportManager"
val INSTANCE: IPCReportManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
val iPCReportManager: IPCReportManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
IPCReportManager()
}
//Warning

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.ipcupgrade.network
package com.zhjt.mogo_core_function_devatools.upgrade
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.Response

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.ipcupgrade
package com.zhjt.mogo_core_function_devatools.upgrade
import android.content.Context
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
@@ -8,9 +8,8 @@ import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.ipcupgrade.network.IPCUpgradeNetWorkModel
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import org.json.JSONObject
@@ -25,7 +24,7 @@ class IPCUpgradeManager: IMogoOnMessageListener<IPCUpgradeStateInfo> ,
companion object{
const val TAG ="IPCUpgradeManager"
const val IPC_UPGRADE_MSG_TYPE = 50000
val INSTANCE: IPCUpgradeManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){
val ipcUpgradeManager: IPCUpgradeManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){
IPCUpgradeManager()
}
}
@@ -37,7 +36,7 @@ class IPCUpgradeManager: IMogoOnMessageListener<IPCUpgradeStateInfo> ,
private var hasIPCUpgradeTask = false //是否有工控机升级任务,默认没有该任务
private var ipcUpgradeStateInfoTask: IPCUpgradeStateInfo?=null
fun initServer(context: Context){
fun init(context: Context){
mContext = context
//添加长链接监听
MogoAiCloudSocketManager.getInstance(context)
@@ -110,7 +109,7 @@ class IPCUpgradeManager: IMogoOnMessageListener<IPCUpgradeStateInfo> ,
fun upgradeConfirm(images: List<String>,padSn: String,releaseId: String){
ipcUpgradeNetWorkModel.upgradeConfirm(images,padSn,releaseId,
onSuccess = {
CallerBindingCarListenerManager.invokePushServerConfirm()
CallerDevaToolsListenerManager.invokePushServerConfirm()
},
onError = {
@@ -135,7 +134,7 @@ class IPCUpgradeManager: IMogoOnMessageListener<IPCUpgradeStateInfo> ,
}
//将数组结果回调
CallerBindingCarListenerManager.invokeQueryContainersResponse(dockerList)
CallerDevaToolsListenerManager.invokeQueryContainersResponse(dockerList)
},
onError = {

View File

@@ -1,8 +1,8 @@
package com.mogo.eagle.core.function.ipcupgrade.network
package com.zhjt.mogo_core_function_devatools.upgrade
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.Response
import com.mogo.eagle.core.function.ipcupgrade.network.UpgradeHostConst.Companion.getBaseUrl
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeHostConst.Companion.getBaseUrl
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.apiResponseCall
@@ -20,7 +20,7 @@ import org.json.JSONObject
*/
class IPCUpgradeNetWorkModel {
private fun getNetWorkApi(baseUrl: String =getBaseUrl()): IPCUpgradeApiService{
private fun getNetWorkApi(baseUrl: String =getBaseUrl()): IPCUpgradeApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(IPCUpgradeApiService::class.java)
}

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.appupgrade.network;
package com.zhjt.mogo_core_function_devatools.upgrade;
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.appupgrade.network;
package com.zhjt.mogo_core_function_devatools.upgrade;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING;
@@ -31,7 +31,6 @@ public class UpgradeAppNetWorkManager {
private final UpgradeApiService mUpgradeApiService;
private static final String TAG = "Upgrade";
private UpgradeAppNetWorkManager() {
mUpgradeApiService = MoGoRetrofitFactory.getInstance(HostConst.getHost())
.create(UpgradeApiService.class);
@@ -48,7 +47,6 @@ public class UpgradeAppNetWorkManager {
return requestNoticeManager;
}
/**
* 获取app升级信息
*/

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.ipcupgrade.network
package com.zhjt.mogo_core_function_devatools.upgrade
import com.mogo.commons.debug.DebugConfig

View File

@@ -1,18 +1,14 @@
package com.zhjt.mogo_core_function_devatools.upgrade
import android.content.Context
import android.util.Log
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager
import com.mogo.eagle.core.utilcode.breakpoint.Config
import com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG
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.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.zhjt.mogo_core_function_devatools.upgrade.network.UpgradeVersionNetWorkModel
class UpgradeManager : IDownload {
@@ -25,23 +21,9 @@ class UpgradeManager : IDownload {
}
}
private val upgradeVersionNetWorkModel = UpgradeVersionNetWorkModel()
private var map: Map<String, String>? = null
private var version: String? = null
fun getPackageUrls(version: String) {
this.version = version
upgradeVersionNetWorkModel.requestUpgradeVersionUrls(version, onSuccess = {
map = it
CallerDevaToolsListenerManager.invokeDevaToolsUpgradeVersionUrls(map)
}, onError = {
CallerLogger.e("$M_DEVA$TAG", " getPackageUrls error: $it")
})
}
fun downLoadPackage(context: Context, downloadKey: String,downloadUrl: String) {
// val downLoadUrl = map?.get(downLoadKey)
// downLoadUrl?.let {
DownloadUtils.downLoad(
context,
downloadUrl,
@@ -50,7 +32,6 @@ class UpgradeManager : IDownload {
5,
this
)
// }
}
override fun onStart(downloadUrl: String?) {

View File

@@ -1,22 +0,0 @@
package com.zhjt.mogo_core_function_devatools.upgrade.network
import com.mogo.commons.debug.DebugConfig
class HostConst {
companion object {
private const val HOST_DEV = "http://myflow.ee-private-dev.myghost.zhidaoauto.com"
private const val HOST_RELEASE = "https://myflow.zhidaoauto.com"
fun getBaseUrl(): String {
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV -> HOST_DEV
DebugConfig.NET_MODE_QA -> HOST_DEV
DebugConfig.NET_MODE_DEMO -> HOST_RELEASE
DebugConfig.NET_MODE_RELEASE -> HOST_RELEASE
else -> HOST_RELEASE
}
}
}
}

View File

@@ -1,12 +0,0 @@
package com.zhjt.mogo_core_function_devatools.upgrade.network
import com.mogo.eagle.core.data.Response
import retrofit2.http.GET
import retrofit2.http.Query
interface UpgradeVersionApiService {
@GET("/backend/app/getApkInfo")
suspend fun getUpgradeVersion(@Query("fileName") versionName: String): Response<Any>
}

View File

@@ -1,47 +0,0 @@
package com.zhjt.mogo_core_function_devatools.upgrade.network
import com.mogo.eagle.core.data.Response
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiResponseCall
import com.mogo.eagle.core.network.request
class UpgradeVersionNetWorkModel {
private fun getNetWorkApi(baseUrl: String = HostConst.getBaseUrl()): UpgradeVersionApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(UpgradeVersionApiService::class.java)
}
fun requestUpgradeVersionUrls(
versionName: String,
onSuccess: ((Map<String, String>) -> Unit),
onError: ((String) -> Unit)
) {
request<Response<Any?>> {
loader {
apiResponseCall {
getNetWorkApi().getUpgradeVersion(
versionName
)
}
}
onSuccess {
if (it.data != null) {
val jsonData = it.data.toString()
val map = mutableMapOf<String, String>()
jsonData.split(",").forEach { data ->
val array = data.split("=")
map[array[0]] = array[1]
}
onSuccess.invoke(map)
} else {
onError.invoke("没有获取到最新版本信息")
}
}
onError {
onError.invoke(it.message ?: "获取最新版本信息失败")
}
}
}
}

View File

@@ -89,7 +89,6 @@ dependencies {
api rootProject.ext.dependencies.mogo_core_utils
api rootProject.ext.dependencies.mogo_core_network
api rootProject.ext.dependencies.mogo_core_function_obu_mogo
api rootProject.ext.dependencies.mogo_core_function_bindingcar
api rootProject.ext.dependencies.mogo_core_function_map
api rootProject.ext.dependencies.mogo_core_function_v2x
api rootProject.ext.dependencies.mogo_core_function_devatools
@@ -110,7 +109,6 @@ dependencies {
api project(':core:function-impl:mogo-core-function-v2x')
api project(':core:function-impl:mogo-core-function-devatools')
api project(':core:function-impl:mogo-core-function-chat')
api project(':core:function-impl:mogo-core-function-bindingcar')
api project(':core:function-impl:mogo-core-function-datacenter')
api project(':core:function-impl:mogo-core-function-biz')

View File

@@ -58,7 +58,6 @@ import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
@@ -1467,14 +1466,14 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
if (toBindingCarDialog == null) {
toBindingCarDialog = ToBindingCarDialog(requireContext())
}
toBindingCarDialog!!.showToBindingcarDialog()
toBindingCarDialog!!.showToBindingCarDialog()
}
override fun showModifyBindingcarDialog() {
if (modifyBindingCarDialog == null) {
modifyBindingCarDialog = ModifyBindingCarDialog(requireContext())
}
modifyBindingCarDialog!!.showModifyBindingcarDialog()
modifyBindingCarDialog!!.showModifyBindingCarDialog()
}
/**
@@ -1513,8 +1512,7 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
adUpgradeDialog?.setClickListener(object : AdUpgradeDialog.ClickListener {
override fun confirm() {
//确认升级
CallerBindingcarManager.getBindingcarProvider()
.upgradeConfirm(images, padSn, releaseId)
CallerDevaToolsManager.upgradeConfirm(images, padSn, releaseId)
AdUpgradeStateHelper.setConfirmUpgrade(true)
ToastUtils.showLong("最新版本下载中...")
adUpgradeDialog?.dismiss()

View File

@@ -6,7 +6,7 @@ import androidx.lifecycle.LifecycleObserver
import com.mogo.commons.module.status.IMogoStatusChangedListener
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.commons.module.status.StatusDescriptor
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
@@ -18,7 +18,10 @@ import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
*/
class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver {
private val TAG = "BindingCarDialog"
companion object{
private const val TAG = "BindingCarDialog"
}
private var confirmTv: TextView? = null
private var cancelTv: TextView? = null
@@ -37,7 +40,7 @@ class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifec
cancelTv = findViewById(R.id.tv_bindingcar_cancel)
confirmTv?.setOnClickListener {
modifyBindingcar()
modifyBindingCar()
}
cancelTv?.setOnClickListener {
@@ -54,8 +57,8 @@ class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifec
/**
* 修改绑定车机
*/
fun modifyBindingcar() {
CallerBindingcarManager.getBindingcarProvider().modifyCarInfo {
private fun modifyBindingCar() {
CallerDevaToolsManager.modifyCarInfo{
if (it.code == 200) {
TipToast.shortTip("修改绑定成功")
} else {
@@ -74,11 +77,10 @@ class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifec
)
}
fun showModifyBindingcarDialog() {
fun showModifyBindingCarDialog() {
if (isShowing) {
return
}
show()
}

View File

@@ -6,7 +6,7 @@ import androidx.lifecycle.LifecycleObserver
import com.mogo.commons.module.status.IMogoStatusChangedListener
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.commons.module.status.StatusDescriptor
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
@@ -18,7 +18,10 @@ import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
*/
class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver{
private val TAG = "ToBindingCarDialog"
companion object{
private const val TAG = "ToBindingCarDialog"
}
private var confirmTv: TextView? = null
private var cancelTv: TextView? = null
@@ -36,7 +39,7 @@ class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifecycle
cancelTv = findViewById(R.id.tv_to_bindingcar_cancel)
confirmTv?.setOnClickListener {
toBindingcar()
toBindingCar()
}
cancelTv?.setOnClickListener {
@@ -53,8 +56,8 @@ class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifecycle
/**
* 修改绑定车机
*/
fun toBindingcar() {
CallerBindingcarManager.getBindingcarProvider().modifyCarInfo {
private fun toBindingCar() {
CallerDevaToolsManager.modifyCarInfo{
if (it.code == 200) {
TipToast.shortTip("绑定成功")
} else {
@@ -73,11 +76,10 @@ class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifecycle
)
}
fun showToBindingcarDialog() {
fun showToBindingCarDialog() {
if (isShowing) {
return
}
show()
}

View File

@@ -1,8 +0,0 @@
package com.mogo.eagle.core.function.hmi.ui.dispatch;
public interface IDispatchRemindClickListener {
void affirm();
void cancel(boolean manualTrigger);
}

View File

@@ -16,7 +16,6 @@ import androidx.appcompat.widget.PopupMenu
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.view.*
import androidx.recyclerview.widget.LinearLayoutManager
import chassis.Chassis
import chassis.ChassisStatesOuterClass
import com.mogo.cloud.passport.MoGoAiCloudClient
@@ -41,7 +40,6 @@ import com.mogo.eagle.core.data.gnss.AccelerationEntity
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.data.obu.ObuStatusInfo
import com.mogo.eagle.core.data.report.ReportEntity
import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity
import com.mogo.eagle.core.function.api.autopilot.*
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
@@ -64,7 +62,6 @@ import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener
import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView
import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter
import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView
import com.mogo.eagle.core.utilcode.kotlin.currentPadding
import com.mogo.eagle.core.utilcode.kotlin.onClick
@@ -151,12 +148,6 @@ class DebugSettingView @JvmOverloads constructor(
private var onlineSelected: Boolean = true
private var qaSelected: Boolean = true
private var upgradeListAdapter: UpgradeListAdapter? = null
private val upgradeVersionList by lazy {
ArrayList<UpgradeVersionEntity>()
}
private val mapUiController by lazy {
CallerMapUIServiceManager.getMapUIController()
}
@@ -484,21 +475,6 @@ class DebugSettingView @JvmOverloads constructor(
}
}
/**
* 应用包管理中心
*/
btnApkCenter.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
buttonView.setCompoundDrawables(null, null, iconDown, null)
//展示应用包管理中心
apkCenterLayout.visibility = View.VISIBLE
} else {
buttonView.setCompoundDrawables(null, null, iconRight, null)
//隐藏应用包管理中心
apkCenterLayout.visibility = View.GONE
}
}
lastVisualAngleMode = mapUiController?.currentMapVisualAngle
/**
@@ -572,8 +548,6 @@ class DebugSettingView @JvmOverloads constructor(
setHmiCheckedChangeListener()
//日志中心事件点击监听
setLogCheckedChangeListener()
//APK包管理中心配置
setApkCenterListener()
//OBU配置信息
tvObuInfo.text = CallerObuListenerManager.getObuStatusInfoJsonString()
@@ -1553,77 +1527,6 @@ class DebugSettingView @JvmOverloads constructor(
}
}
/**
* APK包管理
*/
private fun setApkCenterListener() {
val layoutManager: LinearLayoutManager = object : LinearLayoutManager(
context,
VERTICAL, false
) {
override fun canScrollVertically(): Boolean {
// 直接禁止垂直滑动
return false
}
}
rvUpgradeVersionList.layoutManager = layoutManager
upgradeListAdapter = UpgradeListAdapter(context, upgradeVersionList,
object : UpgradeListAdapter.ClickListener {
override fun downloadApk(name: String, url: String) {
//下载包
CallerDevaToolsManager.downLoadPackage(name, url)
ToastUtils.showLong("开始下载APK,稍后可前往downloads文件夹查看")
}
})
rvUpgradeVersionList.adapter = upgradeListAdapter
ivApkSearch.setOnClickListener {
val searchStr = etApkSearch.text.toString()
if (searchStr.isEmpty()) {
ToastUtils.showShort("请输入正确的搜索关键字")
} else {
CallerDevaToolsManager.getUpgradeVersionUrls(searchStr)
}
}
//Online
cbApkOnline.setOnCheckedChangeListener { _, isChecked ->
onlineSelected = isChecked
upgradeListAdapter?.setDada(dataFilter(upgradeVersionList))
upgradeListAdapter?.notifyDataSetChanged()
}
//QA
cbApkQa.setOnCheckedChangeListener { _, isChecked ->
qaSelected = isChecked
upgradeListAdapter?.setDada(dataFilter(upgradeVersionList))
upgradeListAdapter?.notifyDataSetChanged()
}
}
/**
* 数据包数据过滤器
*/
private fun dataFilter(list: ArrayList<UpgradeVersionEntity>): ArrayList<UpgradeVersionEntity> {
val tempList = ArrayList<UpgradeVersionEntity>()
list.let {
it.iterator().forEach { entity ->
if (onlineSelected && entity.name.contains("online")) {
tempList.add(entity)
}
if (qaSelected && entity.name.contains("qa")) {
tempList.add(entity)
}
}
}
return tempList
}
private fun logViewDestroy() {
logInfoView?.let {
it.dismiss()
@@ -2249,23 +2152,4 @@ class DebugSettingView @JvmOverloads constructor(
setLogCheckedChangeListener()
}
override fun upgradeVersionUrls(urls: Map<String, String>?) {
//版本信息更新
urls?.let {
upgradeVersionList.clear()
it.iterator().forEach { map ->
val name =
if (map.key.contains("{")) map.key.replace("{", "") else map.key
val url = if (map.value.contains("}")) map.value.replace(
"}",
""
) else map.value
upgradeVersionList.add(UpgradeVersionEntity(name.trim(), url))
}
upgradeVersionList.sortByDescending { upgradeVersionEntity -> upgradeVersionEntity.name }
upgradeListAdapter?.setDada(dataFilter(upgradeVersionList))
upgradeListAdapter?.notifyDataSetChanged()
}
}
}

View File

@@ -1,66 +0,0 @@
package com.mogo.eagle.core.function.hmi.ui.upgrade
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter.UpgradeListHolder
/**
* @author XuXinChao
* @description APK升级包列表适配器
* @since: 2022/3/25
*/
class UpgradeListAdapter: Adapter<UpgradeListHolder> {
private var context: Context? = null
private var data:List<UpgradeVersionEntity>? = null
private var clickListener: ClickListener? = null
constructor(
context: Context,
data: List<UpgradeVersionEntity>?,
clickListener: ClickListener? = null
) {
this.context = context
this.data = data
this.clickListener = clickListener
}
public fun setDada( data: List<UpgradeVersionEntity>?){
this.data = data
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UpgradeListHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_upgrade_version, parent, false)
return UpgradeListHolder(view)
}
override fun onBindViewHolder(holder: UpgradeListHolder, position: Int) {
data?.let {
val upgradeVersionEntity = it[position]
holder.tvUpgradeApkName.text=upgradeVersionEntity.name
holder.tvUpgradeApkName.setOnClickListener {
clickListener?.downloadApk(upgradeVersionEntity.name,upgradeVersionEntity.url)
}
}
}
override fun getItemCount() = data?.size ?: 0
class UpgradeListHolder(itemView: View) : ViewHolder(itemView) {
var tvUpgradeApkName: TextView = itemView.findViewById(R.id.tvUpgradeApkName)
}
interface ClickListener{
fun downloadApk(name:String,url:String)
}
}

View File

@@ -9,10 +9,10 @@ import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.bindingcar.AdUpgradeStateHelper
import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingCarListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerManager
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
@@ -32,7 +32,8 @@ class SystemVersionView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener,IMoGoBindingCarListener {
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener,
IMoGoDevaToolsListener {
companion object {
const val TAG = "SystemVersionView"
@@ -61,8 +62,7 @@ class SystemVersionView @JvmOverloads constructor(
//鹰眼版本视图点击事件
ivPadVersion.setOnClickListener {
CallerLogger.i("$M_HMI$$TAG", "pad version view clicked")
CallerBindingcarManager.getBindingcarProvider().queryAppUpgrade()
CallerDevaToolsManager.queryAppUpgrade()
//弹框和下载回调
// showUpgradeDialog(
// "",
@@ -268,7 +268,7 @@ class SystemVersionView @JvmOverloads constructor(
return
}
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerBindingCarListenerManager.addListener(TAG,this)
CallerDevaToolsListenerManager.addListener(TAG,this)
needQueryContainers = true
}
@@ -278,7 +278,7 @@ class SystemVersionView @JvmOverloads constructor(
return
}
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerBindingCarListenerManager.removeListener(TAG)
CallerDevaToolsListenerManager.removeListener(TAG)
needQueryContainers = false
}

View File

@@ -18,11 +18,9 @@ import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.module.MogoModule;
import com.mogo.commons.module.MogoModulePaths;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.constants.MoGoConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
import com.mogo.eagle.core.function.api.devatools.IMogoDevaToolsUpgradeListener;
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager;
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsUpgradeListenerManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
@@ -32,11 +30,8 @@ import com.mogo.eagle.core.function.overview.OverviewDb;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
import com.mogo.eagle.core.utilcode.util.SPUtils;
import com.mogo.map.MapApiPath;
import com.zhidao.support.obu.ami.AmiClientManager;
import com.zhjt.mogo_core_function_devatools.monitor.db.CpuInfo;
import com.zhjt.mogo_core_function_devatools.monitor.db.MemInfo;
import com.zhjt.mogo_core_function_devatools.monitor.db.MonitorDb;
@@ -62,7 +57,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
return;
}
start = System.currentTimeMillis();
connectAmiIp();
initOverviewDb();
// Crash 日志收集
initCrashConfig();
@@ -87,12 +81,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
}
private void queryAppUpgrade() {
UiThreadHandler.postDelayed(new Runnable() {
@Override
public void run() {
CallerBindingcarManager.getBindingcarProvider().queryAppUpgrade();
}
},9000);
}
@SuppressLint("SimpleDateFormat")
@@ -212,33 +201,20 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
OverviewDb.Companion.getDb(this);
}
/**
* 连接ami
*/
private void connectAmiIp() {
String ipAddress = SharedPrefsMgr.getInstance(AbsMogoApplication.getApp().getBaseContext()).getString(MoGoConfig.OBU_IP, "192.168.1.199");
AmiClientManager.getInstance().setObuIp(ipAddress);
}
private void initModules() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "initModules");
//och模块
// MogoModulePaths.addModuleFunction(new MogoModule("/driver/api", "IMoGoFunctionProvider"));
// MogoModulePaths.addModuleFunction(new MogoModule("/passenger/api", "IMoGoFunctionProvider"));
// MogoModulePaths.addBaseModule(new MogoModule(MapApiPath.PATH, "CustomMapApiBuilder"));
// MogoModulePaths.addBaseModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.MODULE_NAME));
// OBU 模块
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_V2X_OBU_MOGO, "IMoGoObuProvider"));
// 云公告发布
// BIZ
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_FUNC_BIZ, "IMoGoNoticeProvider"));
// 车聊聊IM
MogoModulePaths.addModuleFunctionServer(new MogoModule(ChatConsts.CHAT_PROVIDER_PATH, ChatConsts.CHAT_MODULE_NAME));
// V2X 模块
MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_V2X_MODULE, "V2XProvider"));
// 绑定车辆
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_BINDING_CAR, "IMoGoBindingcarProvider"));
// 司机身份专属模块
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp">
<TextView
android:id="@+id/tvUpgradeApkName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/color_FF2966EC"
android:padding="10dp"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#F0F0F0"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"/>
</LinearLayout>

View File

@@ -2273,99 +2273,6 @@
android:textSize="@dimen/dp_24" />
</LinearLayout>
</LinearLayout>
<ToggleButton
android:id="@+id/btnApkCenter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:background="@drawable/radio_button_normal_background_right"
android:drawableEnd="@drawable/icon_right"
android:padding="@dimen/dp_20"
android:textOff="应用包管理中心"
android:textOn="应用包管理中心"
android:textSize="@dimen/dp_24"
android:visibility="gone"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/apkCenterLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:id="@+id/ivApkSearch"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginEnd="10dp"
android:padding="10dp"
android:src="@drawable/icon_search"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/etApkSearch"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_10"
android:background="@drawable/debug_setting_edit_bg"
android:gravity="center"
android:hint="请输入搜索关键字如版本号等"
android:textColor="#1A1A1A"
android:textSize="@dimen/dp_24"
app:layout_constraintBottom_toBottomOf="@id/ivApkSearch"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/ivApkSearch"
app:layout_constraintTop_toTopOf="@id/ivApkSearch" />
<CheckBox
android:id="@+id/cbApkOnline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:padding="@dimen/dp_10"
android:text="Online"
android:textColor="#000"
android:textSize="@dimen/dp_24"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/cbApkQa"
app:layout_constraintTop_toBottomOf="@id/ivApkSearch" />
<CheckBox
android:id="@+id/cbApkQa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:padding="@dimen/dp_10"
android:text="QA"
android:textColor="#000"
android:textSize="@dimen/dp_24"
app:layout_constraintLeft_toRightOf="@id/cbApkOnline"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/ivApkSearch" />
<View
android:id="@+id/apkSearchDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="@dimen/dp_10"
android:background="#F0F0F0"
app:layout_constraintTop_toBottomOf="@id/cbApkQa" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvUpgradeVersionList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
app:layout_constraintTop_toBottomOf="@id/apkSearchDivider" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.bindingcar.network;
package com.mogo.eagle.core.data.bindingcar;
/**
* @author lixiaopeng

View File

@@ -24,7 +24,7 @@ public class MogoServicePaths {
public static final String PATH_SERVICES_MAP = "/mapservices/api";
/**
* 消息中心
* Float View
*/
@Keep
@Deprecated
@@ -56,31 +56,15 @@ public class MogoServicePaths {
public static final String PATH_AUTO_PILOT = "/auto_pilot/api";
/**
* 业务聚合 模块
* 业务Biz 模块
*/
@Keep
@Deprecated
public static final String PATH_FUNC_BIZ = "/func/biz";
/**
* 绑定车机 模块
*/
@Keep
@Deprecated
public static final String PATH_BINDING_CAR = "/bindingcar/api";
/**
* 路侧直播流 模块
*/
@Keep
@Deprecated
public static final String PATH_AI_MONITORING = "/monitoring/api";
/**
* deva开发套件
*/
@Keep
@Deprecated
public static final String PATH_DEVA_TOOLS = "/deva/tools";
/**

View File

@@ -1,13 +0,0 @@
package com.mogo.eagle.core.data.upgrade
/**
* @author XuXinChao
* @description 版本包下载实体类
* @since: 2022/3/25
*/
data class UpgradeVersionEntity(
var name: String,
var url: String
) {
}

View File

@@ -1,12 +0,0 @@
package com.mogo.eagle.core.function.api.bindingcar;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
/**
* @author lixiaopeng
* @description 网络请求回调
* @since: 3/16/22
*/
public interface BindingcarCallBack {
void callBackResult(ModifyBindingcarInfo modifyBindingcarInfo);
}

View File

@@ -1,14 +0,0 @@
package com.mogo.eagle.core.function.api.bindingcar
/**
* @author XuXinChao
* @description
* @since: 2022/5/18
*/
interface IMoGoBindingCarListener {
fun queryContainersResponse(dockerList: List<String>)
fun pushServerConfirm()
}

View File

@@ -1,46 +0,0 @@
package com.mogo.eagle.core.function.api.bindingcar;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider;
import java.util.List;
/**
* @author lixiaopeng
* @description 修改车辆信息
* @since: 3/15/22
*/
public interface IMoGoBindingcarProvider extends IMoGoFunctionServerProvider {
/**
* 修改工控机的绑定关系
* @param callBack
*/
void modifyCarInfo(BindingcarCallBack callBack);
/**
* 获取车辆的信息
* @param macAddress
* @param widevineIDWithMd5
*/
void getBindingcarInfo(String macAddress, String widevineIDWithMd5);
/**
* 确认升级工控机docker版本
* @param images docker列表
* @param padSn SN
* @param releaseId 任务ID
*/
void upgradeConfirm(List<String> images, String padSn, String releaseId);
/**
* 获取新工控机docker版本
* @param padSn SN
* @param dockerVersion 当前工控机版本
*/
void queryContainers(String padSn,String dockerVersion);
/**
* 查询app是否有更新
*/
void queryAppUpgrade();
}

View File

@@ -2,13 +2,14 @@ package com.mogo.eagle.core.function.api.devatools
import android.app.Activity
import android.content.Context
import android.view.*
import android.view.View
import android.view.ViewGroup
import com.alibaba.android.arouter.facade.template.IProvider
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.data.deva.scene.SceneModule
import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import record_cache.RecordPanelOuterClass
/**
* 开发套件工具接口
@@ -100,11 +101,6 @@ interface IDevaToolsProvider : IProvider {
*/
fun showFeedbackWindow(ctx: Context)
/**
* 获取升级版本Urls
*/
fun getUpgradeVersionUrls(versionName: String)
/**
* 下载指定包
*/
@@ -128,4 +124,37 @@ interface IDevaToolsProvider : IProvider {
* 同步AppConfigInfo信息
*/
fun syncConfig()
/**
* 修改工控机的绑定关系
* @param callBack
*/
fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit)
/**
* 获取车辆的信息
* @param macAddress
* @param widevineIDWithMd5
*/
fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String)
/**
* 确认升级工控机docker版本
* @param images docker列表
* @param padSn SN
* @param releaseId 任务ID
*/
fun upgradeConfirm(images: List<String>, padSn: String, releaseId: String)
/**
* 获取新工控机docker版本
* @param padSn SN
* @param dockerVersion 当前工控机版本
*/
fun queryContainers(padSn: String, dockerVersion: String)
/**
* 查询app是否有更新
*/
fun queryAppUpgrade()
}

View File

@@ -25,20 +25,30 @@ interface IMoGoDevaToolsListener {
* 日志抓取按行返回 lineLog
* 注:莫要在此回调中打印日志,否则会造成日志循环记录
*/
fun onLogCatch(lineLog: String)
fun onLogCatch(lineLog: String){
}
/**
* fw线程写入倒计时结束
*/
fun fwThreadClose()
fun fwThreadClose(){
}
/**
* 模块TAG更新回调
*/
fun moduleLogChanged(moduleTag: MutableMap<String, SceneModule>)
fun moduleLogChanged(moduleTag: MutableMap<String, SceneModule>){
}
fun queryContainersResponse(dockerList: List<String>){
}
fun pushServerConfirm(){
}
/**
* 版本升级Urls
*/
fun upgradeVersionUrls(urls: Map<String, String>?)
}

View File

@@ -1,7 +0,0 @@
package com.mogo.eagle.core.function.api.dispatch
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
interface IDispatchProvider : IMoGoFunctionServerProvider {
}

View File

@@ -1,27 +0,0 @@
package com.mogo.eagle.core.function.call.bindingcar
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingCarListener
import com.mogo.eagle.core.function.call.base.CallerBase
/**
* @author XuXinChao
* @description
* @since: 2022/5/18
*/
object CallerBindingCarListenerManager : CallerBase<IMoGoBindingCarListener>() {
fun invokeQueryContainersResponse(dockerList: List<String>) {
M_LISTENERS.forEach {
val listener = it.value
listener.queryContainersResponse(dockerList)
}
}
fun invokePushServerConfirm() {
M_LISTENERS.forEach {
val listener = it.value
listener.pushServerConfirm()
}
}
}

View File

@@ -1,16 +0,0 @@
package com.mogo.eagle.core.function.call.bindingcar;
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingcarProvider;
import com.mogo.eagle.core.function.call.base.CallerBase;
import static com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_BINDING_CAR;
/**
* @author lixiaopeng
*/
public class CallerBindingcarManager extends CallerBase {
public static IMoGoBindingcarProvider getBindingcarProvider() {
return getApiInstance(IMoGoBindingcarProvider.class, PATH_BINDING_CAR);
}
}

View File

@@ -41,10 +41,17 @@ object CallerDevaToolsListenerManager : CallerBase<IMoGoDevaToolsListener>() {
}
}
fun invokeDevaToolsUpgradeVersionUrls(urls: Map<String, String>?) {
fun invokeQueryContainersResponse(dockerList: List<String>) {
M_LISTENERS.forEach {
val listener = it.value
listener.upgradeVersionUrls(urls)
listener.queryContainersResponse(dockerList)
}
}
fun invokePushServerConfirm() {
M_LISTENERS.forEach {
val listener = it.value
listener.pushServerConfirm()
}
}

View File

@@ -2,8 +2,10 @@ package com.mogo.eagle.core.function.call.devatools
import android.app.Activity
import android.content.Context
import android.view.*
import com.mogo.eagle.core.data.config.*
import android.view.View
import android.view.ViewGroup
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.data.deva.scene.SceneModule
@@ -11,8 +13,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.mogo.*
import record_cache.RecordPanelOuterClass
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
object CallerDevaToolsManager {
@@ -134,20 +135,11 @@ object CallerDevaToolsManager {
devaToolsProviderApi?.showFeedbackWindow(ctx)
}
/**
* 获取升级版本Urls
*/
fun getUpgradeVersionUrls(versionName: String) {
devaToolsProviderApi?.getUpgradeVersionUrls(versionName)
}
/**
* 下载指定包
*/
fun downLoadPackage(downloadKey: String, downloadUrl: String) {
devaToolsProviderApi?.downLoadPackage(downloadKey, downloadUrl)
// Log.d("Update", "downloadKey = $downloadKey --- downloadUrl = $downloadUrl")
// devaToolsProviderApi?.downLoadPackage("IntelligentPilot_v2.9.0.1002_20220725_[fPadLenovoOchBus-launcher-qa]_debug.apk", "https://scm-1255510688.cos.ap-beijing.myqcloud.com/test/com.mogo.launcher.f/2.9.0.1002/IntelligentPilot_v2.9.0.1002_20220725_[fPadLenovoOchBus-launcher-qa]_debug.apk")
}
/**
@@ -179,4 +171,24 @@ object CallerDevaToolsManager {
fun syncConfig(){
devaToolsProviderApi?.syncConfig()
}
fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit){
devaToolsProviderApi?.modifyCarInfo(callBack)
}
fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String){
devaToolsProviderApi?.getBindingCarInfo(macAddress, widevineIDWithMd5)
}
fun upgradeConfirm(images: List<String>, padSn: String, releaseId: String){
devaToolsProviderApi?.upgradeConfirm(images, padSn, releaseId)
}
fun queryContainers(padSn: String, dockerVersion: String){
devaToolsProviderApi?.queryContainers(padSn, dockerVersion)
}
fun queryAppUpgrade(){
devaToolsProviderApi?.queryAppUpgrade()
}
}

View File

@@ -14,7 +14,6 @@ class SceneConstant {
//core业务module
const val M_ADAS_IMPL = "M_ADAS_IMPL-"
const val M_BINDING = "M_BINDING-"
const val M_CORDER = "M_CORDER-"
const val M_CHAT = "M_CHAT-"
const val M_DEVA = "M_DEVA-"
const val M_DISPATCH = "M_DISPATCH-"

View File

@@ -24,4 +24,3 @@
:core:function-impl:mogo-core-function-v2x
:core:function-impl:mogo-core-function-chat
:core:function-impl:mogo-core-function-devatools
:core:function-impl:mogo-core-function-bindingcar

View File

@@ -30,8 +30,6 @@ include ':core:function-impl:mogo-core-function-map'
include ':core:function-impl:mogo-core-function-v2x'
// 自研OBU业务
include ':core:function-impl:mogo-core-function-obu-mogo'
// 绑定车机
include ':core:function-impl:mogo-core-function-bindingcar'
// 车聊聊业务
include ':core:function-impl:mogo-core-function-chat'
// 业务biz