mirror of
https://github.com/commaai/panda.git
synced 2026-06-08 13:17:17 +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 3b954b929a.
* 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);
|