Skip to content

Commit a793b94

Browse files
boardd: add controls heartbeat (#23185)
* boardd: add controls heartbeat * bump panda * bump again * bump panda
1 parent 768cfdb commit a793b94

File tree

4 files changed

+10
-5
lines changed

4 files changed

+10
-5
lines changed

selfdrive/boardd/boardd.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,8 @@ void panda_state_thread(PubMaster *pm, std::vector<Panda *> pandas, bool spoofin
411411
util::set_thread_name("boardd_panda_state");
412412

413413
Params params;
414+
SubMaster sm({"controlsState"});
415+
414416
Panda *peripheral_panda = pandas[0];
415417
bool ignition_last = false;
416418
std::future<bool> safety_future;
@@ -445,8 +447,11 @@ void panda_state_thread(PubMaster *pm, std::vector<Panda *> pandas, bool spoofin
445447

446448
ignition_last = ignition;
447449

450+
sm.update(0);
451+
const bool engaged = sm.allAliveAndValid({"controlsState"}) && sm["controlsState"].getControlsState().getEnabled();
452+
448453
for (const auto &panda : pandas) {
449-
panda->send_heartbeat();
454+
panda->send_heartbeat(engaged);
450455
}
451456
util::sleep_for(500);
452457
}

selfdrive/boardd/panda.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,8 @@ void Panda::set_usb_power_mode(cereal::PeripheralState::UsbPowerMode power_mode)
340340
usb_write(0xe6, (uint16_t)power_mode, 0);
341341
}
342342

343-
void Panda::send_heartbeat() {
344-
usb_write(0xf3, 1, 0);
343+
void Panda::send_heartbeat(bool engaged) {
344+
usb_write(0xf3, engaged, 0);
345345
}
346346

347347
void Panda::set_can_speed_kbps(uint16_t bus, uint16_t speed) {

selfdrive/boardd/panda.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class Panda {
108108
std::optional<std::string> get_serial();
109109
void set_power_saving(bool power_saving);
110110
void set_usb_power_mode(cereal::PeripheralState::UsbPowerMode power_mode);
111-
void send_heartbeat();
111+
void send_heartbeat(bool engaged);
112112
void set_can_speed_kbps(uint16_t bus, uint16_t speed);
113113
void set_data_speed_kbps(uint16_t bus, uint16_t speed);
114114
void can_send(capnp::List<cereal::CanData>::Reader can_data_list);

0 commit comments

Comments
 (0)