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.