From d9b47b3326960a786466c2a4389a850c6a21e1c6 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 6 Mar 2025 10:55:53 +0800 Subject: [PATCH] =?UTF-8?q?[6.11.0]=20ADAS=20LIB=E4=B8=AD=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E7=9A=84=E5=BC=82=E5=B8=B8=E6=8D=95=E8=8E=B7=EF=BC=8C?= =?UTF-8?q?=E5=8C=85=E6=8B=AC=E8=A7=A3=E6=9E=90=E5=BC=82=E5=B8=B8=E5=92=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BD=BF=E7=94=A8=E5=BC=82=E5=B8=B8=EF=BC=88?= =?UTF-8?q?UI=E5=B1=82=EF=BC=89=E6=B7=BB=E5=8A=A0=E5=88=B0=E9=93=BE?= =?UTF-8?q?=E8=B7=AF=E6=97=A5=E5=BF=97=E4=BB=A5=E5=8F=8Alog=E5=A0=86?= =?UTF-8?q?=E6=A0=88=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 46 +++++++++++++++++-- .../core/data/deva/chain/ChainConstant.kt | 1 + .../zhidao/support/adas/high/AdasChannel.java | 12 +++-- .../support/adas/high/OnAdasListener.java | 9 ++-- 4 files changed, 54 insertions(+), 14 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 5d2b760bc0..b8625d133b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -14,6 +14,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_AD import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_CAR_CONFIG import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_CAR_LOC import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_COLD_START_STATE +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_ALL_ERROR import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_FM_MSG import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_FSM_MSG import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_GUARDIAN @@ -119,6 +120,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop +import com.zhjt.mogo.adas.utils.ByteUtil import com.zhjt.service.chain.ChainLog import fault_management.FmInfo import fsm.Fsm2024 @@ -138,6 +140,8 @@ import prediction.Prediction import record_cache.RecordPanelOuterClass import system_master.SsmInfo import system_master.SystemStatusInfo +import java.io.PrintWriter +import java.io.StringWriter import kotlin.math.roundToInt /** @@ -1534,11 +1538,43 @@ class MoGoAdasListenerImpl : OnAdasListener { } /** - * 数据解析失败、数据异常回调 - * @param status 错误原因 - * @param bytes 原始数据 + * ADAS LIB中进行的异常捕获,包括解析异常和数据使用异常(UI层) + * + * @param status 错误原因 + * @param bytes 原始数据 + * @param exception 异常堆栈 status==ProtocolStatus.BUSINESS_DATA_PARSE_FAILED 或 ProtocolStatus.HEADER_DECODE_FAILED 时才存在异常信息 */ - override fun onError(status: ProtocolStatus, bytes: ByteArray) { - CallerLogger.e("$M_D_C$TAG", "status===$status") + override fun onError( + status: ProtocolStatus, + bytes: ByteArray?, + exception: java.lang.Exception? + ) { + val s = status.desc + val b = try { + if (bytes == null || bytes.isEmpty()) "NULL" else ByteUtil.byteArrToHex(bytes, false) + } catch (ex: Exception) { + "转换异常:" + ex.message + } + val e = + if ((status == ProtocolStatus.BUSINESS_DATA_PARSE_FAILED || status == ProtocolStatus.HEADER_DECODE_FAILED) && exception != null) { + val sw = StringWriter() + val pw = PrintWriter(sw) + exception.printStackTrace(pw) + sw.toString().trim() + } else { + "NULL" + } + adasError(s, b, e) + CallerLogger.e("$M_D_C$TAG", "数据错误 协议状态:$s 异常堆栈:$e") + } + + @ChainLog( + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_ALL_ERROR, + paramIndexes = [0, 1, 2] + ) + private fun adasError(status: String, bytes: String, error: String) { + } } \ No newline at end of file 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 4f1081368b..9f95285af3 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 @@ -78,6 +78,7 @@ class ChainConstant { const val CHAIN_CODE_ADAS_AUTOPILOT_INFO = "CHAIN_CODE_ADAS_AUTOPILOT_INFO" const val CHAIN_CODE_ADAS_COLD_START_STATE = "CHAIN_CODE_ADAS_COLD_START_STATE" const val CHAIN_CODE_ADAS_LOST_FRAME = "CHAIN_CODE_ADAS_LOST_FRAME" + const val CHAIN_CODE_ADAS_ALL_ERROR = "CHAIN_CODE_ADAS_ALL_ERROR"//ADAS LIB中进行的异常捕获,包括解析异常和数据使用异常(UI层) const val CHAIN_CODE_RECORD_NATIVE_LEAK = "CHAIN_CODE_RECORD_NATIVE_LEAK" 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 134c227fe9..8dcdfd175a 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 @@ -533,8 +533,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } } } catch (Exception e) { - callError(ProtocolStatus.HEADER_DECODE_FAILED, byteString.toByteArray()); - CupidLogUtils.e(TAG, "原始数据:" + ByteUtil.byteArrToHex(byteString.toByteArray()), e); + callError(ProtocolStatus.HEADER_DECODE_FAILED, byteString.toByteArray(), e); } } @@ -664,14 +663,17 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec callError(raw.getProtocolStatus(), raw.originalData.toByteArray()); } } catch (Exception e) { - callError(ProtocolStatus.BUSINESS_DATA_PARSE_FAILED, raw.originalData.toByteArray()); - CupidLogUtils.e(TAG, "原始数据:" + ByteUtil.byteArrToHex(raw.originalData.toByteArray()), e); + callError(ProtocolStatus.BUSINESS_DATA_PARSE_FAILED, raw.originalData.toByteArray(), e); } } private void callError(ProtocolStatus status, byte[] bytes) { + callError(status, bytes, null); + } + + private void callError(ProtocolStatus status, byte[] bytes, Exception exception) { if (mAdasListener != null) { - mAdasListener.onError(status, bytes); + mAdasListener.onError(status, bytes, exception); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 2d475249a6..e6bf26e81c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -706,10 +706,11 @@ public interface OnAdasListener { void onAutopilotStatistics(AutopilotStatistics statistics); /** - * 数据错误 + * ADAS LIB中进行的异常捕获,包括解析异常和数据使用异常(UI层) * - * @param status 错误原因 - * @param bytes 原始数据 + * @param status 错误原因 + * @param bytes 原始数据 + * @param exception 异常堆栈 status==ProtocolStatus.BUSINESS_DATA_PARSE_FAILED 或 ProtocolStatus.HEADER_DECODE_FAILED 时才存在异常信息 */ - void onError(ProtocolStatus status, byte[] bytes); + void onError(@NonNull ProtocolStatus status, @Nullable byte[] bytes, @Nullable Exception exception); }