[6.11.0] ADAS LIB中进行的异常捕获,包括解析异常和数据使用异常(UI层)添加到链路日志以及log堆栈打印
This commit is contained in:
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user