        uint64_t t = nanos_since_boot() + 10000000000ULL; // Give ublox 10 seconds to start
        for (const auto& [msg_cls, dt] : cls_max_dt) {
          last_recv_time[msg_cls] = t;
        }
      }
  
      ignition_last = ignition;
  
      // 10ms - 100 Hz
 
</s> remove   if (!panda->is_pigeon) { return; };

  // ubloxRaw = 8042
 </s> add  </s> remove   is_pigeon =
    (hw_type == cereal::PandaState::PandaType::GREY_PANDA) ||
    (hw_type == cereal::PandaState::PandaType::BLACK_PANDA) ||
    (hw_type == cereal::PandaState::PandaType::UNO) ||
    (hw_type == cereal::PandaState::PandaType::DOS);
 </s> add   assert((hw_type != cereal::PandaState::PandaType::WHITE_PANDA) &&
         (hw_type != cereal::PandaState::PandaType::GREY_PANDA));
 </s> remove   Pigeon * pigeon = Pigeon::connect("/dev/ttyHS0");
 </s> add   Pigeon *pigeon = Pigeon::connect("/dev/ttyHS0"); </s> remove   Pigeon * pigeon = Pigeon::connect(panda);
 </s> add   Pigeon *pigeon = Pigeon::connect(panda); </s> remove   bool is_pigeon = false;
 </s> add 
    } else if (!ignition && ignition_last) {
      // power off on falling edge of ignition
      LOGD("powering off pigeon\n");
      pigeon->set_power(false);
        uint64_t t = nanos_since_boot() + 10000000000ULL; // Give ublox 10 seconds to start
        for (const auto& [msg_cls, dt] : cls_max_dt) {
          last_recv_time[msg_cls] = t;
        }
    } else if (!ignition && ignition_last) {
      // power off on falling edge of ignition
      LOGD("powering off pigeon\n");
      pigeon->set_power(false);
      }
  
      ignition_last = ignition;
  
      // 10ms - 100 Hz
keep keep keep add keep keep keep keep keep
 turn pigeon off when going offroad (#20296)

* cleanup

* power off pigeon

* comment

Co-authored-by: Comma Device <device@comma.ai> 
selfdrive/boardd/boardd.cc