The new version brings several major improvements:
-
Dedicated transmission queues per redundant CAN interface with depth limits. The application is now expected to instantiate
CanardTxQueue(or several in case of redundant transport) manually. -
Replace O(n) linked lists with fast O(log n) AVL trees (Cavl library is distributed with libcanard). Traversing the list of RX subscriptions now requires recursive traversal of the tree.
-
Manual DSDL serialization helpers removed (
canard_dsdl.h/canard_dsdl.c); use Nunavut instead. -
Replace bitwise CRC computation with a much faster static table by default (#185). This can be disabled by setting
CANARD_CRC_TABLE=0, which is expected to save ca. 500 bytes of ROM. -
Fixed issues with const-correctness in the API (#175).
-
canardRxAccept2()renamed tocanardRxAccept(). -
Support build configuration headers via
CANARD_CONFIG_HEADER. -
Add API for generating CAN hardware acceptance filter configurations (#169).
Usage examples adapted for the updated API are available in the README.
Special thanks to @coder_kalyan for critical contributions to this release.