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