From 3ab595fa695f081f74af6a0e9b625d3dd36bc736 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Thu, 4 Apr 2024 13:41:11 -0700 Subject: [PATCH] boardd: reset safety mode on exit old-commit-hash: dd18ccbf0a9ab72ace0a7533632d5939c0719953 --- selfdrive/boardd/boardd.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc index fcbf58999e..d8665cc96e 100644 --- a/selfdrive/boardd/boardd.cc +++ b/selfdrive/boardd/boardd.cc @@ -412,6 +412,7 @@ void panda_state_thread(std::vector pandas, bool spoofing_started) { PubMaster pm({"pandaStates", "peripheralState"}); Panda *peripheral_panda = pandas[0]; + bool engaged = false; bool is_onroad = false; bool is_onroad_last = false; std::future safety_future; @@ -483,7 +484,7 @@ void panda_state_thread(std::vector pandas, bool spoofing_started) { is_onroad_last = is_onroad; sm.update(0); - const bool engaged = sm.allAliveAndValid({"controlsState"}) && sm["controlsState"].getControlsState().getEnabled(); + engaged = sm.allAliveAndValid({"controlsState"}) && sm["controlsState"].getControlsState().getEnabled(); for (const auto &panda : pandas) { panda->send_heartbeat(engaged); @@ -491,6 +492,12 @@ void panda_state_thread(std::vector pandas, bool spoofing_started) { rk.keepTime(); } + + if (is_onroad && !engaged) { + for (auto &p : pandas) { + p->set_safety_model(cereal::CarParams::SafetyModel::NO_OUTPUT); + } + } }