Files
panda/board/sys/sys.h
Daniel Koepping e1da7dc918 Reduce panda power usage (#2340)
* 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
2026-02-19 14:14:28 -08:00

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);