From 91ecc227b7e315a918ce261a774038b0f29c73bb Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 22 Mar 2023 17:10:13 -0700 Subject: [PATCH] indecisive --- common/params.cc | 2 ++ selfdrive/boardd/boardd.cc | 32 +++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/common/params.cc b/common/params.cc index c084e03d38..7c255c7164 100644 --- a/common/params.cc +++ b/common/params.cc @@ -112,6 +112,8 @@ std::unordered_map keys = { {"DoShutdown", CLEAR_ON_MANAGER_START}, {"DoUninstall", CLEAR_ON_MANAGER_START}, {"FirmwareObdQueryDone", CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON}, + {"ObdMultiplexingRequested", CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON}, + {"ObdMultiplexingEnabled", CLEAR_ON_MANAGER_START | CLEAR_ON_IGNITION_ON}, {"ForcePowerDown", CLEAR_ON_MANAGER_START}, {"GitBranch", PERSISTENT}, {"GitCommit", PERSISTENT}, diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc index 5d885c2c79..dbfe83e19a 100644 --- a/selfdrive/boardd/boardd.cc +++ b/selfdrive/boardd/boardd.cc @@ -113,11 +113,11 @@ bool safety_setter_thread(std::vector pandas) { return false; } - // set to ELM327 for fingerprinting - for (int i = 0; i < pandas.size(); i++) { - const uint16_t safety_param = (i > 0) ? 1U : 0U; - pandas[i]->set_safety_model(cereal::CarParams::SafetyModel::ELM327, safety_param); - } +// // set to ELM327 for fingerprinting +// for (int i = 0; i < pandas.size(); i++) { +// const uint16_t safety_param = (i > 0) ? 1U : 0U; +// pandas[i]->set_safety_model(cereal::CarParams::SafetyModel::ELM327, safety_param); +// } // wait for FW query at OBD port to finish while (true) { @@ -125,6 +125,16 @@ bool safety_setter_thread(std::vector pandas) { return false; } + // set to ELM327 for fingerprinting, multiplexing is controlled by a param + bool obd_multiplexing_requested = p.getBool("ObdMultiplexingRequested"); + if (obd_multiplexing_requested != p.getBool("ObdMultiplexingEnabled")) { + for (int i = 0; i < pandas.size(); i++) { + const uint16_t safety_param = (i > 0) ? (!obd_multiplexing_requested) : 0U; + pandas[i]->set_safety_model(cereal::CarParams::SafetyModel::ELM327, safety_param); + } + p.putBool("ObdMultiplexingEnabled", obd_multiplexing_requested); + } + if (p.getBool("FirmwareObdQueryDone")) { LOGW("finished FW query at OBD port"); break; @@ -132,12 +142,12 @@ bool safety_setter_thread(std::vector pandas) { util::sleep_for(20); } - // set to ELM327 to finish fingerprinting and for potential ECU knockouts - for (Panda *panda : pandas) { - panda->set_safety_model(cereal::CarParams::SafetyModel::ELM327, 1U); - } - - p.putBool("ObdMultiplexingDisabled", true); +// // set to ELM327 to finish fingerprinting and for potential ECU knockouts +// for (Panda *panda : pandas) { +// panda->set_safety_model(cereal::CarParams::SafetyModel::ELM327, 1U); +// } +// +// p.putBool("ObdMultiplexingDisabled", true); std::string params; LOGW("waiting for params to set safety model");