mirror of
https://github.com/infiniteCable2/panda.git
synced 2026-06-12 01:35:05 +08:00
* add bootkick for ship mode * boot standby * comment * stop mode * fix som status * exti wakeup * all standby * clean * analog mode * adc * clean * HSI * stop only cuatro * comments * UM2331 * rm * comment * enforce SAFETY_SILENT * clean * misra * rm * disable pulls * assert * Revert "disable pulls" This reverts commit 3b954b929a5f864279d52e28a01768ca22962810. * pull note * add stop mode USB cmd * add stop mode to HITL * fix * async stop mode request * test all harness/ign configs * more time * use uptime * print debug * unstuck * show prints * more * logger * loglevel * log * uptime test * tighter timing * print wakeout source * rm debug * clean * robust * add CAN2 * test more cans * clean * more * longer * multiple * more * can1 * reorder * normal * clean * partial * clean * test * time * delay * reset * setup * reset * revert * silent * fix ordering * no random * warnings * err * timings * heartbeat * time * faster * can1 * simpler * test 20x * put back random * clean * comment * jenkinsfile * final
64 lines
2.1 KiB
C
64 lines
2.1 KiB
C
#pragma once
|
|
|
|
// ******************** critical ********************
|
|
|
|
void enable_interrupts(void);
|
|
void disable_interrupts(void);
|
|
|
|
extern uint8_t global_critical_depth;
|
|
|
|
#ifndef ENTER_CRITICAL
|
|
#define ENTER_CRITICAL() \
|
|
__disable_irq(); \
|
|
global_critical_depth += 1U;
|
|
#endif
|
|
|
|
#ifndef EXIT_CRITICAL
|
|
#define EXIT_CRITICAL() \
|
|
global_critical_depth -= 1U; \
|
|
if ((global_critical_depth == 0U) && interrupts_enabled) { \
|
|
__enable_irq(); \
|
|
}
|
|
#endif
|
|
|
|
// ******************** faults ********************
|
|
|
|
#define FAULT_STATUS_NONE 0U
|
|
#define FAULT_STATUS_TEMPORARY 1U
|
|
#define FAULT_STATUS_PERMANENT 2U
|
|
|
|
// Fault types, matches cereal.log.PandaState.FaultType
|
|
#define FAULT_RELAY_MALFUNCTION (1UL << 0)
|
|
#define FAULT_UNUSED_INTERRUPT_HANDLED (1UL << 1)
|
|
#define FAULT_INTERRUPT_RATE_CAN_1 (1UL << 2)
|
|
#define FAULT_INTERRUPT_RATE_CAN_2 (1UL << 3)
|
|
#define FAULT_INTERRUPT_RATE_CAN_3 (1UL << 4)
|
|
#define FAULT_INTERRUPT_RATE_TACH (1UL << 5)
|
|
#define FAULT_INTERRUPT_RATE_INTERRUPTS (1UL << 7)
|
|
#define FAULT_INTERRUPT_RATE_SPI_DMA (1UL << 8)
|
|
#define FAULT_INTERRUPT_RATE_USB (1UL << 15)
|
|
#define FAULT_REGISTER_DIVERGENT (1UL << 18)
|
|
#define FAULT_INTERRUPT_RATE_CLOCK_SOURCE (1UL << 20)
|
|
#define FAULT_INTERRUPT_RATE_TICK (1UL << 21)
|
|
#define FAULT_INTERRUPT_RATE_EXTI (1UL << 22)
|
|
#define FAULT_INTERRUPT_RATE_SPI (1UL << 23)
|
|
#define FAULT_INTERRUPT_RATE_UART_7 (1UL << 24)
|
|
#define FAULT_SIREN_MALFUNCTION (1UL << 25)
|
|
#define FAULT_HEARTBEAT_LOOP_WATCHDOG (1UL << 26)
|
|
#define FAULT_INTERRUPT_RATE_SOUND_DMA (1UL << 27)
|
|
|
|
// Permanent faults
|
|
#define PERMANENT_FAULTS 0U
|
|
|
|
extern uint8_t fault_status;
|
|
extern uint32_t faults;
|
|
|
|
void fault_occurred(uint32_t fault);
|
|
void fault_recovered(uint32_t fault);
|
|
|
|
// ******************** power_saving ********************
|
|
|
|
extern bool power_save_enabled;
|
|
|
|
void set_power_save_state(bool enable);
|