Commit f5a00fc
v5.0 alpha (#258)
v5 is a major rework based on the experience gained from extensive
production use of the previous revisions. The API has been redesigned
from scratch and as such there is no migration guide available; please
refer to the examples and read the new `canard.h` to see how to use the
library -- the new API is much more ergonomic than the old one.
Main changes:
- Support for new protocols alongside Cyphal v1.0:
- Cyphal/CAN v1.1, which adds support for 16-bit subject-IDs (like in
UAVCAN v0) via a new CAN ID layout format.
- UAVCAN v0 aka DroneCAN, a legacy predecessor to Cyphal v1.0 that is
still widely used.
- Anonymous messages can no longer be transmitted, but they can still be
received.
- A new passive node-ID autoconfiguration based on a simple occupancy
observer.
This method is decentralized and is compatible with old nodes.
A node-ID can still be assigned manually if needed.
- Automatic CAN acceptance filter configuration based on the current
subscription set.
The configuration is refreshed whenever the subscription set is modified
or the local node-ID is changed.
- New TX pipeline using per-transfer queue granularity with efficient
CAN frame deduplication across redundant
interfaces, which resulted in a major reduction of heap memory footprint
(typ. x2+ reduction).
- New RX pipeline supporting priority level preemption without transfer
loss and reduced memory consumption.
The old revision was susceptible to transfer loss when the remote
initiated a higher-priority multi-frame
transfer while a lower-priority multi-frame transfer was in flight. The
v5 revision maintains concurrent
reassemblers per priority level, enabling arbitrary priority nesting.
Closes #184
Closes #223
Closes #247
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent e91cd66 commit f5a00fc
52 files changed
Lines changed: 18145 additions & 25118 deletions
File tree
- .github/workflows
- .idea/dictionaries
- demos
- libcanard
- lib
- cavl2
- tests
- catch
- src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | | - | |
4 | | - | |
5 | | - | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
6 | 10 | | |
| 11 | + | |
7 | 12 | | |
8 | | - | |
9 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
10 | 16 | | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
25 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
26 | 40 | | |
27 | 41 | | |
28 | 42 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
0 commit comments