mirror of
https://github.com/infiniteCable2/panda.git
synced 2026-02-18 17:23:52 +08:00
* Add RTC with LSI for BP, GP, WP * disable jenkins temporarily, REVERT! * experiments * cleanup is still needed * cppcheck unused suppress * raise deepsleep limit timeout to 120sec * more experiments on usb_enumerated * continue * soft_disconnect * almost done * not enough * no ignition * still don't like it.. * rename to has_rtc_battery * clock_source on the way!? * delay 3 sec * works on C3, needs test on C2 * And this is for C2 * disable bootkick * misra 10.4 * .. * .. * set power state the right way * change that * seems don't need that? check on C2/C3 * partially works on RP... * comments (will work after rebase) * change fault name * switch to manual activation mode * Revert "disable jenkins temporarily, REVERT!" This reverts commit 578d425fa7ba256f513c1c6ca54a00d69d78f53e. * my dear pedal!
54 lines
1.9 KiB
C
54 lines
1.9 KiB
C
#define FAULT_STATUS_NONE 0U
|
|
#define FAULT_STATUS_TEMPORARY 1U
|
|
#define FAULT_STATUS_PERMANENT 2U
|
|
|
|
// Fault types
|
|
#define FAULT_RELAY_MALFUNCTION (1U << 0)
|
|
#define FAULT_UNUSED_INTERRUPT_HANDLED (1U << 1)
|
|
#define FAULT_INTERRUPT_RATE_CAN_1 (1U << 2)
|
|
#define FAULT_INTERRUPT_RATE_CAN_2 (1U << 3)
|
|
#define FAULT_INTERRUPT_RATE_CAN_3 (1U << 4)
|
|
#define FAULT_INTERRUPT_RATE_TACH (1U << 5)
|
|
#define FAULT_INTERRUPT_RATE_GMLAN (1U << 6)
|
|
#define FAULT_INTERRUPT_RATE_INTERRUPTS (1U << 7)
|
|
#define FAULT_INTERRUPT_RATE_SPI_DMA (1U << 8)
|
|
#define FAULT_INTERRUPT_RATE_SPI_CS (1U << 9)
|
|
#define FAULT_INTERRUPT_RATE_UART_1 (1U << 10)
|
|
#define FAULT_INTERRUPT_RATE_UART_2 (1U << 11)
|
|
#define FAULT_INTERRUPT_RATE_UART_3 (1U << 12)
|
|
#define FAULT_INTERRUPT_RATE_UART_5 (1U << 13)
|
|
#define FAULT_INTERRUPT_RATE_UART_DMA (1U << 14)
|
|
#define FAULT_INTERRUPT_RATE_USB (1U << 15)
|
|
#define FAULT_INTERRUPT_RATE_TIM1 (1U << 16)
|
|
#define FAULT_INTERRUPT_RATE_TIM3 (1U << 17)
|
|
#define FAULT_REGISTER_DIVERGENT (1U << 18)
|
|
#define FAULT_INTERRUPT_RATE_KLINE_INIT (1U << 19)
|
|
#define FAULT_INTERRUPT_RATE_CLOCK_SOURCE (1U << 20)
|
|
#define FAULT_INTERRUPT_RATE_TICK (1U << 21)
|
|
#define FAULT_INTERRUPT_RATE_EXTI (1U << 22)
|
|
|
|
// Permanent faults
|
|
#define PERMANENT_FAULTS 0U
|
|
|
|
uint8_t fault_status = FAULT_STATUS_NONE;
|
|
uint32_t faults = 0U;
|
|
|
|
void fault_occurred(uint32_t fault) {
|
|
faults |= fault;
|
|
if((PERMANENT_FAULTS & fault) != 0U){
|
|
puts("Permanent fault occurred: 0x"); puth(fault); puts("\n");
|
|
fault_status = FAULT_STATUS_PERMANENT;
|
|
} else {
|
|
puts("Temporary fault occurred: 0x"); puth(fault); puts("\n");
|
|
fault_status = FAULT_STATUS_TEMPORARY;
|
|
}
|
|
}
|
|
|
|
void fault_recovered(uint32_t fault) {
|
|
if((PERMANENT_FAULTS & fault) == 0U){
|
|
faults &= ~fault;
|
|
} else {
|
|
puts("Cannot recover from a permanent fault!\n");
|
|
}
|
|
}
|