add CAN-FD non-ISO mode support (#25947)

CAN FD non-ISO support

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
pull/26049/head
Greg Hogan 3 years ago committed by GitHub
parent 549452f84d
commit d5ef6f82e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      panda
  2. 1
      selfdrive/boardd/boardd.cc
  3. 4
      selfdrive/boardd/panda.cc
  4. 1
      selfdrive/boardd/panda.h

@ -1 +1 @@
Subproject commit ffb3109e28296cc86f1892c4e0690856e28fb35a Subproject commit 2f3e2825e5ecc8074b4ee9cb9a70df635d09fd10

@ -407,6 +407,7 @@ std::optional<bool> send_panda_states(PubMaster *pm, const std::vector<Panda *>
cs[j].setCanDataSpeed(can_health.can_data_speed); cs[j].setCanDataSpeed(can_health.can_data_speed);
cs[j].setCanfdEnabled(can_health.canfd_enabled); cs[j].setCanfdEnabled(can_health.canfd_enabled);
cs[j].setBrsEnabled(can_health.brs_enabled); cs[j].setBrsEnabled(can_health.brs_enabled);
cs[j].setCanfdNonIso(can_health.canfd_non_iso);
} }
// Convert faults bitset to capnp list // Convert faults bitset to capnp list

@ -360,6 +360,10 @@ void Panda::set_data_speed_kbps(uint16_t bus, uint16_t speed) {
usb_write(0xf9, bus, (speed * 10)); usb_write(0xf9, bus, (speed * 10));
} }
void Panda::set_canfd_non_iso(uint16_t bus, bool non_iso) {
usb_write(0xfc, bus, non_iso);
}
static uint8_t len_to_dlc(uint8_t len) { static uint8_t len_to_dlc(uint8_t len) {
if (len <= 8) { if (len <= 8) {
return len; return len;

@ -91,6 +91,7 @@ class Panda {
void send_heartbeat(bool engaged); void send_heartbeat(bool engaged);
void set_can_speed_kbps(uint16_t bus, uint16_t speed); void set_can_speed_kbps(uint16_t bus, uint16_t speed);
void set_data_speed_kbps(uint16_t bus, uint16_t speed); void set_data_speed_kbps(uint16_t bus, uint16_t speed);
void set_canfd_non_iso(uint16_t bus, bool non_iso);
void can_send(capnp::List<cereal::CanData>::Reader can_data_list); void can_send(capnp::List<cereal::CanData>::Reader can_data_list);
bool can_receive(std::vector<can_frame>& out_vec); bool can_receive(std::vector<can_frame>& out_vec);

Loading…
Cancel
Save