Skip to content

Commit a95c44a

Browse files
authoredOct 4, 2019
Made setting of NOOUTPUT on no heartbeat more efficient (#287)
* Made setting of NOOUTPUT on no heartbeat more efficient * Stupid mistake * Fixed hardcoded safety mode
1 parent 9486836 commit a95c44a

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed
 

‎board/main.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,9 @@ void TIM3_IRQHandler(void) {
622622
#ifdef EON
623623
if (heartbeat_counter >= (current_board->check_ignition() ? EON_HEARTBEAT_IGNITION_CNT_ON : EON_HEARTBEAT_IGNITION_CNT_OFF)) {
624624
puts("EON hasn't sent a heartbeat for 0x"); puth(heartbeat_counter); puts(" seconds. Safety is set to NOOUTPUT mode.\n");
625-
set_safety_mode(SAFETY_NOOUTPUT, 0U);
625+
if(current_safety_mode != SAFETY_NOOUTPUT){
626+
set_safety_mode(SAFETY_NOOUTPUT, 0U);
627+
}
626628
}
627629
#endif
628630

‎board/safety.h

+21-19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@
1616
#include "safety/safety_mazda.h"
1717
#include "safety/safety_elm327.h"
1818

19+
// from cereal.car.CarParams.SafetyModel
20+
#define SAFETY_NOOUTPUT 0U
21+
#define SAFETY_HONDA 1U
22+
#define SAFETY_TOYOTA 2U
23+
#define SAFETY_ELM327 3U
24+
#define SAFETY_GM 4U
25+
#define SAFETY_HONDA_BOSCH 5U
26+
#define SAFETY_FORD 6U
27+
#define SAFETY_CADILLAC 7U
28+
#define SAFETY_HYUNDAI 8U
29+
#define SAFETY_CHRYSLER 9U
30+
#define SAFETY_TESLA 10U
31+
#define SAFETY_SUBARU 11U
32+
#define SAFETY_GM_PASSIVE 12U
33+
#define SAFETY_MAZDA 13U
34+
#define SAFETY_TOYOTA_IPAS 16U
35+
#define SAFETY_ALLOUTPUT 17U
36+
#define SAFETY_GM_ASCM 18U
37+
38+
uint16_t current_safety_mode = SAFETY_NOOUTPUT;
1939
const safety_hooks *current_hooks = &nooutput_hooks;
2040

2141
void safety_rx_hook(CAN_FIFOMailBox_TypeDef *to_push){
@@ -45,25 +65,6 @@ typedef struct {
4565
const safety_hooks *hooks;
4666
} safety_hook_config;
4767

48-
// from cereal.car.CarParams.SafetyModel
49-
#define SAFETY_NOOUTPUT 0U
50-
#define SAFETY_HONDA 1U
51-
#define SAFETY_TOYOTA 2U
52-
#define SAFETY_ELM327 3U
53-
#define SAFETY_GM 4U
54-
#define SAFETY_HONDA_BOSCH 5U
55-
#define SAFETY_FORD 6U
56-
#define SAFETY_CADILLAC 7U
57-
#define SAFETY_HYUNDAI 8U
58-
#define SAFETY_CHRYSLER 9U
59-
#define SAFETY_TESLA 10U
60-
#define SAFETY_SUBARU 11U
61-
#define SAFETY_GM_PASSIVE 12U
62-
#define SAFETY_MAZDA 13U
63-
#define SAFETY_TOYOTA_IPAS 16U
64-
#define SAFETY_ALLOUTPUT 17U
65-
#define SAFETY_GM_ASCM 18U
66-
6768
const safety_hook_config safety_hook_registry[] = {
6869
{SAFETY_NOOUTPUT, &nooutput_hooks},
6970
{SAFETY_HONDA, &honda_hooks},
@@ -90,6 +91,7 @@ int safety_set_mode(uint16_t mode, int16_t param) {
9091
for (int i = 0; i < hook_config_count; i++) {
9192
if (safety_hook_registry[i].id == mode) {
9293
current_hooks = safety_hook_registry[i].hooks;
94+
current_safety_mode = safety_hook_registry[i].id;
9395
set_status = 0; // set
9496
break;
9597
}

0 commit comments

Comments
 (0)