From 878dd00ac8742787434492fa6cd653167c236303 Mon Sep 17 00:00:00 2001 From: Riccardo Date: Tue, 26 Nov 2019 21:37:01 -0800 Subject: [PATCH] solve race condition is relay_malfunction right after changing the relay status by adding a counter --- board/safety/safety_chrysler.h | 2 +- board/safety/safety_ford.h | 2 +- board/safety/safety_gm.h | 2 +- board/safety/safety_honda.h | 2 +- board/safety/safety_hyundai.h | 2 +- board/safety/safety_mazda.h | 2 +- board/safety/safety_subaru.h | 2 +- board/safety/safety_toyota.h | 2 +- board/safety/safety_volkswagen.h | 2 +- tests/safety/test.c | 1 + 10 files changed, 10 insertions(+), 9 deletions(-) diff --git a/board/safety/safety_chrysler.h b/board/safety/safety_chrysler.h index 8c897115513567..129b7137a79938 100644 --- a/board/safety/safety_chrysler.h +++ b/board/safety/safety_chrysler.h @@ -37,7 +37,7 @@ static void chrysler_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { } // check if stock camera ECU is on bus 0 - if ((bus == 0) && (addr == 0x292)) { + if ((safety_mode_cnt > 1) && (bus == 0) && (addr == 0x292)) { relay_malfunction = true; } } diff --git a/board/safety/safety_ford.h b/board/safety/safety_ford.h index 297f9f54a710bb..689f9d25d38f87 100644 --- a/board/safety/safety_ford.h +++ b/board/safety/safety_ford.h @@ -55,7 +55,7 @@ static void ford_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { ford_gas_prev = gas; } - if ((bus == 0) && (addr == 0x3CA)) { + if ((safety_mode_cnt > 1) && (bus == 0) && (addr == 0x3CA)) { relay_malfunction = true; } } diff --git a/board/safety/safety_gm.h b/board/safety/safety_gm.h index f37c5b86ab82c5..b1cc2a1ea0b02f 100644 --- a/board/safety/safety_gm.h +++ b/board/safety/safety_gm.h @@ -100,7 +100,7 @@ static void gm_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { // on powertrain bus. // 384 = ASCMLKASteeringCmd // 715 = ASCMGasRegenCmd - if ((bus == 0) && ((addr == 384) || (addr == 715))) { + if ((safety_mode_cnt > 1) && (bus == 0) && ((addr == 384) || (addr == 715))) { relay_malfunction = true; } } diff --git a/board/safety/safety_honda.h b/board/safety/safety_honda.h index 9eba057d538edb..8f5e14cbe4b4b5 100644 --- a/board/safety/safety_honda.h +++ b/board/safety/safety_honda.h @@ -104,7 +104,7 @@ static void honda_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { // if steering controls messages are received on the destination bus, it's an indication // that the relay might be malfunctioning int bus_rdr_car = (board_has_relay()) ? 0 : 2; // radar bus, car side - if ((addr == 0xE4) || (addr == 0x194)) { + if ((safety_mode_cnt > 1) && ((addr == 0xE4) || (addr == 0x194))) { if ((honda_bosch_hardware && (bus == bus_rdr_car)) || (!honda_bosch_hardware && (bus == 0))) { relay_malfunction = true; diff --git a/board/safety/safety_hyundai.h b/board/safety/safety_hyundai.h index a767fbc0c70fd2..19e2b29ffd822d 100644 --- a/board/safety/safety_hyundai.h +++ b/board/safety/safety_hyundai.h @@ -25,7 +25,7 @@ static void hyundai_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { } // check if stock camera ECU is on bus 0 - if ((bus == 0) && (addr == 832)) { + if ((safety_mode_cnt > 1) && (bus == 0) && (addr == 832)) { relay_malfunction = true; } diff --git a/board/safety/safety_mazda.h b/board/safety/safety_mazda.h index acb60e1457f2ea..5c1b6c51deeccc 100644 --- a/board/safety/safety_mazda.h +++ b/board/safety/safety_mazda.h @@ -55,7 +55,7 @@ void mazda_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { } // if we see wheel speed msgs on MAZDA_CAM bus then relay is closed - if ((bus == MAZDA_CAM) && (addr == MAZDA_WHEEL_SPEED)) { + if ((safety_mode_cnt > 1) && (bus == MAZDA_CAM) && (addr == MAZDA_WHEEL_SPEED)) { relay_malfunction = true; } } diff --git a/board/safety/safety_subaru.h b/board/safety/safety_subaru.h index 548860a2ee41dd..402cbbcd5255e7 100644 --- a/board/safety/safety_subaru.h +++ b/board/safety/safety_subaru.h @@ -41,7 +41,7 @@ static void subaru_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { subaru_cruise_engaged_last = cruise_engaged; } - if ((bus == 0) && ((addr == 0x122) || (addr == 0x164))) { + if ((safety_mode_cnt > 1) && (bus == 0) && ((addr == 0x122) || (addr == 0x164))) { relay_malfunction = true; } } diff --git a/board/safety/safety_toyota.h b/board/safety/safety_toyota.h index 430feebf47321d..1bd0382fd7c3f3 100644 --- a/board/safety/safety_toyota.h +++ b/board/safety/safety_toyota.h @@ -92,7 +92,7 @@ static void toyota_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { } // 0x2E4 is lkas cmd. If it is on bus 0, then relay is unexpectedly closed - if ((addr == 0x2E4) && (bus == 0)) { + if ((safety_mode_cnt > 1) && (addr == 0x2E4) && (bus == 0)) { relay_malfunction = true; } } diff --git a/board/safety/safety_volkswagen.h b/board/safety/safety_volkswagen.h index 19aa1f3d1a2dea..26ea03d7a4fc51 100644 --- a/board/safety/safety_volkswagen.h +++ b/board/safety/safety_volkswagen.h @@ -56,7 +56,7 @@ static void volkswagen_rx_hook(CAN_FIFOMailBox_TypeDef *to_push) { volkswagen_gas_prev = gas; } - if ((bus == 0) && (addr == MSG_HCA_01)) { + if ((safety_mode_cnt > 1) && (bus == 0) && (addr == MSG_HCA_01)) { relay_malfunction = true; } } diff --git a/tests/safety/test.c b/tests/safety/test.c index a7558d04620581..de12a4d046a802 100644 --- a/tests/safety/test.c +++ b/tests/safety/test.c @@ -272,6 +272,7 @@ void set_honda_fwd_brake(bool c){ void init_tests(void){ // get HW_TYPE from env variable set in test.sh hw_type = atoi(getenv("HW_TYPE")); + safety_mode_cnt = 2U; // avoid ignoring relay_malfunction logic } void init_tests_toyota(void){