jaromc 079f8a69dc AP_HAL_ChibiOS: Enable tx FIFO for multiframe bxcan messages
AP_Periph was already assuming this behavior by never checking the write
result of `select` and instead just sending frames and relying on the
mailbox full check.

This therefore fixes AP_Periph misordering multi-part messages. Each part
is the same priority, so in priority mode the hardware transmits in slot
order, which may not equal queue order.

bxCAN based flight controllers no longer use priority now, but FDCAN
always used FIFO mode so this brings the drivers closer anyway.

In all cases before and after this patch, priority is maintained in
libcanard so only the highest priority frames are dequeued for
transmission by the hardware anyway. But if a high priority message is
enqueued in the hardware, it will not be transmitted until lower priority
messages in the hardware are sent first. This is against CAN priority
semantics, where higher priority messages should be transmitted first.
Fortunately, it has worked well in practice. (Though there was still the
possibility for a higher priority message to be dequeued and not have
space in the hardware even in priority mode).
2025-12-09 11:52:05 +11:00
…
…
…
…
…

ArduPilot Project

Discord

Test Copter Test Plane Test Rover Test Sub Test Tracker

Test AP_Periph Test Chibios Test Linux SBC Test Replay

Test Unit Teststest size

Test Environment Setup

Cygwin Build Macos Build

Coverity Scan Build Status

Test Coverage

Autotest Status

OpenSSF Best Practices

ArduPilot is the most advanced, full-featured, and reliable open source autopilot software available. It has been under development since 2010 by a diverse team of professional engineers, computer scientists, and community contributors. Our autopilot software is capable of controlling almost any vehicle system imaginable, from conventional airplanes, quad planes, multi-rotors, and helicopters to rovers, boats, balance bots, and even submarines. It is continually being expanded to provide support for new emerging vehicle types.

The ArduPilot project is made up of:

User Support & Discussion Forums

Developer Information

Top Contributors

How To Get Involved

License

The ArduPilot project is licensed under the GNU General Public License, version 3.

Maintainers

ArduPilot is comprised of several parts, vehicles and boards. The list below contains the people that regularly contribute to the project and are responsible for reviewing patches on their specific area.

Languages
C++ 62.3%
Python 17.7%
C 10%
Lua 4.8%
C# 2.1%
Other 2.7%