diff --git a/board/boards/black.h b/board/boards/black.h index 216def774f..d6e6bec8e1 100644 --- a/board/boards/black.h +++ b/board/boards/black.h @@ -49,36 +49,10 @@ void black_set_led(uint8_t color, bool enabled) { } } -void black_set_gps_load_switch(bool enabled) { - set_gpio_output(GPIOC, 12, enabled); -} - void black_set_usb_load_switch(bool enabled) { set_gpio_output(GPIOB, 1, !enabled); } -void black_set_gps_mode(uint8_t mode) { - switch (mode) { - case GPS_DISABLED: - // GPS OFF - set_gpio_output(GPIOC, 12, 0); - set_gpio_output(GPIOC, 5, 0); - break; - case GPS_ENABLED: - // GPS ON - set_gpio_output(GPIOC, 12, 1); - set_gpio_output(GPIOC, 5, 1); - break; - case GPS_BOOTMODE: - set_gpio_output(GPIOC, 12, 1); - set_gpio_output(GPIOC, 5, 0); - break; - default: - print("Invalid GPS mode\n"); - break; - } -} - void black_set_can_mode(uint8_t mode){ switch (mode) { case CAN_MODE_NORMAL: @@ -124,8 +98,9 @@ void black_init(void) { set_gpio_mode(GPIOC, 0, MODE_ANALOG); set_gpio_mode(GPIOC, 3, MODE_ANALOG); - // Set default state of GPS - current_board->set_gps_mode(GPS_ENABLED); + // GPS OFF + set_gpio_output(GPIOC, 5, 0); + set_gpio_output(GPIOC, 12, 0); // C10: OBD_SBU1_RELAY (harness relay driving output) // C11: OBD_SBU2_RELAY (harness relay driving output) @@ -136,9 +111,6 @@ void black_init(void) { set_gpio_output(GPIOC, 10, 1); set_gpio_output(GPIOC, 11, 1); - // Turn on GPS load switch. - black_set_gps_load_switch(true); - // Turn on USB load switch. black_set_usb_load_switch(true); @@ -165,6 +137,12 @@ void black_init(void) { } } +void black_init_bootloader(void) { + // GPS OFF + set_gpio_output(GPIOC, 5, 0); + set_gpio_output(GPIOC, 12, 0); +} + const harness_configuration black_harness_config = { .has_harness = true, .GPIO_SBU1 = GPIOC, @@ -183,7 +161,6 @@ const board board_black = { .board_type = "Black", .board_tick = unused_board_tick, .harness_config = &black_harness_config, - .has_gps = true, .has_hw_gmlan = false, .has_obd = true, .has_lin = false, @@ -195,10 +172,10 @@ const board board_black = { .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, .init = black_init, + .init_bootloader = black_init_bootloader, .enable_can_transceiver = black_enable_can_transceiver, .enable_can_transceivers = black_enable_can_transceivers, .set_led = black_set_led, - .set_gps_mode = black_set_gps_mode, .set_can_mode = black_set_can_mode, .check_ignition = black_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/board_declarations.h b/board/boards/board_declarations.h index c0c6436906..e8b1cdcffa 100644 --- a/board/boards/board_declarations.h +++ b/board/boards/board_declarations.h @@ -1,9 +1,9 @@ // ******************** Prototypes ******************** typedef void (*board_init)(void); +typedef void (*board_init_bootloader)(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_gps_mode)(uint8_t mode); typedef void (*board_set_can_mode)(uint8_t mode); typedef bool (*board_check_ignition)(void); typedef uint32_t (*board_read_current)(void); @@ -17,7 +17,6 @@ typedef bool (*board_read_som_gpio)(void); struct board { const char *board_type; const harness_configuration *harness_config; - const bool has_gps; const bool has_hw_gmlan; const bool has_obd; const bool has_lin; @@ -29,10 +28,10 @@ struct board { const bool fan_stall_recovery; const uint8_t fan_enable_cooldown_time; board_init init; + board_init_bootloader init_bootloader; board_enable_can_transceiver enable_can_transceiver; board_enable_can_transceivers enable_can_transceivers; board_set_led set_led; - board_set_gps_mode set_gps_mode; board_set_can_mode set_can_mode; board_check_ignition check_ignition; board_read_current read_current; @@ -68,11 +67,6 @@ struct board { #define USB_POWER_CDP 2U #define USB_POWER_DCP 3U -// GPS modes -#define GPS_DISABLED 0U -#define GPS_ENABLED 1U -#define GPS_BOOTMODE 2U - // CAN modes #define CAN_MODE_NORMAL 0U #define CAN_MODE_GMLAN_CAN2 1U diff --git a/board/boards/dos.h b/board/boards/dos.h index 0178ff016f..a5c2e4bcea 100644 --- a/board/boards/dos.h +++ b/board/boards/dos.h @@ -206,7 +206,6 @@ const board board_dos = { .board_type = "Dos", .board_tick = dos_board_tick, .harness_config = &dos_harness_config, - .has_gps = false, .has_hw_gmlan = false, .has_obd = true, .has_lin = false, @@ -222,10 +221,10 @@ const board board_dos = { .fan_stall_recovery = true, .fan_enable_cooldown_time = 3U, .init = dos_init, + .init_bootloader = unused_init_bootloader, .enable_can_transceiver = dos_enable_can_transceiver, .enable_can_transceivers = dos_enable_can_transceivers, .set_led = dos_set_led, - .set_gps_mode = unused_set_gps_mode, .set_can_mode = dos_set_can_mode, .check_ignition = dos_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/grey.h b/board/boards/grey.h index 0adb5e2a1c..a74f894480 100644 --- a/board/boards/grey.h +++ b/board/boards/grey.h @@ -4,40 +4,10 @@ // Most hardware functionality is similar to white panda -void grey_init(void) { - white_grey_common_init(); - - // Set default state of GPS - current_board->set_gps_mode(GPS_ENABLED); -} - -void grey_set_gps_mode(uint8_t mode) { - switch (mode) { - case GPS_DISABLED: - // GPS OFF - set_gpio_output(GPIOC, 14, 0); - set_gpio_output(GPIOC, 5, 0); - break; - case GPS_ENABLED: - // GPS ON - set_gpio_output(GPIOC, 14, 1); - set_gpio_output(GPIOC, 5, 1); - break; - case GPS_BOOTMODE: - set_gpio_output(GPIOC, 14, 1); - set_gpio_output(GPIOC, 5, 0); - break; - default: - print("Invalid ESP/GPS mode\n"); - break; - } -} - const board board_grey = { .board_type = "Grey", .board_tick = unused_board_tick, .harness_config = &white_harness_config, - .has_gps = true, .has_hw_gmlan = true, .has_obd = false, .has_lin = true, @@ -48,11 +18,11 @@ const board board_grey = { .avdd_mV = 3300U, .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, - .init = grey_init, + .init = white_grey_init, + .init_bootloader = white_grey_init_bootloader, .enable_can_transceiver = white_enable_can_transceiver, .enable_can_transceivers = white_enable_can_transceivers, .set_led = white_set_led, - .set_gps_mode = grey_set_gps_mode, .set_can_mode = white_set_can_mode, .check_ignition = white_check_ignition, .read_current = white_read_current, diff --git a/board/boards/pedal.h b/board/boards/pedal.h index d545a9faf1..f2ae367e5d 100644 --- a/board/boards/pedal.h +++ b/board/boards/pedal.h @@ -30,11 +30,6 @@ void pedal_set_led(uint8_t color, bool enabled) { } } -void pedal_set_gps_mode(uint8_t mode) { - UNUSED(mode); - print("Trying to set ESP/GPS mode on pedal. This is not supported.\n"); -} - void pedal_set_can_mode(uint8_t mode){ switch (mode) { case CAN_MODE_NORMAL: @@ -75,7 +70,6 @@ const board board_pedal = { .board_type = "Pedal", .board_tick = unused_board_tick, .harness_config = &pedal_harness_config, - .has_gps = false, .has_hw_gmlan = false, .has_obd = false, .has_lin = false, @@ -87,10 +81,10 @@ const board board_pedal = { .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, .init = pedal_init, + .init_bootloader = unused_init_bootloader, .enable_can_transceiver = pedal_enable_can_transceiver, .enable_can_transceivers = pedal_enable_can_transceivers, .set_led = pedal_set_led, - .set_gps_mode = pedal_set_gps_mode, .set_can_mode = pedal_set_can_mode, .check_ignition = pedal_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/red.h b/board/boards/red.h index e7dccc00ed..43e71bdf94 100644 --- a/board/boards/red.h +++ b/board/boards/red.h @@ -170,7 +170,6 @@ const board board_red = { .board_type = "Red", .board_tick = unused_board_tick, .harness_config = &red_harness_config, - .has_gps = false, .has_hw_gmlan = false, .has_obd = true, .has_lin = false, @@ -182,10 +181,10 @@ const board board_red = { .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, .init = red_init, + .init_bootloader = unused_init_bootloader, .enable_can_transceiver = red_enable_can_transceiver, .enable_can_transceivers = red_enable_can_transceivers, .set_led = red_set_led, - .set_gps_mode = unused_set_gps_mode, .set_can_mode = red_set_can_mode, .check_ignition = red_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/red_v2.h b/board/boards/red_v2.h index d6724d8bb7..4f0a2cb622 100644 --- a/board/boards/red_v2.h +++ b/board/boards/red_v2.h @@ -14,7 +14,6 @@ const board board_red_v2 = { .board_type = "Red_v2", .board_tick = unused_board_tick, .harness_config = &red_chiplet_harness_config, - .has_gps = false, .has_hw_gmlan = false, .has_obd = true, .has_lin = false, @@ -26,10 +25,10 @@ const board board_red_v2 = { .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, .init = red_panda_v2_init, + .init_bootloader = unused_init_bootloader, .enable_can_transceiver = red_chiplet_enable_can_transceiver, .enable_can_transceivers = red_chiplet_enable_can_transceivers, .set_led = red_set_led, - .set_gps_mode = unused_set_gps_mode, .set_can_mode = red_set_can_mode, .check_ignition = red_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/tres.h b/board/boards/tres.h index 97dac7aa0f..0b9b94a682 100644 --- a/board/boards/tres.h +++ b/board/boards/tres.h @@ -89,7 +89,6 @@ const board board_tres = { .board_type = "Tres", .board_tick = tres_board_tick, .harness_config = &red_chiplet_harness_config, - .has_gps = false, .has_hw_gmlan = false, .has_obd = true, .has_lin = false, @@ -101,10 +100,10 @@ const board board_tres = { .fan_stall_recovery = false, .fan_enable_cooldown_time = 3U, .init = tres_init, + .init_bootloader = unused_init_bootloader, .enable_can_transceiver = red_chiplet_enable_can_transceiver, .enable_can_transceivers = red_chiplet_enable_can_transceivers, .set_led = red_set_led, - .set_gps_mode = unused_set_gps_mode, .set_can_mode = red_set_can_mode, .check_ignition = red_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/uno.h b/board/boards/uno.h index ad773f6e49..e0dc0d2c5f 100644 --- a/board/boards/uno.h +++ b/board/boards/uno.h @@ -51,10 +51,6 @@ void uno_set_led(uint8_t color, bool enabled) { } } -void uno_set_gps_load_switch(bool enabled) { - set_gpio_output(GPIOC, 12, enabled); -} - void uno_set_bootkick(bool enabled){ if (enabled) { set_gpio_output(GPIOB, 14, false); @@ -73,31 +69,6 @@ void uno_set_phone_power(bool enabled){ set_gpio_output(GPIOB, 4, enabled); } -void uno_set_gps_mode(uint8_t mode) { - switch (mode) { - case GPS_DISABLED: - // GPS OFF - set_gpio_output(GPIOB, 1, 0); - set_gpio_output(GPIOC, 5, 0); - uno_set_gps_load_switch(false); - break; - case GPS_ENABLED: - // GPS ON - set_gpio_output(GPIOB, 1, 1); - set_gpio_output(GPIOC, 5, 1); - uno_set_gps_load_switch(true); - break; - case GPS_BOOTMODE: - set_gpio_output(GPIOB, 1, 1); - set_gpio_output(GPIOC, 5, 0); - uno_set_gps_load_switch(true); - break; - default: - print("Invalid ESP/GPS mode\n"); - break; - } -} - void uno_set_can_mode(uint8_t mode){ switch (mode) { case CAN_MODE_NORMAL: @@ -168,8 +139,10 @@ void uno_init(void) { set_gpio_mode(GPIOC, 0, MODE_ANALOG); set_gpio_mode(GPIOC, 3, MODE_ANALOG); - // Set default state of GPS - current_board->set_gps_mode(GPS_ENABLED); + // GPS off + set_gpio_output(GPIOB, 1, 0); + set_gpio_output(GPIOC, 5, 0); + set_gpio_output(GPIOC, 12, 0); // C10: OBD_SBU1_RELAY (harness relay driving output) // C11: OBD_SBU2_RELAY (harness relay driving output) @@ -183,9 +156,6 @@ void uno_init(void) { // C8: FAN PWM aka TIM3_CH3 set_gpio_alternate(GPIOC, 8, GPIO_AF2_TIM3); - // Turn on GPS load switch. - uno_set_gps_load_switch(true); - // Turn on phone regulator uno_set_phone_power(true); @@ -227,6 +197,13 @@ void uno_init(void) { uno_bootkick(); } +void uno_init_bootloader(void) { + // GPS off + set_gpio_output(GPIOB, 1, 0); + set_gpio_output(GPIOC, 5, 0); + set_gpio_output(GPIOC, 12, 0); +} + const harness_configuration uno_harness_config = { .has_harness = true, .GPIO_SBU1 = GPIOC, @@ -245,7 +222,6 @@ const board board_uno = { .board_type = "Uno", .board_tick = uno_board_tick, .harness_config = &uno_harness_config, - .has_gps = true, .has_hw_gmlan = false, .has_obd = true, .has_lin = false, @@ -257,10 +233,10 @@ const board board_uno = { .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, .init = uno_init, + .init_bootloader = uno_init_bootloader, .enable_can_transceiver = uno_enable_can_transceiver, .enable_can_transceivers = uno_enable_can_transceivers, .set_led = uno_set_led, - .set_gps_mode = uno_set_gps_mode, .set_can_mode = uno_set_can_mode, .check_ignition = uno_check_ignition, .read_current = unused_read_current, diff --git a/board/boards/unused_funcs.h b/board/boards/unused_funcs.h index 4e6214e6a7..24279d2bf9 100644 --- a/board/boards/unused_funcs.h +++ b/board/boards/unused_funcs.h @@ -1,5 +1,4 @@ -void unused_set_gps_mode(uint8_t mode) { - UNUSED(mode); +void unused_init_bootloader(void) { } void unused_set_ir_power(uint8_t percentage) { diff --git a/board/boards/white.h b/board/boards/white.h index 45d860181b..f2dedf0107 100644 --- a/board/boards/white.h +++ b/board/boards/white.h @@ -65,23 +65,6 @@ void white_set_usb_power_mode(uint8_t mode){ } } -void white_set_gps_mode(uint8_t mode) { - switch (mode) { - case GPS_DISABLED: - // ESP OFF - set_gpio_output(GPIOC, 14, 0); - set_gpio_output(GPIOC, 5, 0); - break; - case GPS_BOOTMODE: - set_gpio_output(GPIOC, 14, 1); - set_gpio_output(GPIOC, 5, 0); - break; - default: - print("Invalid ESP/GPS mode\n"); - break; - } -} - void white_set_can_mode(uint8_t mode){ switch (mode) { case CAN_MODE_NORMAL: @@ -150,7 +133,7 @@ bool white_check_ignition(void){ return !get_gpio_input(GPIOA, 1); } -void white_grey_common_init(void) { +void white_grey_init(void) { common_init_gpio(); // C3: current sense @@ -222,13 +205,16 @@ void white_grey_common_init(void) { } else { white_set_usb_power_mode(USB_POWER_CLIENT); } -} -void white_init(void) { - white_grey_common_init(); + // ESP/GPS off + set_gpio_output(GPIOC, 5, 0); + set_gpio_output(GPIOC, 14, 0); +} - // Set ESP off by default - current_board->set_gps_mode(GPS_DISABLED); +void white_grey_init_bootloader(void) { + // ESP/GPS off + set_gpio_output(GPIOC, 5, 0); + set_gpio_output(GPIOC, 14, 0); } const harness_configuration white_harness_config = { @@ -239,7 +225,6 @@ const board board_white = { .board_type = "White", .board_tick = unused_board_tick, .harness_config = &white_harness_config, - .has_gps = false, .has_hw_gmlan = true, .has_obd = false, .has_lin = true, @@ -250,11 +235,11 @@ const board board_white = { .avdd_mV = 3300U, .fan_stall_recovery = false, .fan_enable_cooldown_time = 0U, - .init = white_init, + .init = white_grey_init, + .init_bootloader = white_grey_init_bootloader, .enable_can_transceiver = white_enable_can_transceiver, .enable_can_transceivers = white_enable_can_transceivers, .set_led = white_set_led, - .set_gps_mode = white_set_gps_mode, .set_can_mode = white_set_can_mode, .check_ignition = white_check_ignition, .read_current = white_read_current, diff --git a/board/drivers/uart.h b/board/drivers/uart.h index 824e7d7592..cde8137402 100644 --- a/board/drivers/uart.h +++ b/board/drivers/uart.h @@ -1,8 +1,7 @@ -// IRQs: USART1, USART2, USART3, UART5 +// IRQs: USART2, USART3, UART5 // ***************************** Definitions ***************************** #define FIFO_SIZE_INT 0x400U -#define FIFO_SIZE_DMA 0x1000U typedef struct uart_ring { volatile uint16_t w_ptr_tx; @@ -15,11 +14,10 @@ typedef struct uart_ring { uint32_t rx_fifo_size; USART_TypeDef *uart; void (*callback)(struct uart_ring*); - bool dma_rx; bool overwrite; } uart_ring; -#define UART_BUFFER(x, size_rx, size_tx, uart_ptr, callback_ptr, rx_dma, overwrite_mode) \ +#define UART_BUFFER(x, size_rx, size_tx, uart_ptr, callback_ptr, overwrite_mode) \ uint8_t elems_rx_##x[size_rx]; \ uint8_t elems_tx_##x[size_tx]; \ uart_ring uart_ring_##x = { \ @@ -33,7 +31,6 @@ typedef struct uart_ring { .rx_fifo_size = (size_rx), \ .uart = (uart_ptr), \ .callback = (callback_ptr), \ - .dma_rx = (rx_dma), \ .overwrite = (overwrite_mode) \ }; @@ -44,23 +41,20 @@ void uart_send_break(uart_ring *u); // ******************************** UART buffers ******************************** -// gps = USART1 -UART_BUFFER(gps, FIFO_SIZE_DMA, FIFO_SIZE_INT, USART1, NULL, true, false) - // lin1, K-LINE = UART5 // lin2, L-LINE = USART3 -UART_BUFFER(lin1, FIFO_SIZE_INT, FIFO_SIZE_INT, UART5, NULL, false, false) -UART_BUFFER(lin2, FIFO_SIZE_INT, FIFO_SIZE_INT, USART3, NULL, false, false) +UART_BUFFER(lin1, FIFO_SIZE_INT, FIFO_SIZE_INT, UART5, NULL, false) +UART_BUFFER(lin2, FIFO_SIZE_INT, FIFO_SIZE_INT, USART3, NULL, false) // debug = USART2 -UART_BUFFER(debug, FIFO_SIZE_INT, FIFO_SIZE_INT, USART2, debug_ring_callback, false, true) +UART_BUFFER(debug, FIFO_SIZE_INT, FIFO_SIZE_INT, USART2, debug_ring_callback, true) // SOM debug = UART7 #ifdef STM32H7 - UART_BUFFER(som_debug, FIFO_SIZE_INT, FIFO_SIZE_INT, UART7, NULL, false, true) + UART_BUFFER(som_debug, FIFO_SIZE_INT, FIFO_SIZE_INT, UART7, NULL, true) #else // UART7 is not available on F4 - UART_BUFFER(som_debug, 1U, 1U, NULL, NULL, false, true) + UART_BUFFER(som_debug, 1U, 1U, NULL, NULL, true) #endif uart_ring *get_ring_by_number(int a) { @@ -69,9 +63,6 @@ uart_ring *get_ring_by_number(int a) { case 0: ring = &uart_ring_debug; break; - case 1: - ring = &uart_ring_gps; - break; case 2: ring = &uart_ring_lin1; break; diff --git a/board/early_init.h b/board/early_init.h index 6c60b20fbb..ae652aebce 100644 --- a/board/early_init.h +++ b/board/early_init.h @@ -51,9 +51,9 @@ void early_initialization(void) { detect_board_type(); if (enter_bootloader_mode == ENTER_BOOTLOADER_MAGIC) { - #ifdef PANDA - current_board->set_gps_mode(GPS_DISABLED); - #endif + #ifdef PANDA + current_board->init_bootloader(); + #endif current_board->set_led(LED_GREEN, 1); jump_to_bootloader(); } diff --git a/board/main.c b/board/main.c index 72da6b84f3..56abbed527 100644 --- a/board/main.c +++ b/board/main.c @@ -371,13 +371,6 @@ int main(void) { log("main start"); - if (current_board->has_gps) { - uart_init(&uart_ring_gps, 9600); - } else { - // enable ESP uart - uart_init(&uart_ring_gps, 115200); - } - if (current_board->has_lin) { // enable LIN uart_init(&uart_ring_lin1, 10400); diff --git a/board/main_comms.h b/board/main_comms.h index 00d5e7a0b1..faa18b849a 100644 --- a/board/main_comms.h +++ b/board/main_comms.h @@ -262,28 +262,6 @@ int comms_control_handler(ControlPacket_t *req, uint8_t *resp) { case 0xd8: NVIC_SystemReset(); break; - // **** 0xd9: set ESP power - case 0xd9: - if (req->param1 == 1U) { - current_board->set_gps_mode(GPS_ENABLED); - } else if (req->param1 == 2U) { - current_board->set_gps_mode(GPS_BOOTMODE); - } else { - current_board->set_gps_mode(GPS_DISABLED); - } - break; - // **** 0xda: reset ESP, with optional boot mode - case 0xda: - current_board->set_gps_mode(GPS_DISABLED); - delay(1000000); - if (req->param1 == 1U) { - current_board->set_gps_mode(GPS_BOOTMODE); - } else { - current_board->set_gps_mode(GPS_ENABLED); - } - delay(1000000); - current_board->set_gps_mode(GPS_ENABLED); - break; // **** 0xdb: set GMLAN (white/grey) or OBD CAN (black) multiplexing mode case 0xdb: if(current_board->has_obd){ @@ -343,11 +321,6 @@ int comms_control_handler(ControlPacket_t *req, uint8_t *resp) { break; } - // TODO: Remove this again and fix boardd code to hande the message bursts instead of single chars - if (ur == &uart_ring_gps) { - dma_pointer_handler(ur, DMA2_Stream5->NDTR); - } - // read while ((resp_len < MIN(req->length, USBPACKET_MAX_SIZE)) && getc(ur, (char*)&resp[resp_len])) { diff --git a/board/power_saving.h b/board/power_saving.h index 64baad0320..2b7d7c9872 100644 --- a/board/power_saving.h +++ b/board/power_saving.h @@ -13,11 +13,7 @@ void set_power_save_state(int state) { bool enable = false; if (state == POWER_SAVE_STATUS_ENABLED) { print("enable power savings\n"); - if (current_board->has_gps) { - const char UBLOX_SLEEP_MSG[] = "\xb5\x62\x06\x04\x04\x00\x01\x00\x08\x00\x17\x78"; - uart_ring *ur = get_ring_by_number(1); - for (unsigned int i = 0; i < sizeof(UBLOX_SLEEP_MSG) - 1U; i++) while (!putc(ur, UBLOX_SLEEP_MSG[i])); - } + // Disable CAN interrupts if (harness.status == HARNESS_STATUS_FLIPPED) { llcan_irq_disable(cans[0]); @@ -27,11 +23,6 @@ void set_power_save_state(int state) { llcan_irq_disable(cans[1]); } else { print("disable power savings\n"); - if (current_board->has_gps) { - const char UBLOX_WAKE_MSG[] = "\xb5\x62\x06\x04\x04\x00\x01\x00\x09\x00\x18\x7a"; - uart_ring *ur = get_ring_by_number(1); - for (unsigned int i = 0; i < sizeof(UBLOX_WAKE_MSG) - 1U; i++) while (!putc(ur, UBLOX_WAKE_MSG[i])); - } if (harness.status == HARNESS_STATUS_FLIPPED) { llcan_irq_enable(cans[0]); @@ -45,13 +36,6 @@ void set_power_save_state(int state) { current_board->enable_can_transceivers(enable); - // Switch EPS/GPS - if (enable) { - current_board->set_gps_mode(GPS_ENABLED); - } else { - current_board->set_gps_mode(GPS_DISABLED); - } - if(current_board->has_hw_gmlan){ // turn on GMLAN set_gpio_output(GPIOB, 14, enable); diff --git a/board/stm32fx/lluart.h b/board/stm32fx/lluart.h index 4cdd337210..aed99a77f0 100644 --- a/board/stm32fx/lluart.h +++ b/board/stm32fx/lluart.h @@ -21,31 +21,28 @@ void uart_tx_ring(uart_ring *q){ } void uart_rx_ring(uart_ring *q){ - // Do not read out directly if DMA enabled - if (q->dma_rx == false) { - ENTER_CRITICAL(); + ENTER_CRITICAL(); - // Read out RX buffer - uint8_t c = q->uart->DR; // This read after reading SR clears a bunch of interrupts + // Read out RX buffer + uint8_t c = q->uart->DR; // This read after reading SR clears a bunch of interrupts - uint16_t next_w_ptr = (q->w_ptr_rx + 1U) % q->rx_fifo_size; + uint16_t next_w_ptr = (q->w_ptr_rx + 1U) % q->rx_fifo_size; - if ((next_w_ptr == q->r_ptr_rx) && q->overwrite) { - // overwrite mode: drop oldest byte - q->r_ptr_rx = (q->r_ptr_rx + 1U) % q->rx_fifo_size; - } + if ((next_w_ptr == q->r_ptr_rx) && q->overwrite) { + // overwrite mode: drop oldest byte + q->r_ptr_rx = (q->r_ptr_rx + 1U) % q->rx_fifo_size; + } - // Do not overwrite buffer data - if (next_w_ptr != q->r_ptr_rx) { - q->elems_rx[q->w_ptr_rx] = c; - q->w_ptr_rx = next_w_ptr; - if (q->callback != NULL) { - q->callback(q); - } + // Do not overwrite buffer data + if (next_w_ptr != q->r_ptr_rx) { + q->elems_rx[q->w_ptr_rx] = c; + q->w_ptr_rx = next_w_ptr; + if (q->callback != NULL) { + q->callback(q); } - - EXIT_CRITICAL(); } + + EXIT_CRITICAL(); } void uart_send_break(uart_ring *u) { @@ -53,34 +50,6 @@ void uart_send_break(uart_ring *u) { u->uart->CR1 |= USART_CR1_SBK; } -// This function should be called on: -// * Half-transfer DMA interrupt -// * Full-transfer DMA interrupt -// * UART IDLE detection -uint32_t prev_w_index = 0; -void dma_pointer_handler(uart_ring *q, uint32_t dma_ndtr) { - ENTER_CRITICAL(); - uint32_t w_index = (q->rx_fifo_size - dma_ndtr); - - // Check for new data - if (w_index != prev_w_index){ - // Check for overflow - if ( - ((prev_w_index < q->r_ptr_rx) && (q->r_ptr_rx <= w_index)) || // No rollover - ((w_index < prev_w_index) && ((q->r_ptr_rx <= w_index) || (prev_w_index < q->r_ptr_rx))) // Rollover - ){ - // We lost data. Set the new read pointer to the oldest byte still available - q->r_ptr_rx = (w_index + 1U) % q->rx_fifo_size; - } - - // Set write pointer - q->w_ptr_rx = w_index; - } - - prev_w_index = w_index; - EXIT_CRITICAL(); -} - // This read after reading SR clears all error interrupts. We don't want compiler warnings, nor optimizations #define UART_READ_DR(uart) volatile uint8_t t = (uart)->DR; UNUSED(t); @@ -106,103 +75,28 @@ void uart_interrupt_handler(uart_ring *q) { // Send if necessary uart_tx_ring(q); - // Run DMA pointer handler if the line is idle - if(q->dma_rx && (status & USART_SR_IDLE)){ - // Reset IDLE flag - UART_READ_DR(q->uart) - - if(q == &uart_ring_gps){ - dma_pointer_handler(&uart_ring_gps, DMA2_Stream5->NDTR); - } else { - #ifdef DEBUG_UART - print("No IDLE dma_pointer_handler implemented for this UART."); - #endif - } - } - EXIT_CRITICAL(); } -void USART1_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_gps); } void USART2_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_debug); } void USART3_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_lin2); } void UART5_IRQ_Handler(void) { uart_interrupt_handler(&uart_ring_lin1); } -void DMA2_Stream5_IRQ_Handler(void) { - ENTER_CRITICAL(); - - // Handle errors - if((DMA2->HISR & DMA_HISR_TEIF5) || (DMA2->HISR & DMA_HISR_DMEIF5) || (DMA2->HISR & DMA_HISR_FEIF5)){ - #ifdef DEBUG_UART - print("Encountered UART DMA error. Clearing and restarting DMA...\n"); - #endif - - // Clear flags - DMA2->HIFCR = DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5; - - // Re-enable the DMA if necessary - DMA2_Stream5->CR |= DMA_SxCR_EN; - } - - // Re-calculate write pointer and reset flags - dma_pointer_handler(&uart_ring_gps, DMA2_Stream5->NDTR); - DMA2->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5; - - EXIT_CRITICAL(); -} - // ***************************** Hardware setup ***************************** -void dma_rx_init(uart_ring *q) { - // Initialization is UART-dependent - if(q == &uart_ring_gps){ - // DMA2, stream 5, channel 4 - - // Disable FIFO mode (enable direct) - DMA2_Stream5->FCR &= ~DMA_SxFCR_DMDIS; - - // Setup addresses - DMA2_Stream5->PAR = (uint32_t)&(USART1->DR); // Source - DMA2_Stream5->M0AR = (uint32_t)q->elems_rx; // Destination - DMA2_Stream5->NDTR = q->rx_fifo_size; // Number of bytes to copy - - // Circular, Increment memory, byte size, periph -> memory, enable - // Transfer complete, half transfer, transfer error and direct mode error interrupt enable - DMA2_Stream5->CR = DMA_SxCR_CHSEL_2 | DMA_SxCR_MINC | DMA_SxCR_CIRC | DMA_SxCR_HTIE | DMA_SxCR_TCIE | DMA_SxCR_TEIE | DMA_SxCR_DMEIE | DMA_SxCR_EN; - - // Enable DMA receiver in UART - q->uart->CR3 |= USART_CR3_DMAR; - - // Enable UART IDLE interrupt - q->uart->CR1 |= USART_CR1_IDLEIE; - - // Enable interrupt - NVIC_EnableIRQ(DMA2_Stream5_IRQn); - } else { - print("Tried to initialize RX DMA for an unsupported UART\n"); - } -} - #define __DIV(_PCLK_, _BAUD_) (((_PCLK_) * 25U) / (4U * (_BAUD_))) #define __DIVMANT(_PCLK_, _BAUD_) (__DIV((_PCLK_), (_BAUD_)) / 100U) #define __DIVFRAQ(_PCLK_, _BAUD_) ((((__DIV((_PCLK_), (_BAUD_)) - (__DIVMANT((_PCLK_), (_BAUD_)) * 100U)) * 16U) + 50U) / 100U) #define __USART_BRR(_PCLK_, _BAUD_) ((__DIVMANT((_PCLK_), (_BAUD_)) << 4) | (__DIVFRAQ((_PCLK_), (_BAUD_)) & 0x0FU)) void uart_set_baud(USART_TypeDef *u, unsigned int baud) { - if (u == USART1) { - // USART1 is on APB2 - u->BRR = __USART_BRR(48000000U, baud); - } else { - u->BRR = __USART_BRR(24000000U, baud); - } + u->BRR = __USART_BRR(24000000U, baud); } void uart_init(uart_ring *q, int baud) { if(q->uart != NULL){ // Register interrupts (max data rate: 115200 baud) - if(q->uart == USART1){ - REGISTER_INTERRUPT(USART1_IRQn, USART1_IRQ_Handler, 150000U, FAULT_INTERRUPT_RATE_UART_1) - } else if (q->uart == USART2){ + if (q->uart == USART2){ REGISTER_INTERRUPT(USART2_IRQn, USART2_IRQ_Handler, 150000U, FAULT_INTERRUPT_RATE_UART_2) } else if (q->uart == USART3){ REGISTER_INTERRUPT(USART3_IRQn, USART3_IRQ_Handler, 150000U, FAULT_INTERRUPT_RATE_UART_3) @@ -211,9 +105,6 @@ void uart_init(uart_ring *q, int baud) { } else { // UART not used. Skip registering interrupts } - if(q->dma_rx){ - REGISTER_INTERRUPT(DMA2_Stream5_IRQn, DMA2_Stream5_IRQ_Handler, 100U, FAULT_INTERRUPT_RATE_UART_DMA) // Called twice per buffer - } // Set baud and enable peripheral with TX and RX mode uart_set_baud(q->uart, baud); @@ -223,9 +114,7 @@ void uart_init(uart_ring *q, int baud) { } // Enable UART interrupts - if(q->uart == USART1){ - NVIC_EnableIRQ(USART1_IRQn); - } else if (q->uart == USART2){ + if (q->uart == USART2){ NVIC_EnableIRQ(USART2_IRQn); } else if (q->uart == USART3){ NVIC_EnableIRQ(USART3_IRQn); @@ -234,10 +123,5 @@ void uart_init(uart_ring *q, int baud) { } else { // UART not used. Skip enabling interrupts } - - // Initialise RX DMA if used - if(q->dma_rx){ - dma_rx_init(q); - } } } diff --git a/board/stm32fx/peripherals.h b/board/stm32fx/peripherals.h index d910886d3c..33a1f6ffef 100644 --- a/board/stm32fx/peripherals.h +++ b/board/stm32fx/peripherals.h @@ -36,10 +36,6 @@ void common_init_gpio(void) { gpio_usb_init(); - // A9,A10: USART 1 for talking to the GPS - set_gpio_alternate(GPIOA, 9, GPIO_AF7_USART1); - set_gpio_alternate(GPIOA, 10, GPIO_AF7_USART1); - // B8,B9: CAN 1 #ifdef STM32F4 set_gpio_alternate(GPIOB, 8, GPIO_AF8_CAN1); @@ -84,7 +80,6 @@ void peripherals_init(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // interrupt timer RCC->APB1ENR |= RCC_APB1ENR_TIM12EN; // gmlan_alt RCC->APB1ENR |= RCC_APB1ENR_PWREN; // for RTC config - RCC->APB2ENR |= RCC_APB2ENR_USART1EN; RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN; RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // clock source timer RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; diff --git a/board/stm32h7/lluart.h b/board/stm32h7/lluart.h index 6d1a363e27..640ea18d13 100644 --- a/board/stm32h7/lluart.h +++ b/board/stm32h7/lluart.h @@ -1,7 +1,3 @@ - -void dma_pointer_handler(uart_ring *q, uint32_t dma_ndtr) { UNUSED(q); UNUSED(dma_ndtr); } -void dma_rx_init(uart_ring *q) { UNUSED(q); } - #define __DIV(_PCLK_, _BAUD_) (((_PCLK_) * 25U) / (4U * (_BAUD_))) #define __DIVMANT(_PCLK_, _BAUD_) (__DIV((_PCLK_), (_BAUD_)) / 100U) #define __DIVFRAQ(_PCLK_, _BAUD_) ((((__DIV((_PCLK_), (_BAUD_)) - (__DIVMANT((_PCLK_), (_BAUD_)) * 100U)) * 16U) + 50U) / 100U) @@ -9,30 +5,28 @@ void dma_rx_init(uart_ring *q) { UNUSED(q); } void uart_rx_ring(uart_ring *q){ // Do not read out directly if DMA enabled - if (q->dma_rx == false) { - ENTER_CRITICAL(); + ENTER_CRITICAL(); - // Read out RX buffer - uint8_t c = q->uart->RDR; // This read after reading SR clears a bunch of interrupts + // Read out RX buffer + uint8_t c = q->uart->RDR; // This read after reading SR clears a bunch of interrupts - uint16_t next_w_ptr = (q->w_ptr_rx + 1U) % q->rx_fifo_size; + uint16_t next_w_ptr = (q->w_ptr_rx + 1U) % q->rx_fifo_size; - if ((next_w_ptr == q->r_ptr_rx) && q->overwrite) { - // overwrite mode: drop oldest byte - q->r_ptr_rx = (q->r_ptr_rx + 1U) % q->rx_fifo_size; - } + if ((next_w_ptr == q->r_ptr_rx) && q->overwrite) { + // overwrite mode: drop oldest byte + q->r_ptr_rx = (q->r_ptr_rx + 1U) % q->rx_fifo_size; + } - // Do not overwrite buffer data - if (next_w_ptr != q->r_ptr_rx) { - q->elems_rx[q->w_ptr_rx] = c; - q->w_ptr_rx = next_w_ptr; - if (q->callback != NULL) { - q->callback(q); - } + // Do not overwrite buffer data + if (next_w_ptr != q->r_ptr_rx) { + q->elems_rx[q->w_ptr_rx] = c; + q->w_ptr_rx = next_w_ptr; + if (q->callback != NULL) { + q->callback(q); } - - EXIT_CRITICAL(); } + + EXIT_CRITICAL(); } void uart_tx_ring(uart_ring *q){ @@ -96,16 +90,6 @@ void uart_interrupt_handler(uart_ring *q) { // Send if necessary uart_tx_ring(q); - // Run DMA pointer handler if the line is idle - if(q->dma_rx && (status & USART_ISR_IDLE)){ - // Reset IDLE flag - UART_READ_RDR(q->uart) - - #ifdef DEBUG_UART - print("No IDLE dma_pointer_handler implemented for this UART."); - #endif - } - EXIT_CRITICAL(); } @@ -115,10 +99,6 @@ void uart_init(uart_ring *q, int baud) { if (q->uart == UART7) { REGISTER_INTERRUPT(UART7_IRQn, UART7_IRQ_Handler, 150000U, FAULT_INTERRUPT_RATE_UART_7) - if (q->dma_rx) { - // TODO - } - uart_set_baud(q->uart, baud); q->uart->CR1 = USART_CR1_UE | USART_CR1_TE | USART_CR1_RE; @@ -127,10 +107,5 @@ void uart_init(uart_ring *q, int baud) { // Enable UART interrupts NVIC_EnableIRQ(UART7_IRQn); - - // Initialise RX DMA if used - if (q->dma_rx) { - dma_rx_init(q); - } } } diff --git a/python/__init__.py b/python/__init__.py index 3037f2de60..6c714ca3b5 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -770,13 +770,6 @@ def set_power_save(self, power_save_enabled=0): def enable_deepsleep(self): self._handle.controlWrite(Panda.REQUEST_OUT, 0xfb, 0, 0, b'') - def set_esp_power(self, on): - self._handle.controlWrite(Panda.REQUEST_OUT, 0xd9, int(on), 0, b'') - - def esp_reset(self, bootmode=0): - self._handle.controlWrite(Panda.REQUEST_OUT, 0xda, int(bootmode), 0, b'') - time.sleep(0.2) - def set_safety_mode(self, mode=SAFETY_SILENT, param=0): self._handle.controlWrite(Panda.REQUEST_OUT, 0xdc, mode, param, b'') diff --git a/tests/gps_stability_test.py b/tests/gps_stability_test.py deleted file mode 100755 index f8cb13caab..0000000000 --- a/tests/gps_stability_test.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python3 -# flake8: noqa - -import os -import sys -import time -import random -import threading - -sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")) -from panda import Panda, PandaSerial # noqa: E402 - -INIT_GPS_BAUD = 9600 -GPS_BAUD = 460800 - -def connect(): - pandas = Panda.list() - print(pandas) - - # make sure two pandas are connected - if len(pandas) != 2: - print("Connect white and grey/black panda to run this test!") - assert False - - # connect - pandas[0] = Panda(pandas[0]) - pandas[1] = Panda(pandas[1]) - - white_panda = None - gps_panda = None - - # find out which one is white (for spamming the CAN buses) - if pandas[0].get_type() == Panda.HW_TYPE_WHITE_PANDA and pandas[1].get_type() != Panda.HW_TYPE_WHITE_PANDA: - white_panda = pandas[0] - gps_panda = pandas[1] - elif pandas[0].get_type() != Panda.HW_TYPE_WHITE_PANDA and pandas[1].get_type() == Panda.HW_TYPE_WHITE_PANDA: - white_panda = pandas[1] - gps_panda = pandas[0] - else: - print("Connect white and grey/black panda to run this test!") - assert False - return white_panda, gps_panda - -def spam_buses_thread(panda): - try: - panda.set_safety_mode(Panda.SAFETY_ALLOUTPUT) - while True: - at = random.randint(1, 2000) - st = (b"test" + os.urandom(10))[0:8] - bus = random.randint(0, 2) - panda.can_send(at, st, bus) - except Exception as e: - print(e) - -def read_can_thread(panda): - try: - while True: - panda.can_recv() - except Exception as e: - print(e) - -def init_gps(panda): - def add_nmea_checksum(msg): - d = msg[1:] - cs = 0 - for i in d: - cs ^= ord(i) - return msg + "*%02X" % cs - - ser = PandaSerial(panda, 1, INIT_GPS_BAUD) - - # Power cycle the gps by toggling reset - print("Resetting GPS") - panda.set_esp_power(0) - time.sleep(0.5) - panda.set_esp_power(1) - time.sleep(0.5) - - # Upping baud rate - print("Upping GPS baud rate") - msg = str.encode(add_nmea_checksum("$PUBX,41,1,0007,0003,%d,0" % GPS_BAUD) + "\r\n") - ser.write(msg) - time.sleep(1) # needs a wait for it to actually send - - # Reconnecting with the correct baud - ser = PandaSerial(panda, 1, GPS_BAUD) - - # Sending all config messages boardd sends - print("Sending config") - ser.write(b"\xB5\x62\x06\x00\x14\x00\x03\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x1E\x7F") - ser.write(b"\xB5\x62\x06\x3E\x00\x00\x44\xD2") - ser.write(b"\xB5\x62\x06\x00\x14\x00\x00\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x35") - ser.write(b"\xB5\x62\x06\x00\x14\x00\x01\x00\x00\x00\xC0\x08\x00\x00\x00\x08\x07\x00\x01\x00\x01\x00\x00\x00\x00\x00\xF4\x80") - ser.write(b"\xB5\x62\x06\x00\x14\x00\x04\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1D\x85") - ser.write(b"\xB5\x62\x06\x00\x00\x00\x06\x18") - ser.write(b"\xB5\x62\x06\x00\x01\x00\x01\x08\x22") - ser.write(b"\xB5\x62\x06\x00\x01\x00\x02\x09\x23") - ser.write(b"\xB5\x62\x06\x00\x01\x00\x03\x0A\x24") - ser.write(b"\xB5\x62\x06\x08\x06\x00\x64\x00\x01\x00\x00\x00\x79\x10") - ser.write(b"\xB5\x62\x06\x24\x24\x00\x05\x00\x04\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5A\x63") - ser.write(b"\xB5\x62\x06\x1E\x14\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3C\x37") - ser.write(b"\xB5\x62\x06\x24\x00\x00\x2A\x84") - ser.write(b"\xB5\x62\x06\x23\x00\x00\x29\x81") - ser.write(b"\xB5\x62\x06\x1E\x00\x00\x24\x72") - ser.write(b"\xB5\x62\x06\x01\x03\x00\x01\x07\x01\x13\x51") - ser.write(b"\xB5\x62\x06\x01\x03\x00\x02\x15\x01\x22\x70") - ser.write(b"\xB5\x62\x06\x01\x03\x00\x02\x13\x01\x20\x6C") - - print("Initialized GPS") - -received_messages = 0 -received_bytes = 0 -send_something = False -def gps_read_thread(panda): - global received_messages, received_bytes, send_something - ser = PandaSerial(panda, 1, GPS_BAUD) - while True: - ret = ser.read(1024) - time.sleep(0.001) - if len(ret): - received_messages += 1 - received_bytes += len(ret) - if send_something: - ser.write("test") - send_something = False - - -CHECK_PERIOD = 5 -MIN_BYTES = 10000 -MAX_BYTES = 50000 - -min_failures = 0 -max_failures = 0 - -if __name__ == "__main__": - white_panda, gps_panda = connect() - - # Start spamming the CAN buses with the white panda. Also read the messages to add load on the GPS panda - threading.Thread(target=spam_buses_thread, args=(white_panda,)).start() - threading.Thread(target=read_can_thread, args=(gps_panda,)).start() - - # Start GPS checking - init_gps(gps_panda) - - read_thread = threading.Thread(target=gps_read_thread, args=(gps_panda,)) - read_thread.start() - while True: - time.sleep(CHECK_PERIOD) - if(received_bytes < MIN_BYTES): - print("Panda is not sending out enough data! Got " + str(received_messages) + " (" + str(received_bytes) + "B) in the last " + str(CHECK_PERIOD) + " seconds") - send_something = True - min_failures += 1 - elif(received_bytes > MAX_BYTES): - print("Panda is not sending out too much data! Got " + str(received_messages) + " (" + str(received_bytes) + "B) in the last " + str(CHECK_PERIOD) + " seconds") - print("Probably not on the right baud rate, got reset somehow? Resetting...") - max_failures += 1 - init_gps(gps_panda) - else: - print("Got " + str(received_messages) + " (" + str(received_bytes) + "B) messages in the last " + str(CHECK_PERIOD) + " seconds.") - if(min_failures > 0): - print("Total min failures: ", min_failures) - if(max_failures > 0): - print("Total max failures: ", max_failures) - received_messages = 0 - received_bytes = 0 diff --git a/tests/hitl/5_gps.py b/tests/hitl/5_gps.py deleted file mode 100644 index 3cead333ed..0000000000 --- a/tests/hitl/5_gps.py +++ /dev/null @@ -1,21 +0,0 @@ -import time -import pytest - -from panda import PandaSerial -from panda.tests.hitl.conftest import PandaGroup - - -@pytest.mark.test_panda_types(PandaGroup.GPS) -def test_gps_version(p): - serial = PandaSerial(p, 1, 9600) - # Reset and check twice to make sure the enabling works - for _ in range(2): - # Reset GPS - p.set_esp_power(0) - time.sleep(2) - p.set_esp_power(1) - time.sleep(1) - - # Read startup message and check if version is contained - dat = serial.read(0x1000) # Read one full panda DMA buffer. This should include the startup message - assert b'HPG 1.40ROV' in dat \ No newline at end of file diff --git a/tests/hitl/8_spi.py b/tests/hitl/5_spi.py similarity index 100% rename from tests/hitl/8_spi.py rename to tests/hitl/5_spi.py diff --git a/tests/hitl/conftest.py b/tests/hitl/conftest.py index 22a0b23e85..50ef2a7134 100644 --- a/tests/hitl/conftest.py +++ b/tests/hitl/conftest.py @@ -25,7 +25,6 @@ class PandaGroup: H7 = (Panda.HW_TYPE_RED_PANDA, Panda.HW_TYPE_RED_PANDA_V2, Panda.HW_TYPE_TRES) GEN2 = (Panda.HW_TYPE_BLACK_PANDA, Panda.HW_TYPE_UNO, Panda.HW_TYPE_DOS) + H7 - GPS = (Panda.HW_TYPE_BLACK_PANDA, Panda.HW_TYPE_UNO) GMLAN = (Panda.HW_TYPE_WHITE_PANDA, Panda.HW_TYPE_GREY_PANDA) TESTED = (Panda.HW_TYPE_WHITE_PANDA, Panda.HW_TYPE_BLACK_PANDA, Panda.HW_TYPE_RED_PANDA, Panda.HW_TYPE_RED_PANDA_V2, Panda.HW_TYPE_UNO) @@ -33,7 +32,7 @@ class PandaGroup: if PARTIAL_TESTS: # minimal set of pandas to get most of our coverage # * red panda covers GEN2, STM32H7 - # * black panda covers STM32F4, GEN2, and GPS + # * black panda covers STM32F4, and GEN2 PandaGroup.TESTED = (Panda.HW_TYPE_BLACK_PANDA, Panda.HW_TYPE_RED_PANDA) # type: ignore elif HW_TYPES is not None: PandaGroup.TESTED = [bytes([int(x), ]) for x in HW_TYPES.strip().split(",")] # type: ignore @@ -222,7 +221,6 @@ def cnnct(s): p.set_can_loopback(False) p.set_gmlan(None) - p.set_esp_power(False) p.set_power_save(False) for bus, speed in BUS_SPEEDS: p.set_can_speed_kbps(bus, speed) diff --git a/tests/location_listener.py b/tests/location_listener.py deleted file mode 100755 index d997327ead..0000000000 --- a/tests/location_listener.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python3 -import os -import time -import sys - -sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")) -from panda import Panda, PandaSerial # noqa: 402 - -def add_nmea_checksum(msg): - d = msg[1:] - cs = 0 - for i in d: - cs ^= ord(i) - return msg + "*%02X" % cs - -if __name__ == "__main__": - panda = Panda() - ser = PandaSerial(panda, 1, 9600) - - # power cycle by toggling reset - print("resetting") - panda.set_esp_power(0) - time.sleep(0.5) - panda.set_esp_power(1) - time.sleep(0.5) - print("done") - print(ser.read(1024)) - - # upping baud rate - baudrate = 460800 - - print("upping baud rate") - msg = str.encode(add_nmea_checksum("$PUBX,41,1,0007,0003,%d,0" % baudrate) + "\r\n") - print(msg) - ser.write(msg) - time.sleep(0.1) # needs a wait for it to actually send - - # new panda serial - ser = PandaSerial(panda, 1, baudrate) - - while True: - ret = ser.read(1024) - if len(ret) > 0: - sys.stdout.write(ret.decode('ascii', 'ignore')) - sys.stdout.flush()