boardd: only look for new usb pandas

pull/28066/head
Comma Device 2 years ago committed by Adeeb Shihadeh
parent 21f88f997d
commit 78df554217
  1. 18
      selfdrive/boardd/boardd.cc
  2. 10
      selfdrive/boardd/panda.cc
  3. 2
      selfdrive/boardd/panda.h

@ -472,6 +472,11 @@ void panda_state_thread(PubMaster *pm, std::vector<Panda *> pandas, bool spoofin
bool is_onroad_last = false; bool is_onroad_last = false;
std::future<bool> safety_future; std::future<bool> safety_future;
std::vector<std::string> connected_serials;
for (Panda *p : pandas) {
connected_serials.push_back(p->hw_serial());
}
LOGD("start panda state thread"); LOGD("start panda state thread");
// run at 2hz // run at 2hz
@ -499,10 +504,15 @@ void panda_state_thread(PubMaster *pm, std::vector<Panda *> pandas, bool spoofin
LOGE("Reconnecting, communication to pandas not healthy"); LOGE("Reconnecting, communication to pandas not healthy");
do_exit = true; do_exit = true;
// TODO: list is slow, takes 16ms } else {
} else if (pandas.size() != Panda::list().size()) { // check for new pandas
LOGW("Reconnecting to changed amount of pandas!"); for (std::string &s : Panda::list(true)) {
do_exit = true; if (!std::count(connected_serials.begin(), connected_serials.end(), s)) {
LOGW("Reconnecting to new panda: %s", s.c_str());
do_exit = true;
break;
}
}
} }
if (do_exit) { if (do_exit) {

@ -44,13 +44,15 @@ std::string Panda::hw_serial() {
return handle->hw_serial; return handle->hw_serial;
} }
std::vector<std::string> Panda::list() { std::vector<std::string> Panda::list(bool usb_only) {
std::vector<std::string> serials = PandaUsbHandle::list(); std::vector<std::string> serials = PandaUsbHandle::list();
#ifndef __APPLE__ #ifndef __APPLE__
for (auto s : PandaSpiHandle::list()) { if (!usb_only) {
if (std::find(serials.begin(), serials.end(), s) == serials.end()) { for (auto s : PandaSpiHandle::list()) {
serials.push_back(s); if (std::find(serials.begin(), serials.end(), s) == serials.end()) {
serials.push_back(s);
}
} }
} }
#endif #endif

@ -57,7 +57,7 @@ public:
std::string hw_serial(); std::string hw_serial();
// Static functions // Static functions
static std::vector<std::string> list(); static std::vector<std::string> list(bool usb_only=false);
// Panda functionality // Panda functionality
cereal::PandaState::PandaType get_hw_type(); cereal::PandaState::PandaType get_hw_type();

Loading…
Cancel
Save