|
|
@ -483,13 +483,27 @@ void panda_state_thread(PubMaster *pm, std::vector<Panda *> pandas, bool spoofin |
|
|
|
|
|
|
|
|
|
|
|
ignition = *ignition_opt; |
|
|
|
ignition = *ignition_opt; |
|
|
|
|
|
|
|
|
|
|
|
// TODO: make this check fast, currently takes 16ms
|
|
|
|
// check if we should have pandad reconnect
|
|
|
|
// check if we have new pandas and are offroad
|
|
|
|
if (!ignition) { |
|
|
|
if (!ignition && (pandas.size() != Panda::list().size())) { |
|
|
|
bool comms_healthy = true; |
|
|
|
|
|
|
|
for (const auto &panda : pandas) { |
|
|
|
|
|
|
|
comms_healthy &= panda->comms_healthy(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!comms_healthy) { |
|
|
|
|
|
|
|
LOGE("Reconnecting, communication to pandas not healthy"); |
|
|
|
|
|
|
|
do_exit = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: list is slow, takes 16ms
|
|
|
|
|
|
|
|
} else if (pandas.size() != Panda::list().size()) { |
|
|
|
LOGW("Reconnecting to changed amount of pandas!"); |
|
|
|
LOGW("Reconnecting to changed amount of pandas!"); |
|
|
|
do_exit = true; |
|
|
|
do_exit = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (do_exit) { |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// clear ignition-based params and set new safety on car start
|
|
|
|
// clear ignition-based params and set new safety on car start
|
|
|
|
if (ignition && !ignition_last) { |
|
|
|
if (ignition && !ignition_last) { |
|
|
|