From 9515cb7db2176ce1a9c1cd3fe70e607a11069d3f Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 6 Oct 2022 23:36:07 +0800 Subject: [PATCH] =?UTF-8?q?[change]=20=E4=B8=B4=E6=97=B6=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E6=97=A5=E5=BF=97=20=E7=94=A8=E4=BA=8E=E5=8D=A1=E9=A1=BF?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/support/adas/high/AdasChannel.java | 42 +++++++++++++++++-- .../high/msg/ArrivalNotificationMessage.java | 9 ++++ .../adas/high/msg/AutopilotStateMessage.java | 9 ++++ .../adas/high/msg/BasicInfoReqMessage.java | 9 ++++ .../adas/high/msg/CarConfigRespMessage.java | 8 ++++ .../adas/high/msg/GlobalPathRespMessage.java | 9 ++++ .../adas/high/msg/GnssInfoMessage.java | 9 ++++ .../msg/PerceptionTrafficLightMessage.java | 9 ++++ .../msg/PlanningDecisionStateMessage.java | 8 ++++ .../adas/high/msg/PlanningObjectsMessage.java | 9 ++++ .../PredictionObstacleTrajectoryMessage.java | 9 ++++ .../high/msg/RecordDataConfigRespMessage.java | 9 ++++ .../adas/high/msg/RecordResultMessage.java | 9 ++++ .../support/adas/high/msg/ReportMessage.java | 9 ++++ .../adas/high/msg/StatusQueryRespMessage.java | 12 +++++- .../adas/high/msg/TrackedObjectsMessage.java | 9 ++++ .../adas/high/msg/TrajectoryMessage.java | 9 ++++ .../adas/high/msg/VehicleStateMessage.java | 9 ++++ .../support/adas/high/msg/WarnMessage.java | 9 ++++ .../support/adas/high/protocol/RawData.java | 1 + .../adas/high/queue/WSByteQueueManager.java | 2 +- .../support/adas/high/socket/FpgaSocket.java | 22 ++++++++-- .../adas/high/thread/DispatchHandler.java | 12 ++++++ 23 files changed, 232 insertions(+), 10 deletions(-) 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 36c75f03ed..daa4366e6e 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 @@ -12,6 +12,7 @@ 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.os.SystemClock; import android.text.TextUtils; import androidx.annotation.NonNull; @@ -319,16 +320,17 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return; } ByteString byteString = ByteString.of(bytes); - decoderRaw(byteString); + decoderRaw(0, byteString); } //数据解析以及调用分发 - private void decoderRaw(ByteString byteString) { + private void decoderRaw(long receiveTime, ByteString byteString) { //拆Header try { if (rawUnpack != null) { RawData raw = rawUnpack.read(byteString); + raw.receiveTime = receiveTime; if (raw.getProtocolStatus() == ProtocolStatus.SUCCEED) { MessagePad.Header header = MessagePad.Header.parser().parseFrom(byteString.toByteArray(), raw.getOutHeaderLength(), raw.getOffsetValue() - raw.getOutHeaderLength()); raw.setHeader(header); @@ -353,6 +355,20 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } } + //TODO 计算耗时 临时测试 + public static void calculateTimeConsumingOnDispatchRaw(String who, long receiveTime) { + if (CupidLogUtils.isEnableLog()) { + long time = SystemClock.elapsedRealtime() - receiveTime; + CupidLogUtils.i("TimeConsuming", who + " 从接收到解析耗时=" + time + "毫秒"); + } + } + //TODO 计算耗时 临时测试 + public static void calculateTimeConsumingBusiness(String who, long receiveTime) { + if (CupidLogUtils.isEnableLog()) { + long time = SystemClock.elapsedRealtime() - receiveTime; + CupidLogUtils.i("TimeConsuming", who + " 业务处理耗时=" + time + "毫秒"); + } + } /** * 分发和解析 * @@ -367,7 +383,12 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec int len = raw.getPackageLengthValue() - raw.getOffsetValue(); byte[] bytes = new byte[len]; System.arraycopy(raw.originalData.toByteArray(), raw.getOffsetValue(), bytes, 0, len); + calculateTimeConsumingOnDispatchRaw("3D点云", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); mAdasListener.onPointCloud(bytes); + calculateTimeConsumingBusiness("3D点云", nowTime); } else { if (rawUnpack != null) { if (raw.getProtocolStatus() == ProtocolStatus.SUCCEED) { @@ -473,13 +494,26 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec public void onMessage(String message) { } + + //TODO 计算耗时 临时测试 + private void calculateTimeConsumingOnMessage(long oldTime) { + if (CupidLogUtils.isEnableLog()) { + long time = SystemClock.elapsedRealtime() - oldTime; + CupidLogUtils.i("TimeConsuming", "分发与乘客屏转发耗时=" + time + "毫秒"); + } + } + @Override - public void onMessage(ByteString bytes) throws InvalidProtocolBufferException { - decoderRaw(bytes); + public void onMessage(long receiveTime, ByteString bytes) throws InvalidProtocolBufferException { + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); + decoderRaw(receiveTime, bytes); //司机屏工控机数据转发 if (!adasOptions.isClient() && onMultiDeviceListener != null) { onMultiDeviceListener.onForwardingDriverIPCMessage(bytes.toByteArray()); } + calculateTimeConsumingOnMessage(nowTime); } private void notFoundAddress() { diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java index 896acaa4b7..dd1733a2d5 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ArrivalNotificationMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -14,9 +18,14 @@ public class ArrivalNotificationMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.ArrivalNotification arrivalNotification = MessagePad.ArrivalNotification.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("到站提醒", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onArrivalNotification(raw.getHeader(), arrivalNotification); } + AdasChannel.calculateTimeConsumingBusiness("到站提醒", nowTime); // CupidLogUtils.e("到站提醒--->" + arrivalNotification.toString()); } 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 cca989cda2..7a2b13a28c 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 @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -14,9 +18,14 @@ public class AutopilotStateMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.AutopilotState autopilotState = MessagePad.AutopilotState.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("自动驾驶状态", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onAutopilotState(raw.getHeader(), autopilotState); } + AdasChannel.calculateTimeConsumingBusiness("自动驾驶状态", nowTime); // CupidLogUtils.e("自动驾驶状态--->" + autopilotState.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java index 0f95e2f1b3..ca2280d1da 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BasicInfoReqMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -14,9 +18,14 @@ public class BasicInfoReqMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.BasicInfoReq autopilotState = MessagePad.BasicInfoReq.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("自动驾驶设备基础信息请求", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onBasicInfoReq(raw.getHeader(), autopilotState); } + AdasChannel.calculateTimeConsumingBusiness("自动驾驶设备基础信息请求", nowTime); // CupidLogUtils.e("自动驾驶设备基础信息请求--->" + autopilotState.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java index 8eef3d5f30..61c6d1b9f4 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java @@ -1,6 +1,9 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.CupidLogUtils; @@ -16,10 +19,15 @@ public class CarConfigRespMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.CarConfigResp carConfigResp = MessagePad.CarConfigResp.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("车机基础信息应答", raw.receiveTime); AdasManager.getInstance().setCarConfig(carConfigResp); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onCarConfigResp(raw.getHeader(), carConfigResp); } + AdasChannel.calculateTimeConsumingBusiness("车机基础信息应答", nowTime); CupidLogUtils.e("车机基础信息应答--->" + carConfigResp.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java index d6b9db27bb..b5665b7fb6 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GlobalPathRespMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -14,9 +18,14 @@ public class GlobalPathRespMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.GlobalPathResp globalPathResp = MessagePad.GlobalPathResp.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("自动驾驶路径应答", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onGlobalPathResp(raw.getHeader(), globalPathResp); } + AdasChannel.calculateTimeConsumingBusiness("自动驾驶路径应答", nowTime); // CupidLogUtils.e("自动驾驶路径应答--->" + globalPathResp.toString()); } } 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 6d4fc287ee..98d7b403d5 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 @@ -1,8 +1,12 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -15,9 +19,14 @@ public class GnssInfoMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.GnssInfo trajectory = MessagePad.GnssInfo.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("惯导信息", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onGnssInfo(raw.getHeader(), trajectory); } + AdasChannel.calculateTimeConsumingBusiness("惯导信息", nowTime); // CupidLogUtils.e("惯导信息--->" + trajectory.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionTrafficLightMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionTrafficLightMessage.java index daf930172b..e074045af6 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionTrafficLightMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionTrafficLightMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import perception.TrafficLightOuterClass; @@ -14,8 +18,13 @@ public class PerceptionTrafficLightMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { TrafficLightOuterClass.TrafficLights trafficLights = TrafficLightOuterClass.TrafficLights.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("感知红绿灯", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onPerceptionTrafficLight(raw.getHeader(), trafficLights); } + AdasChannel.calculateTimeConsumingBusiness("感知红绿灯", nowTime); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java index c04815d910..0c0f4736bc 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java @@ -1,6 +1,9 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.CupidLogUtils; @@ -16,8 +19,13 @@ public class PlanningDecisionStateMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.PlanningActionMsg planningActionMsg = MessagePad.PlanningActionMsg.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("planning决策状态", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onPlanningActionMsg(raw.getHeader(), planningActionMsg); } + AdasChannel.calculateTimeConsumingBusiness("planning决策状态", nowTime); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningObjectsMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningObjectsMessage.java index 5011a6a83e..439fd5b33a 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningObjectsMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningObjectsMessage.java @@ -1,8 +1,12 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -15,8 +19,13 @@ public class PlanningObjectsMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.PlanningObjects planningObjects = MessagePad.PlanningObjects.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("planning障碍物", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onPlanningObjects(raw.getHeader(), planningObjects); } + AdasChannel.calculateTimeConsumingBusiness("planning障碍物", nowTime); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PredictionObstacleTrajectoryMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PredictionObstacleTrajectoryMessage.java index 816063bb4d..466670f770 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PredictionObstacleTrajectoryMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PredictionObstacleTrajectoryMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import prediction.Prediction; @@ -14,8 +18,13 @@ public class PredictionObstacleTrajectoryMessage extends MyAbstractMessageHandle @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { Prediction.mPredictionObjects objects = Prediction.mPredictionObjects.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("他车轨迹预测", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onPredictionObstacleTrajectory(raw.getHeader(), objects); } + AdasChannel.calculateTimeConsumingBusiness("他车轨迹预测", nowTime); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordDataConfigRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordDataConfigRespMessage.java index e0bbdfee0d..e99f4801d1 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordDataConfigRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordDataConfigRespMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -14,8 +18,13 @@ public class RecordDataConfigRespMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.RecordDataConfig config = MessagePad.RecordDataConfig.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("数据采集配置应答", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onRecordDataConfigResp(raw.getHeader(), config); } + AdasChannel.calculateTimeConsumingBusiness("数据采集配置应答", nowTime); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java index 4a2a52c92e..475b0466f0 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/RecordResultMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import record_cache.RecordPanelOuterClass; @@ -14,9 +18,14 @@ public class RecordResultMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { RecordPanelOuterClass.RecordPanel recordPanel = RecordPanelOuterClass.RecordPanel.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("数据采集结果", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onRecordResult(raw.getHeader(), recordPanel); } + AdasChannel.calculateTimeConsumingBusiness("数据采集结果", nowTime); // CupidLogUtils.e("数据采集结果--->" + recordPanel.toString());; } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java index 3221d253d0..171deba19d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ReportMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo_msg.MogoReportMsg; @@ -14,8 +18,13 @@ public class ReportMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MogoReportMsg.MogoReportMessage mogoReportMessage = MogoReportMsg.MogoReportMessage.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("监控事件报告", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onReportMessage(raw.getHeader(), mogoReportMessage); } + AdasChannel.calculateTimeConsumingBusiness("监控事件报告", nowTime); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/StatusQueryRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/StatusQueryRespMessage.java index 48b22ceae7..be81f42258 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/StatusQueryRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/StatusQueryRespMessage.java @@ -1,11 +1,14 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.AutopilotAbilityManager; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; -import mogo.telematics.pad.MessagePad; import system_master.SystemStatusInfo; /** @@ -15,11 +18,16 @@ public class StatusQueryRespMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { - SystemStatusInfo.StatusInfo statusInfo= SystemStatusInfo.StatusInfo.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + SystemStatusInfo.StatusInfo statusInfo = SystemStatusInfo.StatusInfo.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("状态查询应答", raw.receiveTime); AutopilotAbilityManager.getInstance().setStatusInfo(statusInfo); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onStatusQueryResp(raw.getHeader(), statusInfo); } + AdasChannel.calculateTimeConsumingBusiness("状态查询应答", nowTime); // CupidLogUtils.e("状态查询应答--->" + statusInfo.toString()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java index 51af72a8b9..7bda2d669c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrackedObjectsMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -16,9 +20,14 @@ public class TrackedObjectsMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.TrackedObjects trackedObjects = MessagePad.TrackedObjects.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("障碍物信息", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onTrackedObjects(raw.getHeader(), trackedObjects); } + AdasChannel.calculateTimeConsumingBusiness("障碍物信息", nowTime); // CupidLogUtils.e("障碍物信息--->" + trackedObjects.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java index 648b8af1f5..5749ba1ef8 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TrajectoryMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -14,9 +18,14 @@ public class TrajectoryMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.Trajectory trajectory = MessagePad.Trajectory.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("车前引导线", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onTrajectory(raw.getHeader(), trajectory); } + AdasChannel.calculateTimeConsumingBusiness("车前引导线", nowTime); // CupidLogUtils.e("车前引导线--->" + trajectory.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java index 90255446a6..ccfc0ec84d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java @@ -1,8 +1,12 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.AutopilotAbilityManager; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import chassis.VehicleStateOuterClass; @@ -15,10 +19,15 @@ public class VehicleStateMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { VehicleStateOuterClass.VehicleState vehicleState = VehicleStateOuterClass.VehicleState.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("底盘信息", raw.receiveTime); AutopilotAbilityManager.getInstance().setVehicleState(vehicleState); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onVehicleState(raw.getHeader(), vehicleState); } + AdasChannel.calculateTimeConsumingBusiness("底盘信息", nowTime); // CupidLogUtils.e("底盘信息--->" + vehicleState.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java index c79d9ee8d6..e6c7f8e30c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/WarnMessage.java @@ -1,7 +1,11 @@ package com.zhidao.support.adas.high.msg; +import android.os.SystemClock; + import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import mogo.telematics.pad.MessagePad; @@ -15,9 +19,14 @@ public class WarnMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { MessagePad.Warn warn = MessagePad.Warn.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("预警数据", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { adasListener.onWarn(raw.getHeader(), warn); } + AdasChannel.calculateTimeConsumingBusiness("预警数据", nowTime); // CupidLogUtils.e("预警数据--->" + warn.toString()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java index 8fdb1f577d..ca42eea8b6 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/protocol/RawData.java @@ -15,6 +15,7 @@ import okio.ByteString; * 原始数据格式:MagicCode(2字节 6d67) 偏移量(2字节 从原始数据头开始一直到Body头) 数据包总长度(4字节) Header Body */ public class RawData { + public long receiveTime;//TODO 计算耗时 临时测试 /** * 原始数据 */ diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/queue/WSByteQueueManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/queue/WSByteQueueManager.java index b218efb98b..9156bff089 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/queue/WSByteQueueManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/queue/WSByteQueueManager.java @@ -65,7 +65,7 @@ public class WSByteQueueManager { ByteString data = mPublicQueue.remove(); // CupidLogUtils.w("===>socket消费者" + data + ",内容个数" + mPublicQueue.getSize() + "\n所有数据" + mPublicQueue.iteratorData()); if (webSocketConnectListener != null) { - webSocketConnectListener.onMessage(data); + webSocketConnectListener.onMessage(0,data); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java index c23ad42f92..5655f47219 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java @@ -8,6 +8,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_CONNEC import static com.zhidao.support.adas.high.common.Constants.RESOURCE_PATH; import static com.zhidao.support.adas.high.common.Constants.WS_IP_HOST_HEAD; +import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; @@ -187,8 +188,8 @@ public class FpgaSocket implements IWebSocket { void onWebSocketConnectFailed(String t); void onMessage(String message); - - void onMessage(ByteString bytes) throws InvalidProtocolBufferException; + //TODO 计算耗时 临时测试 + void onMessage(long receiveTime, ByteString bytes) throws InvalidProtocolBufferException; } public void setWebSocketListener(IWebSocketConnectListener listener) { @@ -240,6 +241,17 @@ public class FpgaSocket implements IWebSocket { } } + //TODO 计算耗时 临时测试 + private long oldTime; + + private void calculateTimeConsuming(long nowTime) { + if (CupidLogUtils.isEnableLog()) { + long time = nowTime - oldTime; + oldTime = nowTime; + CupidLogUtils.i("TimeConsuming", "WebSocket接收时间间隔=" + time + "毫秒"); + } + } + @ChainLog(linkChainLog = -1, linkCode = CHAIN_LINK_ADAS, endpoint = TracingConstants.Endpoint.PAD, @@ -249,12 +261,16 @@ public class FpgaSocket implements IWebSocket { @Override public void onMessage(@NonNull WebSocket webSocket, @NonNull ByteString bytes) { super.onMessage(webSocket, bytes); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); + calculateTimeConsuming(nowTime); if (AdasChannel.isUseQueue) { WSByteQueueManager.getInstance().addQueueData(bytes); } else { try { if (mWebSocketConnectListener != null) - mWebSocketConnectListener.onMessage(bytes); + mWebSocketConnectListener.onMessage(nowTime, bytes); } catch (InvalidProtocolBufferException e) { e.printStackTrace(); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/thread/DispatchHandler.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/thread/DispatchHandler.java index 5badcbe4ab..b33334ba03 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/thread/DispatchHandler.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/thread/DispatchHandler.java @@ -1,12 +1,15 @@ package com.zhidao.support.adas.high.thread; +import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; +import android.os.MessageQueue; import androidx.annotation.NonNull; +import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; import java.lang.ref.WeakReference; @@ -64,6 +67,15 @@ public class DispatchHandler { * @param msg */ protected void handleMessage(Message msg) { + //TODO 计算耗时 临时测试 + if (CupidLogUtils.isEnableLog()) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (mThread != null) { + MessageQueue queue = mThread.getLooper().getQueue(); + CupidLogUtils.i("TimeConsuming", mThread.getName() + " 当前消息队列是否处于空闲状态=" + queue.isIdle()); + } + + } listener.onDispatchRaw(messageType, (RawData) msg.obj); }