  
  void can_recv_thread(std::vector<Panda *> pandas) {
    util::set_thread_name("boardd_can_recv");
  
    // can = 8006
    PubMaster pm({"can"});
  
    // run at 100hz
    const uint64_t dt = 10000000ULL;
    uint64_t next_frame_time = nanos_since_boot() + dt;
 
</s> remove   // run at 100hz
 </s> add   // run at 100Hz </s> remove void send_empty_peripheral_state(PubMaster *pm) {
  MessageBuilder msg;
  auto peripheralState  = msg.initEvent().initPeripheralState();
  peripheralState.setPandaType(cereal::PandaState::PandaType::UNKNOWN);
  pm->send("peripheralState", msg);
}

void send_empty_panda_state(PubMaster *pm) {
  MessageBuilder msg;
  auto pandaStates = msg.initEvent().initPandaStates(1);
  pandaStates[0].setPandaType(cereal::PandaState::PandaType::UNKNOWN);
  pm->send("pandaStates", msg);
}

 </s> add  </s> remove   PubMaster pm({"pandaStates", "peripheralState"});
  LOGW("attempting to connect");
 </s> add   LOGW("launching boardd"); </s> remove     send_peripheral_state(pm, peripheral_panda);
    auto ignition_opt = send_panda_states(pm, pandas, spoofing_started);
 </s> add     send_peripheral_state(&pm, peripheral_panda);
    auto ignition_opt = send_panda_states(&pm, pandas, spoofing_started); </s> remove     // Disable ir_pwr on front frame timeout
    uint64_t cur_t = nanos_since_boot();
    if (cur_t - last_front_frame_t > 1e9) {
 </s> add     // Disable IR on input timeout
    if (nanos_since_boot() - last_driver_camera_t > 1e9) {
  
  void can_recv_thread(std::vector<Panda *> pandas) {
    util::set_thread_name("boardd_can_recv");
  

    PubMaster pm({"can"});
  
    // run at 100hz
    const uint64_t dt = 10000000ULL;
    uint64_t next_frame_time = nanos_since_boot() + dt;
keep keep keep keep replace keep keep keep keep keep
 boardd: misc cleanup (#28969)

* boardd cleanup

* no more front frame

* faster connect loop

* fix that on mac 
selfdrive/boardd/boardd.cc