From 90eee4c7f07171d7e61bb0e059ac0326cc02e463 Mon Sep 17 00:00:00 2001 From: vanminhpe Date: Fri, 7 Aug 2026 09:49:30 +0800 Subject: [PATCH] add error code/issue code from TPU v1.9.0, RPU v1.8.0 --- common/error_codes.py | 73 +++++++++++++++++++++++++++++++++ common/issue_codes.py | 93 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 common/error_codes.py create mode 100644 common/issue_codes.py diff --git a/common/error_codes.py b/common/error_codes.py new file mode 100644 index 0000000..f910f05 --- /dev/null +++ b/common/error_codes.py @@ -0,0 +1,73 @@ +from enum import IntFlag + + +class TpuErrorCode(IntFlag): + """Source: fenghuang-dsp/app/main/error_handler.h (TPU section).""" + FLASH_CONFIG_FAULT = 1 << 0 + RF_HANDSHAKE_LOST = 1 << 1 + RF_COMM_LOST = 1 << 2 + PRI_ENABLE_TIMEOUT = 1 << 3 + RPU_CMD_ERROR = 1 << 4 + ACCEPT_ID_FAIL = 1 << 5 + LOW_COUPLING_TOO_FAR = 1 << 6 + HIGH_COUPLING_TOO_CLOSE = 1 << 7 + NO_BATTERY_DETECTED = 1 << 8 + MOS_NTC_ERROR_MASK = 1 << 9 + COIL_NTC_ERROR_MASK = 1 << 10 + HR_PWM_INIT_ERROR = 1 << 11 + MCU_OVER_TEMPERATURE = 1 << 12 + PFC_OVER_TEMPERATURE = 1 << 13 + INV_OVER_TEMPERATURE = 1 << 14 + COIL_OVER_TEMPERATURE = 1 << 15 + FORCE_CHARGING_FAIL = 1 << 16 + SEC_RAMPUP_FAIL = 1 << 17 + INV_PWM_TRIP = 1 << 18 + INV_OVER_CURRENT = 1 << 19 + INV_SEC_OVP = 1 << 20 + INV_RCU_MOVING_AWAY = 1 << 21 + PFC_START_TIMEOUT = 1 << 22 + PFC_PWM_TRIP = 1 << 23 + # bit 24 unused in firmware + PFC_DC_UNDER_VOLTAGE = 1 << 25 + PFC_DC_OVER_VOLTAGE = 1 << 26 + PFC_IL_OVER_CURRENT = 1 << 27 + DISCOVERY_MOVE_TIMEOUT = 1 << 28 + DISCOVERY_POSITION_FAIL = 1 << 29 + PFC_AC_OVER_VOLTAGE = 1 << 30 + PFC_AC_UNDER_VOLTAGE = 1 << 31 + + +class RpuErrorCode(IntFlag): + """Source: garuda-dsp/app/main/error_handler.h (RPU section).""" + FLASH_CONFIG_ERROR = 1 << 0 + # bit 1 unused in firmware + PAIR_COMM_CONS_LOST_MASK = 1 << 2 + # bit 3 unused in firmware + MP_TIMEOUT_MASK = 1 << 4 + PRE_RUN_COMM_NO_OK_MASK = 1 << 5 + PRE_RUN_COMM_LOW_COUPLING_MASK = 1 << 6 + PRE_RUN_COMM_HIGH_COUPLING_MASK = 1 << 7 + RUN_COMM_NO_OK_MASK = 1 << 8 + RUN_COMM_PRI_ERROR_MASK = 1 << 9 + STOP_COMM_NO_OK_MASK = 1 << 10 + COMM_LOST_MASK = 1 << 11 + MCU_OVER_TEMPERATURE_MASK = 1 << 12 + DC_OVER_CURRENT_MASK = 1 << 13 + SR_OVER_TEMPERATURE_MASK = 1 << 14 + RXP_OVER_TEMPERATURE_MASK = 1 << 15 + COMM_PRI_RETURN_ERROR_MASK = 1 << 16 + # bit 17 unused in firmware + # bit 18 unused in firmware + SR_PWM_SIGNAL_MISSING_MASK = 1 << 19 + CUTOFF_VOLTAGE = 1 << 20 + DC_OVER_VOLTAGE_MASK = 1 << 21 + # bit 22 unused in firmware + # bit 23 unused in firmware + CV_LOW_CURRENT = 1 << 24 + TPU_RAMP_FAILURE = 1 << 25 + SR_NTC_ERROR_MASK = 1 << 26 + RXP_NTC_ERROR_MASK = 1 << 27 + TPU_INV_FAILURE = 1 << 28 + TPU_PFC_FAILURE = 1 << 29 + TPU_OVER_TEMPERATURE = 1 << 30 + BLE_UART_LOSS = 1 << 31 diff --git a/common/issue_codes.py b/common/issue_codes.py new file mode 100644 index 0000000..fadcf8f --- /dev/null +++ b/common/issue_codes.py @@ -0,0 +1,93 @@ +from enum import IntEnum + +# Source: fenghuang-dsp/garuda-dsp app/event/global_event_code.h (shared by TPU+RPU) + + +class Severity(IntEnum): + NORMAL = 0 + INFO = 1 + WARNING = 2 + ERROR = 3 + FAULT = 4 + + +class Category(IntEnum): + ALIGNMENT = 1 + COMM = 2 + BATTERY = 3 + AC_INPUT = 4 + POWER = 5 + THERMAL = 6 + HARDWARE = 7 + + +def make_event(severity, category, index): + return (int(severity) << 12) | (int(category) << 8) | index + + +class IssueCode(IntEnum): + """Packed 16-bit issue codes. Value = make_event(severity, category, index).""" + N_AL00 = make_event(Severity.NORMAL, Category.ALIGNMENT, 0) # 0x0100 - Alignment in-range + W_AL01 = make_event(Severity.WARNING, Category.ALIGNMENT, 1) # 0x2101 - Gap distance too close + W_AL02 = make_event(Severity.WARNING, Category.ALIGNMENT, 2) # 0x2102 - Gap distance too far + W_AL03 = make_event(Severity.WARNING, Category.ALIGNMENT, 3) # 0x2103 - RXP misaligned and rampup fail + W_AL04 = make_event(Severity.WARNING, Category.ALIGNMENT, 4) # 0x2104 - RXP moving away + W_AL05 = make_event(Severity.WARNING, Category.ALIGNMENT, 5) # 0x2105 - Discovery auto-align fail + W_AL06 = make_event(Severity.WARNING, Category.ALIGNMENT, 6) # 0x2106 - Discovery auto-align timeout + + N_CM00 = make_event(Severity.NORMAL, Category.COMM, 0) # 0x0200 - Handshake completed + W_CM01 = make_event(Severity.WARNING, Category.COMM, 1) # 0x2201 - Wireless comm disconnected + W_CM02 = make_event(Severity.WARNING, Category.COMM, 2) # 0x2202 - Wireless comm disconnected in handshake + W_CM03 = make_event(Severity.WARNING, Category.COMM, 3) # 0x2203 - TPU detected RPU error + W_CM04 = make_event(Severity.WARNING, Category.COMM, 4) # 0x2204 - Wrong accept ID + W_CM05 = make_event(Severity.WARNING, Category.COMM, 5) # 0x2205 - TPU charging enable fails + W_CM06 = make_event(Severity.WARNING, Category.COMM, 6) # 0x2206 - RPU detected TPU error (inactive) + W_CM07 = make_event(Severity.WARNING, Category.COMM, 7) # 0x2207 - RPU detected TPU error + + I_BT01 = make_event(Severity.INFO, Category.BATTERY, 1) # 0x1301 - CV low current, charging completed + I_BT02 = make_event(Severity.INFO, Category.BATTERY, 2) # 0x1302 - Cutoff voltage, charging completed + W_BT03 = make_event(Severity.WARNING, Category.BATTERY, 3) # 0x2303 - Battery disconnected + W_BT04 = make_event(Severity.WARNING, Category.BATTERY, 4) # 0x2304 - Output over current + W_BT05 = make_event(Severity.WARNING, Category.BATTERY, 5) # 0x2305 - Battery is not detected + W_BT06 = make_event(Severity.WARNING, Category.BATTERY, 6) # 0x2306 - Manual charging fails + I_BT07 = make_event(Severity.INFO, Category.BATTERY, 7) # 0x1307 - RPU CV current limit + I_BT08 = make_event(Severity.INFO, Category.BATTERY, 8) # 0x1308 - RPU power limit + + W_AC01 = make_event(Severity.WARNING, Category.AC_INPUT, 1) # 0x2401 - AC input under-voltage + W_AC02 = make_event(Severity.WARNING, Category.AC_INPUT, 2) # 0x2402 - AC input over-voltage + I_AC03 = make_event(Severity.INFO, Category.AC_INPUT, 3) # 0x1403 - AC current limit + W_AC04 = make_event(Severity.WARNING, Category.AC_INPUT, 4) # 0x2404 - PFC fails + + W_PW01 = make_event(Severity.WARNING, Category.POWER, 1) # 0x2501 - PFC over current + W_PW02 = make_event(Severity.WARNING, Category.POWER, 2) # 0x2502 - PFC DC over voltage + W_PW03 = make_event(Severity.WARNING, Category.POWER, 3) # 0x2503 - PFC DC under voltage + W_PW04 = make_event(Severity.WARNING, Category.POWER, 4) # 0x2504 - PFC PWM trip + W_PW05 = make_event(Severity.WARNING, Category.POWER, 5) # 0x2505 - INV over current + W_PW06 = make_event(Severity.WARNING, Category.POWER, 6) # 0x2506 - INV PWM trip + I_PW07 = make_event(Severity.INFO, Category.POWER, 7) # 0x1507 - INV current limit + W_PW08 = make_event(Severity.WARNING, Category.POWER, 8) # 0x2508 - RPU PWM trip + I_PW09 = make_event(Severity.INFO, Category.POWER, 9) # 0x1509 - Coil voltage limit + + I_TH01 = make_event(Severity.INFO, Category.THERMAL, 1) # 0x1601 - TPU thermal derating level 1 + I_TH02 = make_event(Severity.INFO, Category.THERMAL, 2) # 0x1602 - TPU thermal derating level 2 + W_TH03 = make_event(Severity.WARNING, Category.THERMAL, 3) # 0x2603 - TPU coil over temperature + W_TH04 = make_event(Severity.WARNING, Category.THERMAL, 4) # 0x2604 - INV over temperature + W_TH05 = make_event(Severity.WARNING, Category.THERMAL, 5) # 0x2605 - PFC over temperature + W_TH06 = make_event(Severity.WARNING, Category.THERMAL, 6) # 0x2606 - SR MOS over temperature + W_TH07 = make_event(Severity.WARNING, Category.THERMAL, 7) # 0x2607 - TPU MCU over temperature + F_TH08 = make_event(Severity.FAULT, Category.THERMAL, 8) # 0x4608 - TXP coil NTC fault + F_TH09 = make_event(Severity.FAULT, Category.THERMAL, 9) # 0x4609 - TPU MOS NTC fault + F_TH0A = make_event(Severity.FAULT, Category.THERMAL, 10) # 0x460A - RXP coil NTC fault + F_TH0B = make_event(Severity.FAULT, Category.THERMAL, 11) # 0x460B - RPU MOS NTC fault + I_TH0C = make_event(Severity.INFO, Category.THERMAL, 12) # 0x160C - RPU thermal derating level 1 + I_TH0D = make_event(Severity.INFO, Category.THERMAL, 13) # 0x160D - RPU thermal derating level 2 + W_TH0E = make_event(Severity.WARNING, Category.THERMAL, 14) # 0x260E - RPU coil over temperature + W_TH0F = make_event(Severity.WARNING, Category.THERMAL, 15) # 0x260F - RPU MCU over temperature + + F_HW01 = make_event(Severity.FAULT, Category.HARDWARE, 1) # 0x4701 - TPU PWM init error + F_HW02 = make_event(Severity.FAULT, Category.HARDWARE, 2) # 0x4702 - TPU flash config error + F_HW03 = make_event(Severity.FAULT, Category.HARDWARE, 3) # 0x4703 - RPU flash config error + + +EVENT_OK = 0x0000 +EVENT_NONE = 0xFFFF