mirror of https://github.com/commaai/panda.git
USB power mode + bootkick cleanup (#1051)
* remove tick * remove more * delete more * board tick * update health * dos bootkicking * cleanup
This commit is contained in:
parent
f040d8b726
commit
13d64d4cc3
|
@ -57,26 +57,6 @@ void black_set_usb_load_switch(bool enabled) {
|
|||
set_gpio_output(GPIOB, 1, !enabled);
|
||||
}
|
||||
|
||||
void black_set_usb_power_mode(uint8_t mode) {
|
||||
bool valid = false;
|
||||
switch (mode) {
|
||||
case USB_POWER_CLIENT:
|
||||
black_set_usb_load_switch(false);
|
||||
valid = true;
|
||||
break;
|
||||
case USB_POWER_CDP:
|
||||
black_set_usb_load_switch(true);
|
||||
valid = true;
|
||||
break;
|
||||
default:
|
||||
puts("Invalid USB power mode\n");
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
usb_power_mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
void black_set_gps_mode(uint8_t mode) {
|
||||
switch (mode) {
|
||||
case GPS_DISABLED:
|
||||
|
@ -162,9 +142,6 @@ void black_init(void) {
|
|||
// Turn on USB load switch.
|
||||
black_set_usb_load_switch(true);
|
||||
|
||||
// Set right power mode
|
||||
black_set_usb_power_mode(USB_POWER_CDP);
|
||||
|
||||
// Initialize harness
|
||||
harness_init();
|
||||
|
||||
|
@ -204,6 +181,7 @@ const harness_configuration black_harness_config = {
|
|||
|
||||
const board board_black = {
|
||||
.board_type = "Black",
|
||||
.board_tick = unused_board_tick,
|
||||
.harness_config = &black_harness_config,
|
||||
.has_gps = true,
|
||||
.has_hw_gmlan = false,
|
||||
|
@ -215,10 +193,8 @@ const board board_black = {
|
|||
.enable_can_transceiver = black_enable_can_transceiver,
|
||||
.enable_can_transceivers = black_enable_can_transceivers,
|
||||
.set_led = black_set_led,
|
||||
.set_usb_power_mode = black_set_usb_power_mode,
|
||||
.set_gps_mode = black_set_gps_mode,
|
||||
.set_can_mode = black_set_can_mode,
|
||||
.usb_power_mode_tick = unused_usb_power_mode_tick,
|
||||
.check_ignition = black_check_ignition,
|
||||
.read_current = unused_read_current,
|
||||
.set_fan_enabled = unused_set_fan_enabled,
|
||||
|
|
|
@ -3,10 +3,8 @@ typedef void (*board_init)(void);
|
|||
typedef void (*board_enable_can_transceiver)(uint8_t transceiver, bool enabled);
|
||||
typedef void (*board_enable_can_transceivers)(bool enabled);
|
||||
typedef void (*board_set_led)(uint8_t color, bool enabled);
|
||||
typedef void (*board_set_usb_power_mode)(uint8_t mode);
|
||||
typedef void (*board_set_gps_mode)(uint8_t mode);
|
||||
typedef void (*board_set_can_mode)(uint8_t mode);
|
||||
typedef void (*board_usb_power_mode_tick)(uint32_t uptime);
|
||||
typedef bool (*board_check_ignition)(void);
|
||||
typedef uint32_t (*board_read_current)(void);
|
||||
typedef void (*board_set_ir_power)(uint8_t percentage);
|
||||
|
@ -14,6 +12,7 @@ typedef void (*board_set_fan_enabled)(bool enabled);
|
|||
typedef void (*board_set_phone_power)(bool enabled);
|
||||
typedef void (*board_set_clock_source_mode)(uint8_t mode);
|
||||
typedef void (*board_set_siren)(bool enabled);
|
||||
typedef void (*board_board_tick)(bool ignition, bool usb_enum, bool heartbeat_seen);
|
||||
|
||||
struct board {
|
||||
const char *board_type;
|
||||
|
@ -28,10 +27,8 @@ struct board {
|
|||
board_enable_can_transceiver enable_can_transceiver;
|
||||
board_enable_can_transceivers enable_can_transceivers;
|
||||
board_set_led set_led;
|
||||
board_set_usb_power_mode set_usb_power_mode;
|
||||
board_set_gps_mode set_gps_mode;
|
||||
board_set_can_mode set_can_mode;
|
||||
board_usb_power_mode_tick usb_power_mode_tick;
|
||||
board_check_ignition check_ignition;
|
||||
board_read_current read_current;
|
||||
board_set_ir_power set_ir_power;
|
||||
|
@ -39,6 +36,7 @@ struct board {
|
|||
board_set_phone_power set_phone_power;
|
||||
board_set_clock_source_mode set_clock_source_mode;
|
||||
board_set_siren set_siren;
|
||||
board_board_tick board_tick;
|
||||
};
|
||||
|
||||
// ******************* Definitions ********************
|
||||
|
@ -73,6 +71,3 @@ struct board {
|
|||
#define CAN_MODE_GMLAN_CAN2 1U
|
||||
#define CAN_MODE_GMLAN_CAN3 2U
|
||||
#define CAN_MODE_OBD_CAN2 3U
|
||||
|
||||
// ********************* Globals **********************
|
||||
uint8_t usb_power_mode = USB_POWER_NONE;
|
||||
|
|
|
@ -53,23 +53,15 @@ void dos_set_bootkick(bool enabled){
|
|||
set_gpio_output(GPIOC, 4, !enabled);
|
||||
}
|
||||
|
||||
void dos_set_usb_power_mode(uint8_t mode) {
|
||||
bool valid = false;
|
||||
switch (mode) {
|
||||
case USB_POWER_CLIENT:
|
||||
dos_set_bootkick(false);
|
||||
valid = true;
|
||||
break;
|
||||
case USB_POWER_CDP:
|
||||
void dos_board_tick(bool ignition, bool usb_enum, bool heartbeat_seen) {
|
||||
if (ignition && !usb_enum) {
|
||||
// enable bootkick if ignition seen
|
||||
dos_set_bootkick(true);
|
||||
valid = true;
|
||||
break;
|
||||
default:
|
||||
puts("Invalid USB power mode\n");
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
usb_power_mode = mode;
|
||||
} else if (heartbeat_seen) {
|
||||
// disable once openpilot is up
|
||||
dos_set_bootkick(false);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,6 +165,9 @@ void dos_init(void) {
|
|||
dos_set_led(LED_GREEN, false);
|
||||
dos_set_led(LED_BLUE, false);
|
||||
|
||||
// Bootkick
|
||||
dos_set_bootkick(true);
|
||||
|
||||
// Set normal CAN mode
|
||||
dos_set_can_mode(CAN_MODE_NORMAL);
|
||||
|
||||
|
@ -201,6 +196,7 @@ const harness_configuration dos_harness_config = {
|
|||
|
||||
const board board_dos = {
|
||||
.board_type = "Dos",
|
||||
.board_tick = dos_board_tick,
|
||||
.harness_config = &dos_harness_config,
|
||||
.has_gps = false,
|
||||
.has_hw_gmlan = false,
|
||||
|
@ -212,15 +208,13 @@ const board board_dos = {
|
|||
.enable_can_transceiver = dos_enable_can_transceiver,
|
||||
.enable_can_transceivers = dos_enable_can_transceivers,
|
||||
.set_led = dos_set_led,
|
||||
.set_usb_power_mode = dos_set_usb_power_mode,
|
||||
.set_gps_mode = unused_set_gps_mode,
|
||||
.set_can_mode = dos_set_can_mode,
|
||||
.usb_power_mode_tick = unused_usb_power_mode_tick,
|
||||
.check_ignition = dos_check_ignition,
|
||||
.read_current = unused_read_current,
|
||||
.set_fan_enabled = dos_set_fan_enabled,
|
||||
.set_ir_power = dos_set_ir_power,
|
||||
.set_phone_power = unused_set_phone_power,
|
||||
.set_clock_source_mode = dos_set_clock_source_mode,
|
||||
.set_siren = dos_set_siren
|
||||
.set_siren = unused_set_siren
|
||||
};
|
||||
|
|
|
@ -35,6 +35,7 @@ void grey_set_gps_mode(uint8_t mode) {
|
|||
|
||||
const board board_grey = {
|
||||
.board_type = "Grey",
|
||||
.board_tick = unused_board_tick,
|
||||
.harness_config = &white_harness_config,
|
||||
.has_gps = true,
|
||||
.has_hw_gmlan = true,
|
||||
|
@ -46,10 +47,8 @@ const board board_grey = {
|
|||
.enable_can_transceiver = white_enable_can_transceiver,
|
||||
.enable_can_transceivers = white_enable_can_transceivers,
|
||||
.set_led = white_set_led,
|
||||
.set_usb_power_mode = white_set_usb_power_mode,
|
||||
.set_gps_mode = grey_set_gps_mode,
|
||||
.set_can_mode = white_set_can_mode,
|
||||
.usb_power_mode_tick = unused_usb_power_mode_tick,
|
||||
.check_ignition = white_check_ignition,
|
||||
.read_current = white_read_current,
|
||||
.set_fan_enabled = unused_set_fan_enabled,
|
||||
|
|
|
@ -30,11 +30,6 @@ void pedal_set_led(uint8_t color, bool enabled) {
|
|||
}
|
||||
}
|
||||
|
||||
void pedal_set_usb_power_mode(uint8_t mode){
|
||||
usb_power_mode = mode;
|
||||
puts("Trying to set USB power mode on pedal. This is not supported.\n");
|
||||
}
|
||||
|
||||
void pedal_set_gps_mode(uint8_t mode) {
|
||||
UNUSED(mode);
|
||||
puts("Trying to set ESP/GPS mode on pedal. This is not supported.\n");
|
||||
|
@ -78,6 +73,7 @@ const harness_configuration pedal_harness_config = {
|
|||
|
||||
const board board_pedal = {
|
||||
.board_type = "Pedal",
|
||||
.board_tick = unused_board_tick,
|
||||
.harness_config = &pedal_harness_config,
|
||||
.has_gps = false,
|
||||
.has_hw_gmlan = false,
|
||||
|
@ -89,10 +85,8 @@ const board board_pedal = {
|
|||
.enable_can_transceiver = pedal_enable_can_transceiver,
|
||||
.enable_can_transceivers = pedal_enable_can_transceivers,
|
||||
.set_led = pedal_set_led,
|
||||
.set_usb_power_mode = pedal_set_usb_power_mode,
|
||||
.set_gps_mode = pedal_set_gps_mode,
|
||||
.set_can_mode = pedal_set_can_mode,
|
||||
.usb_power_mode_tick = unused_usb_power_mode_tick,
|
||||
.check_ignition = pedal_check_ignition,
|
||||
.read_current = unused_read_current,
|
||||
.set_fan_enabled = unused_set_fan_enabled,
|
||||
|
|
|
@ -53,25 +53,6 @@ void red_set_usb_load_switch(bool enabled) {
|
|||
set_gpio_output(GPIOB, 14, !enabled);
|
||||
}
|
||||
|
||||
void red_set_usb_power_mode(uint8_t mode) {
|
||||
bool valid = false;
|
||||
switch (mode) {
|
||||
case USB_POWER_CLIENT:
|
||||
red_set_usb_load_switch(false);
|
||||
valid = true;
|
||||
break;
|
||||
case USB_POWER_CDP:
|
||||
red_set_usb_load_switch(true);
|
||||
valid = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
usb_power_mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
void red_set_can_mode(uint8_t mode) {
|
||||
switch (mode) {
|
||||
case CAN_MODE_NORMAL:
|
||||
|
@ -139,9 +120,6 @@ void red_init(void) {
|
|||
// Turn on USB load switch.
|
||||
red_set_usb_load_switch(true);
|
||||
|
||||
// Set right power mode
|
||||
red_set_usb_power_mode(USB_POWER_CDP);
|
||||
|
||||
// Initialize harness
|
||||
harness_init();
|
||||
|
||||
|
@ -181,6 +159,7 @@ const harness_configuration red_harness_config = {
|
|||
|
||||
const board board_red = {
|
||||
.board_type = "Red",
|
||||
.board_tick = unused_board_tick,
|
||||
.harness_config = &red_harness_config,
|
||||
.has_gps = false,
|
||||
.has_hw_gmlan = false,
|
||||
|
@ -192,10 +171,8 @@ const board board_red = {
|
|||
.enable_can_transceiver = red_enable_can_transceiver,
|
||||
.enable_can_transceivers = red_enable_can_transceivers,
|
||||
.set_led = red_set_led,
|
||||
.set_usb_power_mode = red_set_usb_power_mode,
|
||||
.set_gps_mode = unused_set_gps_mode,
|
||||
.set_can_mode = red_set_can_mode,
|
||||
.usb_power_mode_tick = unused_usb_power_mode_tick,
|
||||
.check_ignition = red_check_ignition,
|
||||
.read_current = unused_read_current,
|
||||
.set_fan_enabled = unused_set_fan_enabled,
|
||||
|
|
|
@ -56,7 +56,7 @@ void uno_set_gps_load_switch(bool enabled) {
|
|||
}
|
||||
|
||||
void uno_set_bootkick(bool enabled){
|
||||
if(enabled){
|
||||
if (enabled) {
|
||||
set_gpio_output(GPIOB, 14, false);
|
||||
} else {
|
||||
// We want the pin to be floating, not forced high!
|
||||
|
@ -73,25 +73,6 @@ void uno_set_phone_power(bool enabled){
|
|||
set_gpio_output(GPIOB, 4, enabled);
|
||||
}
|
||||
|
||||
void uno_set_usb_power_mode(uint8_t mode) {
|
||||
bool valid = false;
|
||||
switch (mode) {
|
||||
case USB_POWER_CLIENT:
|
||||
valid = true;
|
||||
break;
|
||||
case USB_POWER_CDP:
|
||||
uno_bootkick();
|
||||
valid = true;
|
||||
break;
|
||||
default:
|
||||
puts("Invalid USB power mode\n");
|
||||
break;
|
||||
}
|
||||
if (valid) {
|
||||
usb_power_mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
void uno_set_gps_mode(uint8_t mode) {
|
||||
switch (mode) {
|
||||
case GPS_DISABLED:
|
||||
|
@ -145,9 +126,11 @@ void uno_set_can_mode(uint8_t mode){
|
|||
}
|
||||
}
|
||||
|
||||
void uno_usb_power_mode_tick(uint32_t uptime){
|
||||
UNUSED(uptime);
|
||||
if(bootkick_timer != 0U){
|
||||
void uno_board_tick(bool ignition, bool usb_enum, bool heartbeat_seen) {
|
||||
UNUSED(ignition);
|
||||
UNUSED(usb_enum);
|
||||
UNUSED(heartbeat_seen);
|
||||
if (bootkick_timer != 0U) {
|
||||
bootkick_timer--;
|
||||
} else {
|
||||
uno_set_bootkick(false);
|
||||
|
@ -262,6 +245,7 @@ const harness_configuration uno_harness_config = {
|
|||
|
||||
const board board_uno = {
|
||||
.board_type = "Uno",
|
||||
.board_tick = uno_board_tick,
|
||||
.harness_config = &uno_harness_config,
|
||||
.has_gps = true,
|
||||
.has_hw_gmlan = false,
|
||||
|
@ -273,10 +257,8 @@ const board board_uno = {
|
|||
.enable_can_transceiver = uno_enable_can_transceiver,
|
||||
.enable_can_transceivers = uno_enable_can_transceivers,
|
||||
.set_led = uno_set_led,
|
||||
.set_usb_power_mode = uno_set_usb_power_mode,
|
||||
.set_gps_mode = uno_set_gps_mode,
|
||||
.set_can_mode = uno_set_can_mode,
|
||||
.usb_power_mode_tick = uno_usb_power_mode_tick,
|
||||
.check_ignition = uno_check_ignition,
|
||||
.read_current = unused_read_current,
|
||||
.set_fan_enabled = uno_set_fan_enabled,
|
||||
|
|
|
@ -2,10 +2,6 @@ void unused_set_gps_mode(uint8_t mode) {
|
|||
UNUSED(mode);
|
||||
}
|
||||
|
||||
void unused_usb_power_mode_tick(uint32_t uptime) {
|
||||
UNUSED(uptime);
|
||||
}
|
||||
|
||||
void unused_set_ir_power(uint8_t percentage) {
|
||||
UNUSED(percentage);
|
||||
}
|
||||
|
@ -29,3 +25,9 @@ void unused_set_siren(bool enabled) {
|
|||
uint32_t unused_read_current(void) {
|
||||
return 0U;
|
||||
}
|
||||
|
||||
void unused_board_tick(bool ignition, bool usb_enum, bool heartbeat_seen) {
|
||||
UNUSED(ignition);
|
||||
UNUSED(usb_enum);
|
||||
UNUSED(heartbeat_seen);
|
||||
}
|
|
@ -43,7 +43,6 @@ void white_set_led(uint8_t color, bool enabled) {
|
|||
}
|
||||
|
||||
void white_set_usb_power_mode(uint8_t mode){
|
||||
bool valid_mode = true;
|
||||
switch (mode) {
|
||||
case USB_POWER_CLIENT:
|
||||
// B2,A13: set client mode
|
||||
|
@ -61,14 +60,9 @@ void white_set_usb_power_mode(uint8_t mode){
|
|||
set_gpio_output(GPIOA, 13, 0);
|
||||
break;
|
||||
default:
|
||||
valid_mode = false;
|
||||
puts("Invalid usb power mode\n");
|
||||
break;
|
||||
}
|
||||
|
||||
if (valid_mode) {
|
||||
usb_power_mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
void white_set_gps_mode(uint8_t mode) {
|
||||
|
@ -243,6 +237,7 @@ const harness_configuration white_harness_config = {
|
|||
|
||||
const board board_white = {
|
||||
.board_type = "White",
|
||||
.board_tick = unused_board_tick,
|
||||
.harness_config = &white_harness_config,
|
||||
.has_gps = false,
|
||||
.has_hw_gmlan = true,
|
||||
|
@ -254,10 +249,8 @@ const board board_white = {
|
|||
.enable_can_transceiver = white_enable_can_transceiver,
|
||||
.enable_can_transceivers = white_enable_can_transceivers,
|
||||
.set_led = white_set_led,
|
||||
.set_usb_power_mode = white_set_usb_power_mode,
|
||||
.set_gps_mode = white_set_gps_mode,
|
||||
.set_can_mode = white_set_can_mode,
|
||||
.usb_power_mode_tick = unused_usb_power_mode_tick,
|
||||
.check_ignition = white_check_ignition,
|
||||
.read_current = white_read_current,
|
||||
.set_fan_enabled = unused_set_fan_enabled,
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
// When changing this struct, python/__init__.py needs to be kept up to date!
|
||||
#define HEALTH_PACKET_VERSION 8
|
||||
|
||||
#define HEALTH_PACKET_VERSION 9
|
||||
|
||||
struct __attribute__((packed)) health_t {
|
||||
uint32_t uptime_pkt;
|
||||
uint32_t voltage_pkt;
|
||||
|
@ -14,7 +16,6 @@ struct __attribute__((packed)) health_t {
|
|||
uint8_t controls_allowed_pkt;
|
||||
uint8_t gas_interceptor_detected_pkt;
|
||||
uint8_t car_harness_status_pkt;
|
||||
uint8_t usb_power_mode_pkt;
|
||||
uint8_t safety_mode_pkt;
|
||||
uint16_t safety_param_pkt;
|
||||
uint8_t fault_status_pkt;
|
||||
|
|
37
board/main.c
37
board/main.c
|
@ -51,20 +51,6 @@ void debug_ring_callback(uart_ring *ring) {
|
|||
if (rcv == 'x') {
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
// enable CDP mode
|
||||
if (rcv == 'C') {
|
||||
puts("switching USB to CDP mode\n");
|
||||
current_board->set_usb_power_mode(USB_POWER_CDP);
|
||||
}
|
||||
if (rcv == 'c') {
|
||||
puts("switching USB to client mode\n");
|
||||
current_board->set_usb_power_mode(USB_POWER_CLIENT);
|
||||
}
|
||||
if (rcv == 'D') {
|
||||
puts("switching USB to DCP mode\n");
|
||||
current_board->set_usb_power_mode(USB_POWER_DCP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -158,15 +144,13 @@ void tick_handler(void) {
|
|||
// siren
|
||||
current_board->set_siren((loop_counter & 1U) && (siren_enabled || (siren_countdown > 0U)));
|
||||
|
||||
// tick drivers
|
||||
// tick drivers at 8Hz
|
||||
fan_tick();
|
||||
|
||||
// decimated to 1Hz
|
||||
if (loop_counter == 0U) {
|
||||
can_live = pending_can_live;
|
||||
|
||||
current_board->usb_power_mode_tick(uptime_cnt);
|
||||
|
||||
//puth(usart1_dma); puts(" "); puth(DMA2_Stream5->M0AR); puts(" "); puth(DMA2_Stream5->NDTR); puts("\n");
|
||||
|
||||
// reset this every 16th pass
|
||||
|
@ -188,6 +172,10 @@ void tick_handler(void) {
|
|||
// unless we are in power saving mode
|
||||
current_board->set_led(LED_BLUE, (uptime_cnt & 1U) && (power_save_status == POWER_SAVE_STATUS_ENABLED));
|
||||
|
||||
// tick drivers at 1Hz
|
||||
const bool recent_heartbeat = heartbeat_counter == 0U;
|
||||
current_board->board_tick(check_started(), usb_enumerated, recent_heartbeat);
|
||||
|
||||
// increase heartbeat counter and cap it at the uint32 limit
|
||||
if (heartbeat_counter < __UINT32_MAX__) {
|
||||
heartbeat_counter += 1U;
|
||||
|
@ -254,11 +242,6 @@ void tick_handler(void) {
|
|||
fan_set_power(0U);
|
||||
}
|
||||
}
|
||||
|
||||
// enter CDP mode when car starts to ensure we are charging a turned off EON
|
||||
if (check_started() && ((usb_power_mode != USB_POWER_CDP) || !usb_enumerated)) {
|
||||
current_board->set_usb_power_mode(USB_POWER_CDP);
|
||||
}
|
||||
}
|
||||
|
||||
// check registers
|
||||
|
@ -289,7 +272,6 @@ void EXTI_IRQ_Handler(void) {
|
|||
exti_irq_clear();
|
||||
clock_init();
|
||||
|
||||
current_board->set_usb_power_mode(USB_POWER_CDP);
|
||||
set_power_save_state(POWER_SAVE_STATUS_DISABLED);
|
||||
deepsleep_allowed = false;
|
||||
heartbeat_counter = 0U;
|
||||
|
@ -399,19 +381,17 @@ int main(void) {
|
|||
for (cnt=0;;cnt++) {
|
||||
if (power_save_status == POWER_SAVE_STATUS_DISABLED) {
|
||||
#ifdef DEBUG_FAULTS
|
||||
if(fault_status == FAULT_STATUS_NONE){
|
||||
if (fault_status == FAULT_STATUS_NONE) {
|
||||
#endif
|
||||
uint32_t div_mode = ((usb_power_mode == USB_POWER_DCP) ? 4U : 1U);
|
||||
|
||||
// useful for debugging, fade breaks = panda is overloaded
|
||||
for(uint32_t fade = 0U; fade < MAX_LED_FADE; fade += div_mode){
|
||||
for (uint32_t fade = 0U; fade < MAX_LED_FADE; fade += 1U) {
|
||||
current_board->set_led(LED_RED, true);
|
||||
delay(fade >> 4);
|
||||
current_board->set_led(LED_RED, false);
|
||||
delay((MAX_LED_FADE - fade) >> 4);
|
||||
}
|
||||
|
||||
for(uint32_t fade = MAX_LED_FADE; fade > 0U; fade -= div_mode){
|
||||
for (uint32_t fade = MAX_LED_FADE; fade > 0U; fade -= 1U) {
|
||||
current_board->set_led(LED_RED, true);
|
||||
delay(fade >> 4);
|
||||
current_board->set_led(LED_RED, false);
|
||||
|
@ -430,7 +410,6 @@ int main(void) {
|
|||
if (deepsleep_allowed && !usb_enumerated && !check_started() && ignition_seen && (heartbeat_counter > 20U)) {
|
||||
usb_soft_disconnect(true);
|
||||
fan_set_power(0U);
|
||||
current_board->set_usb_power_mode(USB_POWER_CLIENT);
|
||||
NVIC_DisableIRQ(TICK_TIMER_IRQ);
|
||||
delay(512000U);
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ int get_health_pkt(void *dat) {
|
|||
health->can_fwd_errs_pkt = can_fwd_errs;
|
||||
health->gmlan_send_errs_pkt = gmlan_send_errs;
|
||||
health->car_harness_status_pkt = car_harness_status;
|
||||
health->usb_power_mode_pkt = usb_power_mode;
|
||||
health->safety_mode_pkt = (uint8_t)(current_safety_mode);
|
||||
health->safety_param_pkt = current_safety_param;
|
||||
health->alternative_experience_pkt = alternative_experience;
|
||||
|
@ -459,10 +458,6 @@ int comms_control_handler(ControlPacket_t *req, uint8_t *resp) {
|
|||
can_loopback = (req->param1 > 0U);
|
||||
can_init_all();
|
||||
break;
|
||||
// **** 0xe6: set USB power
|
||||
case 0xe6:
|
||||
current_board->set_usb_power_mode(req->param1);
|
||||
break;
|
||||
// **** 0xe7: set power save state
|
||||
case 0xe7:
|
||||
set_power_save_state(req->param1);
|
||||
|
|
|
@ -174,8 +174,8 @@ class Panda:
|
|||
HW_TYPE_RED_PANDA = b'\x07'
|
||||
|
||||
CAN_PACKET_VERSION = 2
|
||||
HEALTH_PACKET_VERSION = 8
|
||||
HEALTH_STRUCT = struct.Struct("<IIIIIIIIBBBBBBBHBBBHIfB")
|
||||
HEALTH_PACKET_VERSION = 9
|
||||
HEALTH_STRUCT = struct.Struct("<IIIIIIIIBBBBBBHBBBHIfB")
|
||||
|
||||
F2_DEVICES = (HW_TYPE_PEDAL, )
|
||||
F4_DEVICES = (HW_TYPE_WHITE_PANDA, HW_TYPE_GREY_PANDA, HW_TYPE_BLACK_PANDA, HW_TYPE_UNO, HW_TYPE_DOS)
|
||||
|
@ -448,16 +448,15 @@ class Panda:
|
|||
"controls_allowed": a[10],
|
||||
"gas_interceptor_detected": a[11],
|
||||
"car_harness_status": a[12],
|
||||
"usb_power_mode": a[13],
|
||||
"safety_mode": a[14],
|
||||
"safety_param": a[15],
|
||||
"fault_status": a[16],
|
||||
"power_save_enabled": a[17],
|
||||
"heartbeat_lost": a[18],
|
||||
"alternative_experience": a[19],
|
||||
"blocked_msg_cnt": a[20],
|
||||
"interrupt_load": a[21],
|
||||
"fan_power": a[22],
|
||||
"safety_mode": a[13],
|
||||
"safety_param": a[14],
|
||||
"fault_status": a[15],
|
||||
"power_save_enabled": a[16],
|
||||
"heartbeat_lost": a[17],
|
||||
"alternative_experience": a[18],
|
||||
"blocked_msg_cnt": a[19],
|
||||
"interrupt_load": a[20],
|
||||
"fan_power": a[21],
|
||||
}
|
||||
|
||||
# ******************* control *******************
|
||||
|
|
|
@ -26,7 +26,7 @@ fi
|
|||
|
||||
printf "\nPANDA F4 CODE\n"
|
||||
$CPPCHECK -DPANDA -DSTM32F4 -UPEDAL -DCAN3 -DUID_BASE \
|
||||
--suppressions-list=suppressions.txt --suppress=*:*inc/* \
|
||||
--suppressions-list=$DIR/suppressions.txt --suppress=*:*inc/* \
|
||||
-I $PANDA_DIR/board/ --dump --enable=all --inline-suppr --force \
|
||||
$PANDA_DIR/board/main.c 2>/tmp/misra/cppcheck_f4_output.txt
|
||||
|
||||
|
@ -39,7 +39,7 @@ misra_f4_output=$( cat /tmp/misra/misra_f4_output.txt | grep -v ": information:
|
|||
|
||||
printf "\nPANDA H7 CODE\n"
|
||||
$CPPCHECK -DPANDA -DSTM32H7 -UPEDAL -DUID_BASE \
|
||||
--suppressions-list=suppressions.txt --suppress=*:*inc/* \
|
||||
--suppressions-list=$DIR/suppressions.txt --suppress=*:*inc/* \
|
||||
-I $PANDA_DIR/board/ --dump --enable=all --inline-suppr --force \
|
||||
$PANDA_DIR/board/main.c 2>/tmp/misra/cppcheck_h7_output.txt
|
||||
|
||||
|
@ -52,7 +52,7 @@ misra_h7_output=$( cat /tmp/misra/misra_h7_output.txt | grep -v ": information:
|
|||
|
||||
printf "\nPEDAL CODE\n"
|
||||
$CPPCHECK -UPANDA -DSTM32F2 -DPEDAL -UCAN3 \
|
||||
--suppressions-list=suppressions.txt --suppress=*:*inc/* \
|
||||
--suppressions-list=$DIR/suppressions.txt --suppress=*:*inc/* \
|
||||
-I $PANDA_DIR/board/ --dump --enable=all --inline-suppr --force \
|
||||
$PANDA_DIR/board/pedal/main.c 2>/tmp/misra/cppcheck_pedal_output.txt
|
||||
|
||||
|
|
Loading…
Reference in New Issue