From da525cf7e822be1067e527cbfebb370440dadb68 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 12 May 2022 19:06:57 +0800 Subject: [PATCH 01/11] =?UTF-8?q?[change]=E5=B0=86=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=88=B0GNSS=E6=8E=A5=E5=8F=A3=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/support/adas/high/common/ReceiveTimeoutManager.java | 2 +- .../com/zhidao/support/adas/high/msg/AutopilotStateMessage.java | 2 -- .../java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java | 2 ++ 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReceiveTimeoutManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReceiveTimeoutManager.java index 71d3db44fb..1fefca07a8 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReceiveTimeoutManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReceiveTimeoutManager.java @@ -12,7 +12,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public class ReceiveTimeoutManager { private static final String TAG = ReceiveTimeoutManager.class.getSimpleName(); private static volatile ReceiveTimeoutManager INSTANCE; - private static final long DEFAULT_TIMEOUT = 4 * 1000L;//默认超时时间 + private static final long DEFAULT_TIMEOUT = 3 * 1000L;//默认超时时间 private final AtomicBoolean isEnable = new AtomicBoolean(true);//是否启用超时检测 private volatile long lastReceiveTime; private OnTimeoutListener listener; diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java index 65eee64617..e1250bf431 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/AutopilotStateMessage.java @@ -3,7 +3,6 @@ package com.zhidao.support.adas.high.msg; import com.google.gson.Gson; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.OnAdasListener; -import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; import mogo.telematics.pad.MessagePad; @@ -18,7 +17,6 @@ public class AutopilotStateMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(MessagePad.Header header, byte[] msg, OnAdasListener adasListener) throws InvalidProtocolBufferException { - ReceiveTimeoutManager.getInstance().refreshLast(); MessagePad.AutopilotState autopilotState = MessagePad.AutopilotState.parseFrom(msg); if (adasListener != null) { adasListener.onAutopilotState(header, autopilotState); diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java index 49d3be2224..2a027e6078 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GnssInfoMessage.java @@ -3,6 +3,7 @@ package com.zhidao.support.adas.high.msg; import com.google.gson.Gson; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; import mogo.telematics.pad.MessagePad; @@ -17,6 +18,7 @@ public class GnssInfoMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(MessagePad.Header header, byte[] msg, OnAdasListener adasListener) throws InvalidProtocolBufferException { + ReceiveTimeoutManager.getInstance().refreshLast(); MessagePad.GnssInfo trajectory = MessagePad.GnssInfo.parseFrom(msg); if (adasListener != null) { adasListener.onGnssInfo(header, trajectory); From 8aae203a43515e091a07fbce5531b603da6b14dd Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 12 May 2022 19:07:26 +0800 Subject: [PATCH 02/11] =?UTF-8?q?[change]=E5=A2=9E=E5=8A=A0=E7=82=B9?= =?UTF-8?q?=E4=BA=91=E6=95=B0=E6=8D=AE=E8=A7=A3=E7=A0=81=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/ui/MainActivity.java | 37 +++++++ .../adas/high/common/PointCloudDecoder.java | 104 ++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/PointCloudDecoder.java diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 11e2ccd221..4054ac0572 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -266,6 +266,40 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas disconnect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { +// MessagePad.Header header = MessagePad.Header.newBuilder() +// .setTimestamp(1.6523361438761907E9).build(); +// PointCloud.LidarPointCloud pointCloud = PointCloud.LidarPointCloud.newBuilder() +// .setSelfLongitude(112.57563687979261) +// .setSelfLatitude(26.828128487326854) +// .setSelfAltitude(52.89) +// .setSelfRoll(-0.00715584993317675) +// .setSelfPitch(0.008726646259971651) +// .setSelfYaw(0.4850269854068756) +// +// .addAddData(1F) +// .addAddData(2F) +// .addAddData(3F) +// .addAddData(4F) +// .addAddData(5F) +// .addAddData(6F) +// .addAddData(7F) +// .addAddData(8F) +// +// .addDelData(9F) +// .addDelData(10F) +// .addDelData(11F) +// .addDelData(12F) +// .addDelData(13F) +// .addDelData(14F) +// .addDelData(15F) +// .addDelData(16F) +// .addDelData(17F) +// .addDelData(18F) +// .addDelData(19F) +// .addDelData(20F) +// .build(); +// String data = PointCloudDecoder.decode(header, pointCloud); +// Log.i("ddd", "转换数据=" + data); connect(false); } }); @@ -814,6 +848,9 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas public void onPointCloud(MessagePad.Header header, PointCloud.LidarPointCloud pointCloud) { MyPointCloud base = new MyPointCloud(header, pointCloud); DataDistribution.getInstance().addData(base); +// String data = PointCloudDecoder.decode(header, pointCloud); +// Log.i("dddd", "data==" + data.length()); +// LogSave.getInstance().saveLog("转换数据=" + data); } @Override diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/PointCloudDecoder.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/PointCloudDecoder.java new file mode 100644 index 0000000000..8e677419df --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/PointCloudDecoder.java @@ -0,0 +1,104 @@ +package com.zhidao.support.adas.high.common; + +import mogo.telematics.pad.MessagePad; +import rule_segement.PointCloud; + +/** + * 点云数据解码器 + * 时间戳,lon,lat,alt,yaw,roll,patch,新增数据大小,id,x,y,z,强度,……,删除数据大小,id,x,y,z,强度,…… + * 如果add_data 没有数据 新增数据大小用-1表示 + * 如果del_data 没有数据 删除数据大小用-2表示 + * 如果又不存在的数会使用0.0补位 + * 目前工控机所发送数据没用ID 所以默认用0代替 + */ +public class PointCloudDecoder { + /** + * add 和del 列表中 多少一个数据为一组 + * 目前缺少id所以是4个 + */ + private static final int NUMBER_OF_DATA = 4; + + public static String decode(MessagePad.Header header, PointCloud.LidarPointCloud pointCloud) { + StringBuilder builder = new StringBuilder(); + builder.append(((long) header.getTimestamp() * 1000.0D)).append(","); + double d; + if (pointCloud.hasSelfLongitude()) { + d = pointCloud.getSelfLongitude(); + } else { + d = 0; + } + builder.append(d).append(","); + if (pointCloud.hasSelfLatitude()) { + d = pointCloud.getSelfLatitude(); + } else { + d = 0; + } + builder.append(d).append(","); + if (pointCloud.hasSelfAltitude()) { + d = pointCloud.getSelfAltitude(); + } else { + d = 0; + } + builder.append(d).append(","); + if (pointCloud.hasSelfYaw()) { + d = pointCloud.getSelfYaw(); + } else { + d = 0; + } + builder.append(d).append(","); + if (pointCloud.hasSelfRoll()) { + d = pointCloud.getSelfRoll(); + } else { + d = 0; + } + builder.append(d).append(","); + if (pointCloud.hasSelfPitch()) { + d = pointCloud.getSelfPitch(); + } else { + d = 0; + } + builder.append(d).append(","); + int addSize = pointCloud.getAddDataCount() / NUMBER_OF_DATA; + int delSize = pointCloud.getDelDataCount() / NUMBER_OF_DATA; + if (addSize == 0 && delSize == 0) { + builder.append(-1).append(",").append(-2); + } else { + StringBuilder add = new StringBuilder(); + StringBuilder del = new StringBuilder(); + int i = 0; + while (i < delSize || i < addSize) { + int temp = i * NUMBER_OF_DATA; + if (i < addSize) { + //目前没有id 默认插入0 + add.append(0).append(","); + add.append(pointCloud.getAddData(temp++)).append(","); + add.append(pointCloud.getAddData(temp++)).append(","); + add.append(pointCloud.getAddData(temp++)).append(","); + add.append(pointCloud.getAddData(temp)).append(","); + } + if (i < delSize) { + temp = i * NUMBER_OF_DATA; + //目前没有id 默认插入0 + del.append(0).append(","); + del.append(pointCloud.getDelData(temp++)).append(","); + del.append(pointCloud.getDelData(temp++)).append(","); + del.append(pointCloud.getDelData(temp++)).append(","); + del.append(pointCloud.getDelData(temp)).append(","); + } + i++; + } + if (addSize == 0) { + builder.append(-1).append(","); + } else { + builder.append(addSize).append(",").append(add); + } + if (delSize == 0) { + builder.append(-2); + } else { + del.deleteCharAt(del.length() - 1); + builder.append(delSize).append(",").append(del); + } + } + return builder.toString(); + } +} From 26b6066393fafacc4b4a4c8a16a20d8afadd4efe Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 12 May 2022 19:21:50 +0800 Subject: [PATCH 03/11] add chain log of startAutopilot(bus and taxi), add new func of upload map log: --- .../com/mogo/och/bus/model/BusOrderModel.java | 14 +++ .../com/mogo/och/taxi/model/TaxiModel.java | 14 +++ .../mogo-core-function-autopilot/build.gradle | 1 - .../autopilot/MoGoAutopilotProvider.kt | 32 +++++- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 1 + .../mogo-core-function-devatools/build.gradle | 1 - .../logcatch/MogoLogCatchManager.kt | 22 +++- .../mogo-core-function-hmi/build.gradle | 1 - .../core/data/deva/chain/ChainConstant.kt | 7 ++ .../api/map/deva/IMoGoMapDevaProvider.kt | 9 ++ .../call/autopilot/CallerAutoPilotManager.kt | 14 +++ .../call/map/CallerMapDevaListenerManager.kt | 54 +++++++++ core/mogo-core-utils/build.gradle | 2 + gradle.properties | 4 +- .../zhidao/support/adas/high/AdasChannel.java | 19 ++++ .../support/adas/high/chain/AdasChain.java | 6 +- .../java/com/mogo/map/AMapViewWrapper.java | 103 ++++++++++-------- modules/mogo-module-common/build.gradle | 2 - 18 files changed, 244 insertions(+), 62 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapDevaProvider.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapDevaListenerManager.kt diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index d95d664aab..ba3649ae98 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -1,5 +1,9 @@ package com.mogo.och.bus.model; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_BUS_START_AUTOPILOT; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; import static com.mogo.och.bus.constant.BusConst.STATION_STATUS_STOPPED; @@ -50,6 +54,8 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; +import com.zhjt.service.chain.ChainLog; +import com.zhjt.service.chain.TracingConstants; import java.io.IOException; import java.util.ArrayList; @@ -465,6 +471,14 @@ public class BusOrderModel { * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 */ + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, + linkCode = CHAIN_LINK_ADAS, + endpoint = TracingConstants.Endpoint.PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_OCH_BUS_START_AUTOPILOT, + paramIndexes = {0}, + clientPkFileName = "sn" + ) private void RenderLeaveStationSuccess(BusRoutesResult result, boolean isRestart) { renderBusStationsStatus(result); if (slidePannelHideCallback != null) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 2bfa74a594..96739467ae 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1,5 +1,9 @@ package com.mogo.och.taxi.model; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_BUS_START_AUTOPILOT; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS; +import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; import android.content.Context; @@ -60,6 +64,8 @@ import com.mogo.aicloud.services.socket.IMogoLifecycleListener; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; +import com.zhjt.service.chain.ChainLog; +import com.zhjt.service.chain.TracingConstants; import org.jetbrains.annotations.NotNull; @@ -778,6 +784,14 @@ public class TaxiModel { } //以当前订单为基础,开启自动驾驶 + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, + linkCode = CHAIN_LINK_ADAS, + endpoint = TracingConstants.Endpoint.PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT, + paramIndexes = {0}, + clientPkFileName = "sn" + ) public void startAutoPilot() { if (!checkCurrentOCHOrder()) { CallerLogger.INSTANCE.e(M_TAXI + TAG, "no order or order is empty."); diff --git a/core/function-impl/mogo-core-function-autopilot/build.gradle b/core/function-impl/mogo-core-function-autopilot/build.gradle index a3ed2343ce..a63ca70355 100644 --- a/core/function-impl/mogo-core-function-autopilot/build.gradle +++ b/core/function-impl/mogo-core-function-autopilot/build.gradle @@ -51,7 +51,6 @@ dependencies { kapt rootProject.ext.dependencies.aroutercompiler - implementation rootProject.ext.dependencies.mogochainbase implementation rootProject.ext.dependencies.mogoami implementation rootProject.ext.dependencies.mogoaicloudtelematic diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index d9cb24e8d1..3a4a0aa9e1 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -11,6 +11,9 @@ import com.mogo.eagle.core.data.autopilot.toRouteInfo 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.data.deva.chain.ChainConstant +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.trafficlight.toTrafficLightDetail @@ -43,6 +46,8 @@ import com.zhidao.support.adas.high.common.Constants import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS import com.zhidao.support.adas.high.common.CupidLogUtils import com.zhidao.support.adas.high.common.MogoReport +import com.zhjt.service.chain.ChainLog +import com.zhjt.service.chain.TracingConstants import io.netty.channel.Channel import mogo.telematics.pad.MessagePad import java.util.concurrent.TimeUnit @@ -95,13 +100,17 @@ class MoGoAutopilotProvider : platNumberArray.size, platNumberArray ), channel ) { - CallerLogger.d("$M_ADAS_IMPL$TAG", "司机端发送车牌号到乘客端是否成功:${it.isSuccess}") + CallerLogger.d( + "$M_ADAS_IMPL$TAG", + "司机端发送车牌号到乘客端是否成功:${it.isSuccess}" + ) } } else { CallerAutoPilotManager.getCarConfig() } } - else -> {} + else -> { + } } } } @@ -241,12 +250,26 @@ class MoGoAutopilotProvider : override fun startAutoPilot(controlParameters: AutopilotControlParameters) { if (AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) { - AdasManager.getInstance().sendAutoPilotModeReq(1, 1, controlParameters.toRouteInfo()) + val invokeResult = AdasManager.getInstance().sendAutoPilotModeReq(1, 1, controlParameters.toRouteInfo()) + invokeAutoPilotResult(if (invokeResult) "自动驾驶调用成功" else "自动驾驶调用失败, socket 或者 rawPack 可能为空") } else { + invokeAutoPilotResult("车机与工控机链接失败,无法开启自动驾驶") CallerLogger.e("$M_ADAS_IMPL$TAG", "车机与工控机链接失败,无法开启自动驾驶") } } + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, + linkCode = CHAIN_LINK_ADAS, + endpoint = TracingConstants.Endpoint.PAD, + nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT_RESULT, + paramIndexes = [0], + clientPkFileName = "sn" + ) + private fun invokeAutoPilotResult(status: String) { + CallerLogger.e("$M_ADAS_IMPL$TAG", status) + } + override fun sendTrafficLightData(trafficLightResult: TrafficLightResult) { AdasManager.getInstance().sendTrafficLightData( trafficLightResult.crossId, @@ -463,7 +486,8 @@ class MoGoAutopilotProvider : REQ_CAR_NUMBER -> { AppConfigInfo.plateNumber = String(msg.body) } - else -> {} + else -> { + } } } } catch (e: Exception) { diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index c07c7790ca..11dbe67643 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -31,6 +31,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotRotting import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotTrajectory import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showAdUpgradeStatus import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener diff --git a/core/function-impl/mogo-core-function-devatools/build.gradle b/core/function-impl/mogo-core-function-devatools/build.gradle index da21494c74..4e2d49d083 100644 --- a/core/function-impl/mogo-core-function-devatools/build.gradle +++ b/core/function-impl/mogo-core-function-devatools/build.gradle @@ -72,7 +72,6 @@ dependencies { implementation rootProject.ext.dependencies.arouter kapt rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.mogologlib - implementation rootProject.ext.dependencies.mogochainbase implementation rootProject.ext.dependencies.androidx_datastore implementation rootProject.ext.dependencies.androidxroomruntime diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt index eb5d30426c..9e9062402b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.content.Context import android.os.Handler import android.os.Message +import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -11,8 +12,10 @@ import com.mogo.commons.AbsMogoApplication import com.mogo.commons.debug.DebugConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.constants.MoGoConfig +import com.mogo.eagle.core.function.api.map.deva.IMoGoMapDevaProvider import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager +import com.mogo.eagle.core.function.call.map.CallerMapDevaListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel import com.mogo.eagle.core.utilcode.mogo.logger.Logger @@ -20,7 +23,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ 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.ThreadUtils -import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.zhidao.loglib.bean.RemoteLogPushContent import com.zhidao.loglib.call.LogInfoManagerFactory import com.zhidao.loglib.core.ILogListener @@ -30,10 +32,11 @@ import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companio import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.LOG_PUSH_TYPE import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.START_CATCH_LOG import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.STOP_CATCH_LOG +import java.io.File @SuppressLint("StaticFieldLeak") object MogoLogCatchManager : IMogoOnMessageListener, Handler.Callback, - ILogListener { + ILogListener, IMoGoMapDevaProvider { private const val TAG = "MogoLogCatchManager" private const val MSG_TRY_CLOSE_LOG = 1001 @@ -50,6 +53,7 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl mContext = context MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext) .registerOnMessageListener(LOG_PUSH_TYPE, this) + CallerMapDevaListenerManager.addListener(TAG, this) manualContent.pkgName = context.packageName logCheck(context) } @@ -107,7 +111,7 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl } override fun handleMessage(msg: Message): Boolean { - when(msg.what){ + when (msg.what) { MSG_TRY_CLOSE_LOG -> { CallerDevaToolsListenerManager.invokeDevaToolsLogCatchClose() closeLoggerLevel() @@ -225,10 +229,20 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl } } + override fun uploadFile(filePath: String) { + val file = File(filePath) + if (file.isFile) { + CallerLogger.d("$M_DEVA$TAG", "uploadFile path : $filePath") +// LogInfoManagerFactory.handleSingleUploadFile(filePath) + }else{ + CallerLogger.d("$M_DEVA$TAG", "file absPath : ${file.absolutePath}") + } + } + fun onDestroy() { MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext) .unregisterLifecycleListener(LOG_PUSH_TYPE) - + CallerMapDevaListenerManager.removeListener(this) if (handler.hasMessages(MSG_TRY_CLOSE_LOG)) { handler.removeMessages(MSG_TRY_CLOSE_LOG) } diff --git a/core/function-impl/mogo-core-function-hmi/build.gradle b/core/function-impl/mogo-core-function-hmi/build.gradle index f005c52cc1..23dd91a810 100644 --- a/core/function-impl/mogo-core-function-hmi/build.gradle +++ b/core/function-impl/mogo-core-function-hmi/build.gradle @@ -73,7 +73,6 @@ dependencies { implementation rootProject.ext.dependencies.mogoami - implementation rootProject.ext.dependencies.mogochainbase implementation rootProject.ext.dependencies.android_start_up if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { api rootProject.ext.dependencies.mogoaicloudservicesdk diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index 370186546d..e9f44a917b 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -30,5 +30,12 @@ class ChainConstant { const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD = "PAD_ADAS_MESSAGE_AUTOPILOT_RECORD" const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE = "PAD_ADAS_MESSAGE_AUTOPILOT_VEHICLE" const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN = "PAD_ADAS_MESSAGE_AUTOPILOT_WARN" + + //operation by user + const val CHAIN_ALIAS_CODE_OCH_BUS_START_AUTOPILOT = "CHAIN_ALIAS_CODE_OCH_BUS_START_AUTOPILOT" + const val CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT = "CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT" + const val CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT = "CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT" + const val CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT_RESULT = "CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT_RESULT" + } } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapDevaProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapDevaProvider.kt new file mode 100644 index 0000000000..552cf1236b --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/deva/IMoGoMapDevaProvider.kt @@ -0,0 +1,9 @@ +package com.mogo.eagle.core.function.api.map.deva + +interface IMoGoMapDevaProvider { + + /** + * 压缩并上传地图日志 + */ + fun uploadFile(filePath: String) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 406446d35c..9d5e36e582 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -3,9 +3,15 @@ package com.mogo.eagle.core.function.call.autopilot import android.os.SystemClock import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.constants.MogoServicePaths +import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotProvider import com.mogo.eagle.core.function.call.base.CallerBase +import com.zhjt.service.chain.ChainLog +import com.zhjt.service.chain.TracingConstants import kotlin.random.Random /** @@ -43,6 +49,14 @@ object CallerAutoPilotManager { * * @param controlParameters 开启自动驾驶的控制参数 */ + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, + linkCode = CHAIN_LINK_ADAS, + endpoint = TracingConstants.Endpoint.PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_EAGLE_START_AUTOPILOT, + paramIndexes = [0], + clientPkFileName = "sn" + ) fun startAutoPilot(controlParameters: AutopilotControlParameters?) { if (controlParameters == null) { //LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息") diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapDevaListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapDevaListenerManager.kt new file mode 100644 index 0000000000..ce35fb5b0c --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapDevaListenerManager.kt @@ -0,0 +1,54 @@ +package com.mogo.eagle.core.function.call.map + +import androidx.annotation.Nullable +import com.mogo.eagle.core.function.api.map.deva.IMoGoMapDevaProvider +import com.mogo.eagle.core.function.call.base.CallerBase +import java.util.concurrent.ConcurrentHashMap + + +object CallerMapDevaListenerManager : CallerBase() { + + private val mMapDevaListeners: ConcurrentHashMap = + ConcurrentHashMap() + + private var filePath: String? = null + + fun addListener( + @Nullable tag: String, + @Nullable listener: IMoGoMapDevaProvider + ) { + if (mMapDevaListeners.containsKey(tag)) { + return + } + mMapDevaListeners[tag] = listener + filePath?.let { + listener.uploadFile(it) + } + } + + fun removeListener(@Nullable tag: String) { + if (!mMapDevaListeners.containsKey(tag)) { + return + } + mMapDevaListeners.remove(tag) + } + + fun removeListener(@Nullable listener: IMoGoMapDevaProvider) { + if (!mMapDevaListeners.containsValue(listener)) { + return + } + mMapDevaListeners.forEach { + if (it.value == listener) { + mMapDevaListeners.remove(it.key) + } + } + } + + fun invokeUploadLogFile(filePath: String) { + this.filePath = filePath + mMapDevaListeners.forEach { + val listener = it.value + listener.uploadFile(filePath) + } + } +} \ No newline at end of file diff --git a/core/mogo-core-utils/build.gradle b/core/mogo-core-utils/build.gradle index c1e080ec4e..97bbfa5d86 100644 --- a/core/mogo-core-utils/build.gradle +++ b/core/mogo-core-utils/build.gradle @@ -75,6 +75,8 @@ dependencies { api rootProject.ext.dependencies.androidxlifecycleprocess api rootProject.ext.dependencies.androidxccorektx api rootProject.ext.dependencies.life_cycle_java8 + + api rootProject.ext.dependencies.mogochainbase } apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/gradle.properties b/gradle.properties index e279f4ec3b..23f237a927 100644 --- a/gradle.properties +++ b/gradle.properties @@ -60,7 +60,7 @@ HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 ################ 外部依赖引用 ################ # loglib -LOGLIB_VERSION=1.2.30 +LOGLIB_VERSION=1.2.42 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION MOGO_NETWORK_VERSION=1.3.55 @@ -82,7 +82,7 @@ MOGO_LOCATION_VERSION=1.3.55 MOGO_TELEMATIC_VERSION=1.3.55 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.1.1 +MAP_SDK_VERSION=2.1.1.1 MAP_SDK_OPERATION_VERSION=1.0.13 # websocket WEBSOCKET_VERSION=1.1.7 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 8148945723..1f559f162b 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -1,12 +1,17 @@ package com.zhidao.support.adas.high; +import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_CONNECT_ADDRESS; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_INIT; +import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON; +import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_BYTE; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_ADAS; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_CONNECT_STATUS; +import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -430,6 +435,12 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @param reason 状态描述 * 如果ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED && reason==null 表示主动断开连接 */ + @ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, + linkCode = CHAIN_LINK_ADAS, + endpoint = TracingConstants.Endpoint.PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON, + paramIndexes = {1}, + clientPkFileName = "sn") private void updateConnectStatus(@Define.IPCConnectionStatus int status, @Nullable String reason) { ipcConnectionStatus.set(status); if (adasConnectStatusListener != null) { @@ -576,6 +587,14 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @param routeInfo 自动驾驶路径信息 * @return boolean */ + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, + linkCode = CHAIN_LINK_ADAS, + endpoint = TracingConstants.Endpoint.PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT, + paramIndexes = {2}, + clientPkFileName = "sn" + ) @Override public boolean sendAutoPilotModeReq(int mode, int source, MessagePad.RouteInfo routeInfo) { MessagePad.SetAutopilotModeReq.Builder builder = MessagePad.SetAutopilotModeReq.newBuilder(); diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java index 61ea468b85..c69c8cfb54 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java @@ -5,11 +5,15 @@ public class AdasChain { public static final int CHAIN_LINK_ADAS = 1; public static final int CHAIN_LINK_LOG_CONNECT_STATUS = 0; - public static final int CHAIN_LINK_LOG_WEB_SOCKET_DATA = 1; + public static final int CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT = 1; public static final String CHAIN_ALIAS_CODE_INIT = "PAD_ADAS_INIT"; + public static final String CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON = "CHAIN_ALIAS_CODE_STATUS_CHANGE_REASON"; public static final String CHAIN_ALIAS_CODE_CONNECT_ADDRESS = "PAD_ADAS_CONNECT_ADDRESS"; public static final String CHAIN_ALIAS_CODE_WEB_SOCKET_OPEN = "PAD_ADAS_WEB_SOCKET_OPEN"; public static final String CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_JSON = "PAD_ADAS_WEB_SOCKET_MESSAGE_JSON"; public static final String CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_BYTE = "PAD_ADAS_WEB_SOCKET_MESSAGE_BYTE"; + + //operation by user + public static final String CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT = "CHAIN_ALIAS_CODE_ADAS_START_AUTOPILOT"; } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index cad4b55bc9..923a512009 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -22,6 +22,8 @@ import android.util.Log; import android.view.MotionEvent; import android.view.View; +import androidx.annotation.NonNull; + import com.mogo.commons.constants.SharedPrefsConstants; import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.config.HdMapBuildConfig; @@ -31,6 +33,7 @@ import com.mogo.eagle.core.data.map.MapRoadInfo; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager; +import com.mogo.eagle.core.function.call.map.CallerMapDevaListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapStyleListenerManager; @@ -60,6 +63,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnMapStyleListener; import com.zhidaoauto.map.sdk.open.abs.OnMapTouchListener; import com.zhidaoauto.map.sdk.open.abs.OnMapViewVisualAngleChangeListener; import com.zhidaoauto.map.sdk.open.abs.OnRoadInfoListener; +import com.zhidaoauto.map.sdk.open.abs.log.ILog; import com.zhidaoauto.map.sdk.open.camera.CameraPosition; import com.zhidaoauto.map.sdk.open.camera.CameraUpdateFactory; import com.zhidaoauto.map.sdk.open.camera.LatLngBounds; @@ -96,7 +100,7 @@ public class AMapViewWrapper implements IMogoMapView, OnMarkClickListener, OnMapStyleListener, OnMapViewVisualAngleChangeListener, - OnRoadInfoListener { + OnRoadInfoListener, ILog { private static final String TAG = "AMapViewWrapper"; private final MapAutoView mMapView; @@ -116,7 +120,7 @@ public class AMapViewWrapper implements IMogoMapView, private boolean mIsDelayed = false; public AMapViewWrapper(MapAutoView mMapView) { - CallerLogger.INSTANCE.i(M_MAP+TAG, "autoop--AMapViewWrapper: init"); + CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--AMapViewWrapper: init"); this.mMapView = mMapView; initViews(); initListeners(); @@ -183,17 +187,18 @@ public class AMapViewWrapper implements IMogoMapView, mMapView.setOnMapStyleListener(this); mMapView.setOnMapViewVisualAngleChangeListener(this); mMapView.setOnRoadInfoListener(this, 1); - CallerLogger.INSTANCE.d(M_MAP+TAG, "styleop - initListeners - setOnMapStyleListener - view " + mMapView); + MapAutoApi.INSTANCE.registerLogListener(this); + CallerLogger.INSTANCE.d(M_MAP + TAG, "styleop - initListeners - setOnMapStyleListener - view " + mMapView); } @Override public void onRoadIdInfo(@androidx.annotation.Nullable String roadId) { if (roadId != null && !TextUtils.isEmpty(roadId)) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "onRoadIdInfo::" + roadId); + CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::" + roadId); CallerMapRoadListenerManager.INSTANCE.invokeListenersOnRoadIdGet(roadId); } else { - CallerLogger.INSTANCE.d(M_MAP+TAG, "onRoadIdInfo::null"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::null"); } } @@ -211,27 +216,27 @@ public class AMapViewWrapper implements IMogoMapView, * } */ String provider = carLoc.getProvider(); - CallerLogger.INSTANCE.d(M_MAP+TAG, "car_loc: " + carLoc + ""); + CallerLogger.INSTANCE.d(M_MAP + TAG, "car_loc: " + carLoc + ""); if (!MapAutoApi.GPS_FLAG.equals(provider)) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "convert before: car_loc: {lon: " + carLoc.getLongitude() + ", lat: " + carLoc.getLatitude() + "}"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "convert before: car_loc: {lon: " + carLoc.getLongitude() + ", lat: " + carLoc.getLatitude() + "}"); LonLatPoint p = new LonLatPoint(carLoc.getLongitude(), carLoc.getLatitude()); p = MapTools.INSTANCE.switchLonLatWGS84(p); carLoc.setLongitude(p.longitude); carLoc.setLatitude(p.latitude); - CallerLogger.INSTANCE.d(M_MAP+TAG, "convert after: car_loc: {lon: " + carLoc.getLongitude() + ", lat: " + carLoc.getLatitude() + "}"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "convert after: car_loc: {lon: " + carLoc.getLongitude() + ", lat: " + carLoc.getLatitude() + "}"); } - CallerLogger.INSTANCE.d(M_MAP+TAG, "onStopLineInfo:stop_line" + stopLine + ", car_loc:{lon: " + carLoc.getLatitude() + ", lat: " + carLoc.getLongitude() + "}"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "onStopLineInfo:stop_line" + stopLine + ", car_loc:{lon: " + carLoc.getLatitude() + ", lat: " + carLoc.getLongitude() + "}"); MapRoadInfo.StopLine stopInfo = convert(stopLine); LonLatPoint p1 = points.get(0); LonLatPoint p2 = points.get(points.size() - 1); double distanceOfCarToStopLine = MapDataApi.INSTANCE.getNearstFromPointToSegment(carLoc.getLongitude(), carLoc.getLatitude(), p1.longitude, p1.latitude, p2.longitude, p2.latitude) * 10_0000; stopInfo.setDistanceOfCarToStopLine(distanceOfCarToStopLine); - CallerLogger.INSTANCE.d(M_MAP+TAG, "onStopLineInfo: --- distance: " + distanceOfCarToStopLine); + CallerLogger.INSTANCE.d(M_MAP + TAG, "onStopLineInfo: --- distance: " + distanceOfCarToStopLine); CallerMapRoadListenerManager.INSTANCE.invokeListenersOnStopLineGet(stopInfo); } } else { if (carLoc != null) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "onStopLineInfo::null, car_loc:{lon: " + carLoc.getLatitude() + ", lat: " + carLoc.getLongitude() + "}"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "onStopLineInfo::null, car_loc:{lon: " + carLoc.getLatitude() + ", lat: " + carLoc.getLongitude() + "}"); } } } @@ -279,7 +284,7 @@ public class AMapViewWrapper implements IMogoMapView, public void onCreate(Bundle bundle) { if (mMapView != null) { mMapView.onCreate(bundle); - CallerLogger.INSTANCE.d(M_MAP+TAG, "map onCreate"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "map onCreate"); } } @@ -287,7 +292,7 @@ public class AMapViewWrapper implements IMogoMapView, public void onResume() { if (mMapView != null) { mMapView.onResume(); - CallerLogger.INSTANCE.d(M_MAP+TAG, "map onResume"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "map onResume"); } } @@ -295,7 +300,7 @@ public class AMapViewWrapper implements IMogoMapView, public void onPause() { if (mMapView != null) { mMapView.onPause(); - CallerLogger.INSTANCE.d(M_MAP+TAG, "map onPause"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "map onPause"); } } @@ -309,7 +314,8 @@ public class AMapViewWrapper implements IMogoMapView, mMapView.setOnMapClickListener(null); mMapView.getLocationClient().unRegisterListener(this); mMapView.setOnCameraChangeListener(null); - CallerLogger.INSTANCE.d(M_MAP+TAG, "map onDestroy"); + MapAutoApi.INSTANCE.unregisterLogListener(this); + CallerLogger.INSTANCE.d(M_MAP + TAG, "map onDestroy"); } if (mLocationTask != null) { @@ -321,7 +327,7 @@ public class AMapViewWrapper implements IMogoMapView, public void onSaveInstanceState(Bundle outState) { if (mMapView != null) { mMapView.onSaveInstanceState(outState); - CallerLogger.INSTANCE.d(M_MAP+TAG, "map onSaveInstanceState"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "map onSaveInstanceState"); } } @@ -335,9 +341,9 @@ public class AMapViewWrapper implements IMogoMapView, if (isVrMold()) { return MapControlResult.ERROR; } - CallerLogger.INSTANCE.d(M_MAP+TAG, "changeZoom : " + zoom); + CallerLogger.INSTANCE.d(M_MAP + TAG, "changeZoom : " + zoom); if (DebugConfig.isDebug()) { - CallerLogger.INSTANCE.d(M_MAP+TAG, Log.getStackTraceString(new Throwable())); + CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable())); } getMap().changeZoom(zoom); return MapControlResult.SUCCESS; @@ -351,7 +357,7 @@ public class AMapViewWrapper implements IMogoMapView, mVisualAngleMode = angelMode; if (angelMode == MODE_CLOSE_SIGHT) { if (mogoLatLng == null) { - CallerLogger.INSTANCE.e(M_MAP+TAG, "切换地图近景需要传入要移动的经纬度数据"); + CallerLogger.INSTANCE.e(M_MAP + TAG, "切换地图近景需要传入要移动的经纬度数据"); return; } // 近景传入经纬度为点击地图上静态marker经纬度数据,为GPS坐标点。 @@ -374,7 +380,7 @@ public class AMapViewWrapper implements IMogoMapView, private boolean checkAMapView() { if (mMapView == null || mMapView.getMapAutoViewHelper() == null) { - CallerLogger.INSTANCE.e(M_MAP+TAG, "自研mapView实例为空,请检查"); + CallerLogger.INSTANCE.e(M_MAP + TAG, "自研mapView实例为空,请检查"); return false; } return true; @@ -382,20 +388,20 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void moveToCenter(MogoLatLng latLng, boolean animate) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "move to center " + latLng); + CallerLogger.INSTANCE.d(M_MAP + TAG, "move to center " + latLng); if (latLng == null || latLng.lat == 0.0d || latLng.lon == 0.0d) { - CallerLogger.INSTANCE.e(M_MAP+TAG, "latlng = null or is illegal"); + CallerLogger.INSTANCE.e(M_MAP + TAG, "latlng = null or is illegal"); return; } if (DebugConfig.isDebug()) { - CallerLogger.INSTANCE.d(M_MAP+TAG, Log.getStackTraceString(new Throwable())); + CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable())); } mMapView.getMapAutoViewHelper().animateCamera(new LonLatPoint(latLng.lon, latLng.lat)); } @Override public void showMyLocation(boolean visible) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "showMyLocation1 " + visible); + CallerLogger.INSTANCE.d(M_MAP + TAG, "showMyLocation1 " + visible); // 如果是VR模式 if (isVrMold()) { return; @@ -418,7 +424,7 @@ public class AMapViewWrapper implements IMogoMapView, */ private boolean isVrMold() { boolean isVrMode = mCurrentUI == EnumMapUI.MAP_STYLE_NIGHT_VR || mCurrentUI == EnumMapUI.MAP_STYLE_DAY_VR; - CallerLogger.INSTANCE.d(M_MAP+TAG, "是否是VR模式: " + isVrMode); + CallerLogger.INSTANCE.d(M_MAP + TAG, "是否是VR模式: " + isVrMode); return isVrMode; } @@ -431,14 +437,14 @@ public class AMapViewWrapper implements IMogoMapView, boolean isDayMode = mCurrentUI == EnumMapUI.MAP_STYLE_DAY_VR || mCurrentUI == EnumMapUI.MAP_STYLE_DAY || mCurrentUI == EnumMapUI.MAP_STYLE_DAY_NAV; - CallerLogger.INSTANCE.d(M_MAP+TAG, "是否是白天模式: " + isDayMode); + CallerLogger.INSTANCE.d(M_MAP + TAG, "是否是白天模式: " + isDayMode); return isDayMode; } @Override public void showMyLocation(View view) { if (DebugConfig.isDebug()) { - CallerLogger.INSTANCE.d(M_MAP+TAG, Log.getStackTraceString(new Throwable())); + CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable())); } if (checkAMapView()) { MyLocationStyle style = mMapView.getMapAutoViewHelper().getMyLocationStyle(); @@ -507,7 +513,7 @@ public class AMapViewWrapper implements IMogoMapView, if (isVrMold()) { return; } - CallerLogger.INSTANCE.d(M_MAP+TAG, "setPointToCenter x : " + mapCenterX + " y : " + mapCenterY); + CallerLogger.INSTANCE.d(M_MAP + TAG, "setPointToCenter x : " + mapCenterX + " y : " + mapCenterY); mMapView.getMapAutoViewHelper().setPointToCenter((float) mapCenterX, (float) mapCenterY); } } @@ -544,7 +550,7 @@ public class AMapViewWrapper implements IMogoMapView, if (checkAMapView()) { if (mMapView.getMapAutoViewHelper() != null) { mMapView.getMapAutoViewHelper().setRenderFps(fps); - CallerLogger.INSTANCE.d(M_MAP+TAG, "设置刷新帧率 fps = " + fps); + CallerLogger.INSTANCE.d(M_MAP + TAG, "设置刷新帧率 fps = " + fps); } } } @@ -555,16 +561,16 @@ public class AMapViewWrapper implements IMogoMapView, return; } if (isVrMold()) { - CallerLogger.INSTANCE.w(M_MAP+TAG, "vr 模式下忽略该设置"); + CallerLogger.INSTANCE.w(M_MAP + TAG, "vr 模式下忽略该设置"); return; } - CallerLogger.INSTANCE.i(M_MAP+TAG, "showBounds : " + M_MAP+TAG + " , " + carPosition.toString() + " , " + bound.toShortString() + " , " + lockCarPosition); + CallerLogger.INSTANCE.i(M_MAP + TAG, "showBounds : " + M_MAP + TAG + " , " + carPosition.toString() + " , " + bound.toShortString() + " , " + lockCarPosition); try { LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds(carPosition, lonLats, lockCarPosition); mMapView.getMapAutoViewHelper().setCenter(ObjectUtils.fromMogo(carPosition)); mMapView.getMapAutoViewHelper().moveCamera(CameraUpdateFactory.INSTANCE.newLatLngBounds(latLngBounds, bound.left, bound.right, bound.top, bound.bottom)); } catch (Exception e) { - CallerLogger.INSTANCE.e(M_MAP+TAG, "M_MAP+TAG : " + M_MAP+TAG + " error : " + e); + CallerLogger.INSTANCE.e(M_MAP + TAG, "M_MAP+TAG : " + M_MAP + TAG + " error : " + e); } } @@ -672,6 +678,11 @@ public class AMapViewWrapper implements IMogoMapView, return ObjectUtils.transformCenterLine(MapDataApi.INSTANCE.getCenterLineInfo(lon, lat, angle)); } + @Override + public void result(@NonNull String filePath) { + CallerMapDevaListenerManager.INSTANCE.invokeUploadLogFile(filePath); + } + private static class LocationTask implements Runnable { private MogoLocation location; @@ -698,7 +709,7 @@ public class AMapViewWrapper implements IMogoMapView, MogoLocation currentLocation = ObjectUtils.fromLocation(location); if (Looper.myLooper() == Looper.getMainLooper()) { CallerMapLocationListenerManager.INSTANCE.invokeMapLocationChangeListener(currentLocation, 1); - } else { + } else { if (mLocationTask == null) { mLocationTask = new LocationTask(); } @@ -742,7 +753,7 @@ public class AMapViewWrapper implements IMogoMapView, } else { mIsFirstLocated = true; mIsDelayed = false; - CallerLogger.INSTANCE.d(M_MAP+TAG, "同步定位:" + GsonUtils.toJson(location)); + CallerLogger.INSTANCE.d(M_MAP + TAG, "同步定位:" + GsonUtils.toJson(location)); } } } @@ -755,13 +766,13 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onMapInit() { - CallerLogger.INSTANCE.i(M_MAP+TAG, "autoop--onMapInit: "); + CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--onMapInit: "); MogoMapListenerHandler.getInstance().onMapLoaded(); } @Override public void onMapLoaded() { - CallerLogger.INSTANCE.i(M_MAP+TAG, "autoop--onMapLoaded: "); + CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--onMapLoaded: "); mMapLoaded = true; CameraPosition cameraPosition = mMapView.getMapAutoViewHelper().getCameraPosition(); Trace.beginSection("timer.onCameraChangeFinish"); @@ -788,7 +799,7 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onRoadLoaded(@Nullable String s) { - CallerLogger.INSTANCE.i(M_MAP+TAG, "autoop--onMapLoaded: "); + CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--onMapLoaded: "); } @@ -799,7 +810,7 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onMapViewVisualAngleChange(int i) { - CallerLogger.INSTANCE.d(M_MAP+TAG, " 地图自动更改视距 currentThread : " + Thread.currentThread().getName()); + CallerLogger.INSTANCE.d(M_MAP + TAG, " 地图自动更改视距 currentThread : " + Thread.currentThread().getName()); mVisualAngleMode = getVisualAngleMode(i); MogoMapListenerHandler.getInstance().onMapVisualAngleChanged(mVisualAngleMode); } @@ -849,8 +860,8 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onChangeMapStyle(int styleId) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "currentMapStyle = " + styleId); - CallerLogger.INSTANCE.d(M_MAP+TAG, Log.getStackTraceString(new Throwable())); + CallerLogger.INSTANCE.d(M_MAP + TAG, "currentMapStyle = " + styleId); + CallerLogger.INSTANCE.d(M_MAP + TAG, Log.getStackTraceString(new Throwable())); // 映射地图样式ID到鹰眼样式ID if (styleId == MapAutoApi.MAP_STYLE_DAY @@ -871,7 +882,7 @@ public class AMapViewWrapper implements IMogoMapView, if (mCurrentUI != null) { UiThreadHandler.post(() -> { try { - CallerLogger.INSTANCE.d(M_MAP+TAG, "currentUI = " + mCurrentUI); + CallerLogger.INSTANCE.d(M_MAP + TAG, "currentUI = " + mCurrentUI); MogoMapListenerHandler.getInstance().onMapModeChanged(mCurrentUI); CallerMapStyleListenerManager.INSTANCE.invokeMapStyleChange(styleId); } catch (Exception e) { @@ -891,7 +902,7 @@ public class AMapViewWrapper implements IMogoMapView, TipToast.shortTip(mRtkEnable ? "已开启rtk道路匹配" : "已开启gps道路匹配"); mMapView.getLocationClient().rtkEnable(mRtkEnable); } catch (Exception e) { - CallerLogger.INSTANCE.e(M_MAP+TAG, "rtkEnable has exception : " + e); + CallerLogger.INSTANCE.e(M_MAP + TAG, "rtkEnable has exception : " + e); } } @@ -901,7 +912,7 @@ public class AMapViewWrapper implements IMogoMapView, return; } if (data == null) { - CallerLogger.INSTANCE.d(M_MAP+TAG, "停止使用rtk定位数据"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "停止使用rtk定位数据"); return; } double lon = data.optDouble("lon", -1); @@ -1001,7 +1012,7 @@ public class AMapViewWrapper implements IMogoMapView, * 加载3D模型 */ private void loadPreVehicleModel() { - CallerLogger.INSTANCE.d(M_MAP+TAG, "添加感知模型到地图中……"); + CallerLogger.INSTANCE.d(M_MAP + TAG, "添加感知模型到地图中……"); addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI, "添加感知模型到地图中……preVehicleStrWeiZhi="); addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE, "添加感知模型到地图中……preVehicleStrPeople="); @@ -1038,11 +1049,11 @@ public class AMapViewWrapper implements IMogoMapView, .addPreVehicleModel(typeTrafficId.getType(), typeTrafficId.getTraffic3DNightIconId()); } - CallerLogger.INSTANCE.d(M_MAP+TAG, logMsg + preVehicleStrWeiZhi); + CallerLogger.INSTANCE.d(M_MAP + TAG, logMsg + preVehicleStrWeiZhi); if (preVehicleStrWeiZhi == null) { UiThreadHandler.postDelayed(() -> { - CallerLogger.INSTANCE.w(M_MAP+TAG, "添加感知模型到地图中失败,尝试重复添加……"); + CallerLogger.INSTANCE.w(M_MAP + TAG, "添加感知模型到地图中失败,尝试重复添加……"); addPreVehicleModelWeiZhi(typeTrafficId, logMsg); }, 1000L); } diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index af317b04ce..a590a395cd 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -59,8 +59,6 @@ dependencies { implementation rootProject.ext.dependencies.arouter kapt rootProject.ext.dependencies.aroutercompiler - implementation rootProject.ext.dependencies.mogochainbase - api rootProject.ext.dependencies.mogoaicloudrealtime implementation rootProject.ext.dependencies.coroutinesandroid From de604c402a3003817370b1875b376fbab99d8329 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 12 May 2022 19:25:37 +0800 Subject: [PATCH 04/11] merge problem --- .../core/function/autopilot/adapter/MoGoAdasListenerImpl.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index 11dbe67643..c07c7790ca 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -31,7 +31,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotRotting import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotTrajectory import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showAdUpgradeStatus import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener From b6a5369bcc9bfcc3c4353d76804e1f80c0079092 Mon Sep 17 00:00:00 2001 From: donghongyu Date: Fri, 13 May 2022 11:43:35 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E3=80=8CChange=E3=80=8D=20=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: donghongyu --- .../src/main/java/com/mogo/map/AMapViewWrapper.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 923a512009..32fbf73e36 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -753,7 +753,11 @@ public class AMapViewWrapper implements IMogoMapView, } else { mIsFirstLocated = true; mIsDelayed = false; - CallerLogger.INSTANCE.d(M_MAP + TAG, "同步定位:" + GsonUtils.toJson(location)); + try { + CallerLogger.INSTANCE.d(M_MAP + TAG, "同步定位:" + GsonUtils.toJson(location)); + } catch (Exception e) { + e.printStackTrace(); + } } } } From 36be0a8574820c158271d997cb0e35430c73c7b1 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 13 May 2022 15:36:13 +0800 Subject: [PATCH 06/11] update log version --- .../logcatch/MogoLogCatchManager.kt | 2 +- .../mogo_core_function_devatools/trace/TraceManager.kt | 10 +++++----- gradle.properties | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt index 9e9062402b..6962119c14 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt @@ -233,7 +233,7 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl val file = File(filePath) if (file.isFile) { CallerLogger.d("$M_DEVA$TAG", "uploadFile path : $filePath") -// LogInfoManagerFactory.handleSingleUploadFile(filePath) + LogInfoManagerFactory.handleSingleUploadFile(filePath) }else{ CallerLogger.d("$M_DEVA$TAG", "file absPath : ${file.absolutePath}") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt index 96f33d80d6..f76062a5bb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt @@ -33,15 +33,15 @@ class TraceManager { // Trace过程中进行日志抓取,对日志进行配置 fwBuildMap[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = - FwBuild(true, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_INIT) + FwBuild(true, -1,pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_INIT) fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = - FwBuild(true, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_AUTO) + FwBuild(true, -1,pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_AUTO) fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = - FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_DATA_TRACK) + FwBuild(false, 30,pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_DATA_TRACK) fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = - FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAJECTORY) + FwBuild(false, 30,pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAJECTORY) fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = - FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_VEHICLE) + FwBuild(false, 30,pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_VEHICLE) traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = ChainLogParam(true, "ADAS连接状态") diff --git a/gradle.properties b/gradle.properties index 23f237a927..e3b55500a9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -60,7 +60,7 @@ HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 ################ 外部依赖引用 ################ # loglib -LOGLIB_VERSION=1.2.42 +LOGLIB_VERSION=1.2.44 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION MOGO_NETWORK_VERSION=1.3.55 @@ -82,7 +82,7 @@ MOGO_LOCATION_VERSION=1.3.55 MOGO_TELEMATIC_VERSION=1.3.55 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.1.1.1 +MAP_SDK_VERSION=2.1.1.2 MAP_SDK_OPERATION_VERSION=1.0.13 # websocket WEBSOCKET_VERSION=1.1.7 From b8576667cf9e706d9fea59b918ae6b57cf01bf21 Mon Sep 17 00:00:00 2001 From: xuxinchao <13522809046@163.com> Date: Fri, 13 May 2022 17:38:58 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=B7=A5=E6=8E=A7=E6=9C=BA=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E5=92=8C=E5=BC=82=E5=B8=B8=E4=B8=8A=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、工控机异常上报弹窗提示 2、修改调试窗 3、工控机升级长链接监听 --- .../bindingcar/BindingcarProvider.java | 5 +- .../function/ipcupgrade/IPCUpgradeManager.kt | 64 +++++++++ .../check/VehicleMonitoringManager.kt | 13 ++ .../core/function/report/IPCReportManager.kt | 58 ++++++++ .../core/function/hmi/ui/MoGoHmiFragment.kt | 23 +++- .../hmi/ui/setting/DebugSettingView.kt | 130 +----------------- .../hmi/ui/setting/IPCReportAdapter.kt | 60 ++++++++ .../hmi/ui/setting/IPCReportWindow.kt | 126 +++++++++++++++++ .../hmi/ui/widget/SystemVersionView.kt | 1 + .../src/main/res/layout/item_ipc_report.xml | 81 +++++++++++ .../main/res/layout/view_debug_setting.xml | 27 +--- .../src/main/res/layout/view_ipc_report.xml | 29 ++++ .../src/main/res/values/strings.xml | 2 +- .../data/bindingcar/IPCUpgradeStateInfo.kt | 26 ++++ .../function/api/check/ICheckProvider.java | 9 +- .../api/hmi/warning/IMoGoWaringProvider.kt | 7 + .../function/call/hmi/CallerHmiManager.kt | 9 ++ 17 files changed, 504 insertions(+), 166 deletions(-) create mode 100644 core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/ipcupgrade/IPCUpgradeManager.kt create mode 100644 core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/report/IPCReportManager.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportAdapter.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_ipc_report.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_ipc_report.xml create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/IPCUpgradeStateInfo.kt diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java index 4bf44658d8..7ad9bddaec 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java @@ -1,7 +1,6 @@ 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; @@ -10,6 +9,7 @@ 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.bindingcar.network.BindingcarNetWorkManager; +import com.mogo.eagle.core.function.ipcupgrade.IPCUpgradeManager; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import org.jetbrains.annotations.NotNull; @@ -34,12 +34,13 @@ public class BindingcarProvider implements IMoGoBindingcarProvider { @Override public void onDestroy() { - + IPCUpgradeManager.Companion.getINSTANCE().destroy(); } @Override public void init(Context context) { mContext = context; + IPCUpgradeManager.Companion.getINSTANCE().initServer(context); } /** diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/ipcupgrade/IPCUpgradeManager.kt b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/ipcupgrade/IPCUpgradeManager.kt new file mode 100644 index 0000000000..3adbbbeeb3 --- /dev/null +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/ipcupgrade/IPCUpgradeManager.kt @@ -0,0 +1,64 @@ +package com.mogo.eagle.core.function.ipcupgrade + +import android.content.Context +import android.util.Log +import com.mogo.aicloud.services.socket.IMogoOnMessageListener +import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager +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 + +/** + * @author XuXinChao + * @description 工控机镜像版本升级管理 + * @since: 2022/5/12 + */ +class IPCUpgradeManager: IMogoOnMessageListener , + IMoGoAutopilotStatusListener { + + companion object{ + const val TAG ="IPCUpgradeManager" + const val IPC_UPGRADE_MSG_TYPE = 50000 + val INSTANCE: IPCUpgradeManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){ + IPCUpgradeManager() + } + } + + private var mContext: Context? = null + + fun initServer(context: Context){ + mContext = context + //添加长链接监听 + MogoAiCloudSocketManager.getInstance(context) + .registerOnMessageListener(IPC_UPGRADE_MSG_TYPE, this) + // 添加 ADAS状态 监听 + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + } + + override fun target(): Class { + return IPCUpgradeStateInfo::class.java + } + + override fun onMsgReceived(obj: IPCUpgradeStateInfo?) { + + } + + /** + * 自动驾驶状态信息 + * @param autoPilotStatusInfo 状态信息 + */ + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + + } + + fun destroy(){ + //注销长链接监听 + MogoAiCloudSocketManager.getInstance(mContext) + .unregisterLifecycleListener(IPC_UPGRADE_MSG_TYPE) + // 移除 ADAS状态 监听 + CallerAutoPilotStatusListenerManager.removeListener(TAG) + mContext = null + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt index 5179e29883..becb606e4c 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.check.net.CheckNetWork.checkNetWork import com.mogo.eagle.core.function.check.net.CheckResultData import com.mogo.eagle.core.function.check.view.CheckActivity import com.mogo.eagle.core.function.check.view.CheckDialog +import com.mogo.eagle.core.function.report.IPCReportManager import com.mogo.eagle.core.utilcode.util.* import com.mogo.module.common.MogoApisHandler import com.mogo.service.statusmanager.IMogoStatusChangedListener @@ -31,6 +32,10 @@ class VehicleMonitoringManager : ICheckProvider, IMogoStatusChangedListener { private val mListeners: ConcurrentHashMap = ConcurrentHashMap() private var hasTipShow = false //是否已经弹框提示 var dialog: CheckDialog? = null + + override val functionName: String + get() = "VehicleMonitoringManager" + override fun init(context: Context) { mContext = context MogoApisHandler.getInstance().apis.statusManagerApi.registerStatusChangedListener( @@ -38,6 +43,8 @@ class VehicleMonitoringManager : ICheckProvider, IMogoStatusChangedListener { StatusDescriptor.MAIN_PAGE_RESUME, this ) + //开启工控机监控节点上报服务 + IPCReportManager.INSTANCE.initServer() } override fun registerVehicleMonitoringListener(module: String, listener: IMogoCheckListener) { @@ -113,4 +120,10 @@ class VehicleMonitoringManager : ICheckProvider, IMogoStatusChangedListener { } } } + + override fun onDestroy() { + //停止工控机监控节点上报服务 + IPCReportManager.INSTANCE.destroy() + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/report/IPCReportManager.kt b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/report/IPCReportManager.kt new file mode 100644 index 0000000000..d4f41bdca5 --- /dev/null +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/report/IPCReportManager.kt @@ -0,0 +1,58 @@ +package com.mogo.eagle.core.function.report + +import com.mogo.eagle.core.data.config.FunctionBuildConfig +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.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils +import mogo_msg.MogoReportMsg + +/** + * @author XuXinChao + * @description 工控机监控节点信息上报管理 + * @since: 2022/5/12 + */ +class IPCReportManager : IMoGoAutopilotStatusListener { + + private var ipcReportList = arrayListOf() + + companion object{ + const val TAG ="IPCReportManager" + val INSTANCE: IPCReportManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + IPCReportManager() + } + } + + fun initServer(){ + // 添加 ADAS状态 监听 + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + } + + /** + *工控机监控节点上报 + */ + override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { + guardianInfo?.let{ + if(it.level=="error"){ + if(ipcReportList.size>20){ + ipcReportList.removeLast() + } + ipcReportList.add(0, + ReportEntity(TimeUtils.millis2String(System.currentTimeMillis()), + it.src,it.level,it.msg,it.code,it.resultList,it.actionsList)) + //当前不处于美化模式时,展示监控节点上报 + if(!FunctionBuildConfig.isDemoMode){ + CallerHmiManager.showIPCReportWindow(ipcReportList) + } + } + } + } + + fun destroy(){ + // 移除 ADAS状态 监听 + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 715a543bc5..5b9e5ac910 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -11,9 +11,9 @@ import android.view.WindowManager.LayoutParams import android.view.animation.* import androidx.lifecycle.lifecycleScope import com.alibaba.android.arouter.facade.annotation.Route +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.voice.AIAssist -import com.mogo.eagle.core.data.autopilot.AdUpgradeStateHelper import com.mogo.eagle.core.data.camera.CameraEntity import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig @@ -47,6 +47,7 @@ import com.mogo.eagle.core.function.hmi.ui.camera.CameraListView import com.mogo.eagle.core.function.hmi.ui.notice.NoticeBannerView import com.mogo.eagle.core.function.hmi.ui.notice.NoticeNormalBannerView import com.mogo.eagle.core.function.hmi.ui.setting.DebugSettingView +import com.mogo.eagle.core.function.hmi.ui.setting.IPCReportWindow import com.mogo.eagle.core.function.hmi.ui.setting.ReportListFloatWindow import com.mogo.eagle.core.function.hmi.ui.tools.AutoPilotAndCheckView import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView @@ -62,6 +63,7 @@ import kotlinx.coroutines.* import mogo_msg.MogoReportMsg import record_cache.RecordPanelOuterClass import java.util.* +import kotlin.collections.ArrayList /** @@ -112,6 +114,8 @@ class MoGoHmiFragment : MvpFragment(), private var reportList = arrayListOf() //工控机上报列表悬浮窗 private var reportListFloatWindow: ReportListFloatWindow?=null + private var ipcReportWindow: IPCReportWindow?=null + override fun vipIdentification(visible: Boolean) { ThreadUtils.runOnUiThread { @@ -210,13 +214,28 @@ class MoGoHmiFragment : MvpFragment(), ToastUtils.showShort("重启成功") } else { //重启失败 - msg?.let { + msg.let { ToastUtils.showShort(it) } } } } + /** + * 展示工控机监控上报数据 + * @param reportList 上报数据列表 + */ + override fun showIPCReportWindow(reportList: ArrayList) { + ThreadUtils.runOnUiThread{ + if(ipcReportWindow==null){ + ipcReportWindow= activity?.let { IPCReportWindow(it) } + ipcReportWindow?.showFloatWindow() + AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice("嘟") + } + ipcReportWindow?.refreshData(reportList) + } + } + /** * 设置 V2X 通知 代理View */ 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 d4d2eb4e49..95998c8b7a 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 @@ -731,114 +731,7 @@ class DebugSettingView @JvmOverloads constructor( CallerAutoPilotManager.recordPackage() } } - - /** - * 工控机升级 - */ - btnSystemUpgrade.onClick { - if (AppConfigInfo.isConnectAutopilot) { - Logger.i( - TAG, - "upgradeMode=" + upgradeMode + " downloadStatus=" + downloadStatus + " upgradeStatus=" + upgradeStatus - ) - if (AdUpgradeStateHelper.isDownloading(downloadStatus)) { - //点击Toast提示:下载剩余时间 - ToastUtils.showShort( - "预计" + AdUpgradeStateHelper.getRemainingTime( - totalProgress, - previousProgress, - currentProgress - ) + "下载完成" - ) - } else if (AdUpgradeStateHelper.getUpgradeStatus()) { - //工控机状态为“升级中” - ToastUtils.showShort("新版本升级中,预计5分钟升级完成") - } else if (AdUpgradeStateHelper.isUpgradeFailed(upgradeStatus)) { - //如果升级失败,则Toast提示:升级失败,请联系运维人员 - ToastUtils.showShort("升级失败,请联系运维人员") - } else if (AdUpgradeStateHelper.isHintUpgradeMode(upgradeMode) && AdUpgradeStateHelper.isDownloadFinish( - downloadStatus, - upgradeStatus - ) - ) { - //如果升级模式为“提示升级”,并且下载状态为已经下载完成,点击弹出升级确认弹窗 - if (adUpgradeDialog == null) { - adUpgradeDialog = AdUpgradeDialog(context) - adUpgradeDialog?.setClickListener(object : AdUpgradeDialog.ClickListener { - override fun confirm() { - if (mAutoPilotStatusInfo?.state == 2) { - //当前处于自动驾驶状态,不可进行升级,Toast提示 - ToastUtils.showShort("升级前请先退出自动驾驶模式") - } else { - //确认升级 - Logger.i(TAG, "upgrade confirm") - //设置当前状态为“升级中” - AdUpgradeStateHelper.setUpgradeStatus(true) - CallerAutoPilotManager.setIPCUpgradeAffirm() - } - } - - override fun cancel() { - //取消升级 - Logger.i(TAG, "upgrade cancel") - //取消升级命令不下发 -// CallerAutoPilotManager.setIPCUpgradeCancel() - } - - }) - } - adUpgradeDialog?.showUpgradeDialog() - } else { - ToastUtils.showShort("当前工控机处于最新版本状态,不可升级") - } - } else { - ToastUtils.showShort("域控制器未连接") - } - - - } - - /** - * 重启系统 - */ - btnSystemRestart.onClick { - if (AppConfigInfo.isConnectAutopilot) { - if (dockerRebootDialog == null) { - dockerRebootDialog = DockerRebootDialog(context) - dockerRebootDialog?.setClickListener(object : DockerRebootDialog.ClickListener { - override fun confirm() { - if (mAutoPilotStatusInfo?.state == 2) { - //当前处于自动驾驶状态,不可进行重启,Toast提示 - ToastUtils.showShort("请先退出自动驾驶状态") - } else if (AdUpgradeStateHelper.showCannotReboot( - downloadStatus, - upgradeStatus - ) - ) { - //当工控机处于下载或者升级状态,需要先进行升级 - ToastUtils.showShort("请先完成新自动驾驶系统的下载/升级") - } else { - //确认重启 - Logger.i(TAG, "reboot confirm") - CallerAutoPilotManager.setIPCReboot() - } - } - - override fun cancel() { - //取消重启 - Logger.i(TAG, "reboot cancel") - } - - }) - } - dockerRebootDialog?.showUpgradeDialog() - } else { - ToastUtils.showShort("域控制器未连接") - } - - - } - + } /** @@ -857,27 +750,6 @@ class DebugSettingView @JvmOverloads constructor( } } - /** - * 设置工控机下载、升级状态信息 - * @param upgradeMode 升级模式(提示升级、静默升级) - * @param downloadStatus 下载状态 - * @param currentProgress 当前已经下载包体大小 - * @param totalProgress 下载包体总大小 - * @param downloadVersion 下载版本 - * @param upgradeStatus 升级状态 - */ - fun setAdUpgradeInfo( - upgradeMode: Int, downloadStatus: Int, currentProgress: Int, totalProgress: Int, - downloadVersion: String, upgradeStatus: Int - ) { - this.upgradeMode = upgradeMode - this.downloadStatus = downloadStatus - this.previousProgress = this.currentProgress - this.currentProgress = currentProgress - this.totalProgress = totalProgress - this.downloadVersion = downloadVersion - this.upgradeStatus = upgradeStatus - } /** * 设置Hmi点击监听 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportAdapter.kt new file mode 100644 index 0000000000..b6ee309043 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportAdapter.kt @@ -0,0 +1,60 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.report.ReportEntity +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.function.hmi.R + +/** + * @author XuXinChao + * @description 工控机异常节点上报适配器 + * @since: 2022/5/12 + */ +class IPCReportAdapter: RecyclerView.Adapter(){ + + private var data:List? = null + + fun setData( data: List?){ + this.data = data + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IPCReportHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_ipc_report, parent, false) + return IPCReportHolder(view) + } + + override fun onBindViewHolder(holder: IPCReportHolder, position: Int) { + data?.let {it -> + val reportEntity = it[position] + reportEntity.let { + holder.tvReportTimeContent.text = it.time + var resultStr = "发生异常" + for (result in it.resultList){ + resultStr = "${resultStr}-${CallerAutoPilotManager.getReportResultDesc(result)}" + } + holder.tvReportResultContent.text = resultStr + holder.tvReportMsgContent.text = it.msg + var actionStr = "" + for (action in it.actionsList){ + actionStr = "${actionStr}-${CallerAutoPilotManager.getReportActionDesc(action)}" + } + holder.tvReportActionContent.text = actionStr + } + } + } + + override fun getItemCount() = data?.size ?: 0 + + class IPCReportHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ + var tvReportTimeContent: TextView = itemView.findViewById(R.id.tvReportTimeContent) + var tvReportResultContent: TextView = itemView.findViewById(R.id.tvReportResultContent) + var tvReportMsgContent: TextView = itemView.findViewById(R.id.tvReportMsgContent) + var tvReportActionContent: TextView = itemView.findViewById(R.id.tvReportActionContent) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt new file mode 100644 index 0000000000..559a5def67 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/IPCReportWindow.kt @@ -0,0 +1,126 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.app.Activity +import android.graphics.PixelFormat +import android.util.DisplayMetrics +import android.view.* +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.report.ReportEntity +import com.mogo.eagle.core.function.hmi.R +import java.lang.reflect.Field + +/** + * @author XuXinChao + * @description 工控机异常节点上报 + * @since: 2022/5/12 + */ +class IPCReportWindow constructor(activity: Activity) : View.OnTouchListener{ + + private var mActivity: Activity = activity + private var mWindowParams: WindowManager.LayoutParams? = null + private var mWindowManager: WindowManager? = null + private lateinit var rvIPCReport: RecyclerView + private var ipcReportAdapter: IPCReportAdapter?=null + + private lateinit var mFloatLayout: View + private var mInViewX = 0f + private var mInViewY = 0f + private var mDownInScreenX = 0f + private var mDownInScreenY = 0f + private var mInScreenX = 0f + private var mInScreenY = 0f + + init { + initFloatWindow(); + } + + private fun initFloatWindow(){ + mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_ipc_report, null) as View + mFloatLayout.setOnTouchListener(this) + rvIPCReport= mFloatLayout.findViewById(R.id.rv_ipc_report) + mWindowParams = WindowManager.LayoutParams() + mWindowManager = mActivity.windowManager + mWindowParams?.let { + it.format = PixelFormat.RGBA_8888 + it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + it.gravity = Gravity.START or Gravity.TOP + it.width = 800 + it.height = 1000 + it.alpha = 0.9f + } + ipcReportAdapter = IPCReportAdapter() + rvIPCReport.layoutManager = LinearLayoutManager(mActivity, + LinearLayoutManager.VERTICAL,false) + rvIPCReport.adapter = ipcReportAdapter + } + + fun refreshData(data:List){ + ipcReportAdapter?.setData(data) + ipcReportAdapter?.notifyDataSetChanged() + } + + override fun onTouch(v: View?, motionEvent: MotionEvent?): Boolean { + when (motionEvent?.action) { + MotionEvent.ACTION_DOWN -> { + // 获取相对View的坐标,即以此View左上角为原点 + mInViewX = motionEvent.x + mInViewY = motionEvent.y + // 获取相对屏幕的坐标,即以屏幕左上角为原点 + mDownInScreenX = motionEvent.rawX + mDownInScreenY = motionEvent.rawY - getSysBarHeight(mActivity) + mInScreenX = motionEvent.rawX + mInScreenY = motionEvent.rawY - getSysBarHeight(mActivity) + } + MotionEvent.ACTION_MOVE -> { + // 更新浮动窗口位置参数 + mInScreenX = motionEvent.rawX + mInScreenY = motionEvent.rawY - getSysBarHeight(mActivity) + mWindowParams!!.x = (mInScreenX - mInViewX).toInt() + mWindowParams!!.y = (mInScreenY - mInViewY).toInt() + // 手指移动的时候更新小悬浮窗的位置 + mWindowManager!!.updateViewLayout(mFloatLayout, mWindowParams) + } +// MotionEvent.ACTION_UP -> // 如果手指离开屏幕时,xDownInScreen和xInScreen相等,且yDownInScreen和yInScreen相等,则视为触发了单击事件。 +// if (mDownInScreenX === mInScreenX && mDownInScreenY === mInScreenY) { +// } + } + return true + } + + fun showFloatWindow() { + if (mFloatLayout.parent == null) { + val metrics = DisplayMetrics() + // 默认固定位置,靠屏幕右边缘的中间 + mWindowManager!!.defaultDisplay.getMetrics(metrics) + mWindowParams!!.x = metrics.widthPixels + mWindowParams!!.y = metrics.heightPixels / 2 - getSysBarHeight(mActivity) + mWindowManager!!.addView(mFloatLayout, mWindowParams) + } + } + + fun hideFloatWindow() { + if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout) + } + + // 获取系统状态栏高度 + private fun getSysBarHeight(activity: Activity): Int { + val c: Class<*> + val obj: Any + val field: Field + val x: Int + var sbar = 0 + try { + c = Class.forName("com.android.internal.R\$dimen") + obj = c.newInstance() + field = c.getField("status_bar_height") + x = field.get(obj).toString().toInt() + sbar = activity.resources.getDimensionPixelSize(x) + } catch (e1: Exception) { + e1.printStackTrace() + } + return sbar + } + + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt index 735fa690f6..6787f8fb1e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt @@ -104,6 +104,7 @@ class SystemVersionView @JvmOverloads constructor( CallerLogger.i("$M_HMI$$TAG", "upgrade confirm") //设置当前状态为“升级中” AdUpgradeStateHelper.setUpgradeStatus(true) + //TODO CallerAutoPilotManager.setIPCUpgradeAffirm() //将角标设为升级中 ivAdStatus?.setImageResource(R.drawable.icon_upgrading) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_ipc_report.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_ipc_report.xml new file mode 100644 index 0000000000..6841bc661d --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_ipc_report.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 3e00620d39..c0cfc04875 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -636,36 +636,13 @@ android:layout_height="1dp" android:background="#F0F0F0" app:layout_constraintTop_toBottomOf="@id/btnRecordPackage" /> - -