Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

We’d have to choose an appropriate message ID to reserve. 0 or 1 might be appropriate because ACKs are sent for critical messages so they are themselves critical; in particular ACKs are used for the BPS heartbeat system and power sequence messages. Since critical messages aren’t sent too often it probably doesn’t matter the exact value as long as it’s lower than all the messages sent frequently/continuously.

Switch to the extended CAN frame format

CAN 2.0 B has an additional frame format: “extended”. The only difference is that the arbitration ID is now 29 bits long instead of 11, so this would solve all our ID allocation crunch issues. We would just have to make sure that all our devices and tooling support extended frames / update those that don’t.

As a bonus, regular (11-bit ID) and extended frames can coexist on the same bus, and all regular frames have priority over all extended frames. So, we could use extended frames for normal operation and use regular frames for e.g. the bootloader (which is what is done by github.com/cvra/can-bootloader).