Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
7cdf294
commence v5
pavel-kirienko Jan 10, 2026
1648162
updates
pavel-kirienko Jan 10, 2026
62d3a05
api wip
pavel-kirienko Jan 10, 2026
6e6ec6e
first draft of the api ready
pavel-kirienko Jan 10, 2026
13c2630
update the headers
pavel-kirienko Jan 12, 2026
4e0423c
update the API: add v0 support
pavel-kirienko Jan 12, 2026
a99314f
api revision
pavel-kirienko Jan 12, 2026
228a023
API update
pavel-kirienko Jan 13, 2026
1708b5c
nits
pavel-kirienko Jan 13, 2026
5214fa9
updates
pavel-kirienko Jan 15, 2026
c1edfc6
updates
pavel-kirienko Jan 15, 2026
34faff9
wip
pavel-kirienko Jan 15, 2026
2783e74
tx_spool
pavel-kirienko Jan 15, 2026
bb1e5bf
tx_spool_v0
pavel-kirienko Jan 15, 2026
159729b
add single-frame case
pavel-kirienko Jan 15, 2026
e81136c
tx_predict_frame_count
pavel-kirienko Jan 15, 2026
ece5275
restoring tests
pavel-kirienko Jan 16, 2026
8d12456
fix tests
pavel-kirienko Jan 16, 2026
575a37e
tests
pavel-kirienko Jan 16, 2026
0a08090
tests
pavel-kirienko Jan 16, 2026
272ec08
wip, broken
pavel-kirienko Jan 16, 2026
f8d3d2d
update tests
pavel-kirienko Jan 16, 2026
c013f89
popcount
pavel-kirienko Jan 16, 2026
35558dd
tests
pavel-kirienko Jan 16, 2026
fed4c37
tx_push wip
pavel-kirienko Jan 16, 2026
a3fa532
tests
pavel-kirienko Jan 16, 2026
fc44434
tx_receive_ack
pavel-kirienko Jan 16, 2026
31b91a9
add canard_publish and legacy counterparts
pavel-kirienko Jan 17, 2026
4a91dd6
fast->least
pavel-kirienko Jan 17, 2026
3d07808
test stub
pavel-kirienko Jan 17, 2026
7c86245
misc
pavel-kirienko Jan 17, 2026
fdaa918
add coverage
pavel-kirienko Jan 17, 2026
15c0fc0
add coverage to ci
pavel-kirienko Jan 17, 2026
12d5295
address lcov branch coverage deprecation
pavel-kirienko Jan 17, 2026
6306cd7
remove the use intrinsics option
pavel-kirienko Jan 17, 2026
d5b8745
misc
pavel-kirienko Jan 17, 2026
b2dd703
misc
pavel-kirienko Jan 17, 2026
ea3d092
add remarks concerning node-ID of zero
pavel-kirienko Jan 17, 2026
2e273ca
formatting
pavel-kirienko Jan 17, 2026
5b1b1fc
resuming from this point
pavel-kirienko Mar 18, 2026
1140cf5
wip
pavel-kirienko Mar 18, 2026
1368715
remove pointer comparisons
pavel-kirienko Mar 19, 2026
357af45
progress
pavel-kirienko Mar 19, 2026
0a373b3
improve static analysis integration
pavel-kirienko Mar 19, 2026
bf8a947
update tests
pavel-kirienko Mar 19, 2026
6fb9c90
ci: remove AVR build test
pavel-kirienko Mar 19, 2026
df1abba
advance
pavel-kirienko Mar 19, 2026
a2b3891
ci: install cppcheck in debug and limit static analysis
pavel-kirienko Mar 19, 2026
e87ae18
ci: use LLVM clang-format in debug job
pavel-kirienko Mar 19, 2026
1779889
ci: force LLVM clang-format and clang-tidy alternatives
pavel-kirienko Mar 19, 2026
94fe001
canard: clarify v0 spool tail handling for cppcheck
pavel-kirienko Mar 19, 2026
4ca9dd1
tests: assert captured tx deadline and fd
pavel-kirienko Mar 19, 2026
4fdd031
Implement v1/v0 service request-response APIs and align unicast CAN-I…
pavel-kirienko Mar 19, 2026
5f03f25
canard: use 32-bit CAN-ID literals in tx encoders
pavel-kirienko Mar 19, 2026
5a1823d
misc
pavel-kirienko Mar 19, 2026
18e481c
misc
pavel-kirienko Mar 19, 2026
423ae3e
can id layout tests
pavel-kirienko Mar 19, 2026
048d77a
minor reorg
pavel-kirienko Mar 19, 2026
ced4076
update expiration handling
pavel-kirienko Mar 19, 2026
b790e6f
rx_parse
pavel-kirienko Mar 19, 2026
7b1279b
adversarial rx_parse tests; fix output-zeroing on empty payload
pavel-kirienko Mar 19, 2026
e68cdd6
clang-format
pavel-kirienko Mar 19, 2026
894d474
fix remaining clang-tidy readability-isolate-declaration
pavel-kirienko Mar 19, 2026
effa997
fix cppcheck redundantAssignment false positives in tail byte test
pavel-kirienko Mar 19, 2026
d3eb60b
advance the rx pipeline
pavel-kirienko Mar 20, 2026
1fea9ed
update rx_parse tests for payload validation and anonymous single-fra…
pavel-kirienko Mar 20, 2026
4248958
advance
pavel-kirienko Mar 20, 2026
a7f0b8e
rx_slot_write_payload() and related parts of rx pipeline
pavel-kirienko Mar 20, 2026
ecd6ede
renaming
pavel-kirienko Mar 20, 2026
5d41886
docs
pavel-kirienko Mar 20, 2026
961fcdb
fixes
pavel-kirienko Mar 20, 2026
5f6db68
add adversarial tests for rx_session_scan and rx_slot_write_payload; …
pavel-kirienko Mar 20, 2026
5ee8e46
fix clang-format violations in test_intrusive_rx.c
pavel-kirienko Mar 20, 2026
b9bfbe5
rename confusable identifiers p1/p2/p3/pp1/pp2/pp3 to f1/f2/f3
pavel-kirienko Mar 20, 2026
7d77658
make make_test_slot parameter const per cppcheck constParameterPointer
pavel-kirienko Mar 20, 2026
18728d5
make make_test_slot parameter const per cppcheck constParameterPointer
pavel-kirienko Mar 20, 2026
7d811e1
Merge branch 'experimental' of https://github.com/opencyphal/libcanar…
pavel-kirienko Mar 20, 2026
730c0c8
advance
pavel-kirienko Mar 20, 2026
09c9aac
prevent agents from using force push
pavel-kirienko Mar 20, 2026
208c11f
wip
pavel-kirienko Mar 20, 2026
5d1af36
rx_session_scan()
pavel-kirienko Mar 20, 2026
16ab987
rx_session_scan()
pavel-kirienko Mar 20, 2026
6830a7c
Rewrite test_rx_session_scan for new return type and add rx_slot_writ…
pavel-kirienko Mar 20, 2026
45f9ccb
Apply clang-format to test_intrusive_rx.c
pavel-kirienko Mar 20, 2026
3156699
Add parentheses to satisfy readability-math-missing-parentheses
pavel-kirienko Mar 20, 2026
dc9f57a
nits
pavel-kirienko Mar 20, 2026
dc47b3a
wip
pavel-kirienko Mar 20, 2026
fda9730
simplify
pavel-kirienko Mar 20, 2026
599b721
wip
pavel-kirienko Mar 20, 2026
9a4c454
wip
pavel-kirienko Mar 20, 2026
a3910c7
wip
pavel-kirienko Mar 21, 2026
4e3c225
fix
pavel-kirienko Mar 21, 2026
e2f2442
rx_session_should_admit(): check protocol version
pavel-kirienko Mar 21, 2026
de88465
new admission solver
pavel-kirienko Mar 21, 2026
f74453f
new solver fixes
pavel-kirienko Mar 21, 2026
92deebf
stab
pavel-kirienko Mar 21, 2026
d52e640
fixes
pavel-kirienko Mar 21, 2026
977a1e4
fix stale-check signed overflow; add adversarial admission tests
pavel-kirienko Mar 22, 2026
6a6d5c3
move canard_kind
pavel-kirienko Mar 22, 2026
89b59a5
implement RX session acceptance
pavel-kirienko Mar 22, 2026
04eeb44
fix crc calculation
pavel-kirienko Mar 22, 2026
30f2064
fixes
pavel-kirienko Mar 22, 2026
96527d1
add adversarial RX session test suite (49 tests)
pavel-kirienko Mar 22, 2026
a0ab028
drop useless tests
pavel-kirienko Mar 22, 2026
9d538c6
implement canard_ingest_frame()
pavel-kirienko Mar 22, 2026
bc2dc12
nits
pavel-kirienko Mar 22, 2026
be82e49
handle anonymous frames correctly
pavel-kirienko Mar 22, 2026
40ff30f
update the filtering API
pavel-kirienko Mar 22, 2026
500f0c8
v0 FD remarks
pavel-kirienko Mar 22, 2026
0e300b2
leave v0 priority extension bits zero
pavel-kirienko Mar 22, 2026
84a654c
clarification on v0/v1 aliasing
pavel-kirienko Mar 22, 2026
62236fe
Purge TX continuations on node-ID change; reconfigure filters from po…
pavel-kirienko Mar 23, 2026
b962dd3
node-ID occupancy update
pavel-kirienko Mar 23, 2026
7f2fac1
handle anonymous nodes
pavel-kirienko Mar 23, 2026
1d742d6
fixes
pavel-kirienko Mar 23, 2026
9c296dc
fixes
pavel-kirienko Mar 23, 2026
f1eb157
assert
pavel-kirienko Mar 23, 2026
71e3fbf
add adversarial tests for node_id_occupancy_update and callees
pavel-kirienko Mar 23, 2026
0effbec
filter config WIP; rx_filter_for_subscription() is missing
pavel-kirienko Mar 23, 2026
003f9b9
rx_filter_for_subscription
pavel-kirienko Mar 23, 2026
2012295
better coalescence
pavel-kirienko Mar 23, 2026
ba3d96f
full coverage tests for rx_filter_coalesce_into()
pavel-kirienko Mar 23, 2026
e3f6889
Migrating to 16-bit subject-ID in v1.1, was 17 bits
pavel-kirienko Mar 23, 2026
7847945
Merge branch 'experimental' of https://github.com/opencyphal/libcanar…
pavel-kirienko Mar 23, 2026
604457e
docs
pavel-kirienko Mar 23, 2026
51c48c3
docs
pavel-kirienko Mar 23, 2026
f4ba092
simplify
pavel-kirienko Mar 23, 2026
82c47b4
docs
pavel-kirienko Mar 23, 2026
697cc3c
Simplify the API: remove the dedicated service-ID 511, use same funct…
pavel-kirienko Mar 23, 2026
d03aac3
readme
pavel-kirienko Mar 23, 2026
8beba96
Implement canard_subscribe, canard_subscribe_request, canard_subscrib…
pavel-kirienko Mar 23, 2026
7446719
drop sonarcloud
pavel-kirienko Mar 23, 2026
ff6adc4
move funs
pavel-kirienko Mar 23, 2026
682d45d
Implement canard_0v1_subscribe, canard_0v1_subscribe_request, canard_…
pavel-kirienko Mar 23, 2026
33a76d0
drop dead code
pavel-kirienko Mar 23, 2026
f201ba7
Add comprehensive API-level multiframe and loopback test suites
pavel-kirienko Mar 23, 2026
058b818
remove canard_user_context_t, use plain void*
pavel-kirienko Mar 23, 2026
f4f9466
cleanup
pavel-kirienko Mar 23, 2026
9cee5e0
Increment OOM counter on OOM
pavel-kirienko Mar 23, 2026
4ade2c5
Add comprehensive adversarial test suite (344 tests, 98.9% line cover…
pavel-kirienko Mar 23, 2026
2af0b13
Fix clang-tidy warnings in test code
pavel-kirienko Mar 23, 2026
a8e1215
Fix remaining use-auto clang-tidy warning in test_api_rx_edge.cpp
pavel-kirienko Mar 23, 2026
61351f4
Fix misc-const-correctness clang-tidy warnings
pavel-kirienko Mar 23, 2026
afcc4af
Suppress cppcheck false positive in test_api_lifecycle.cpp
pavel-kirienko Mar 23, 2026
a0b4470
Suppress cppcheck unusedStructMember in test_api_lifecycle.cpp
pavel-kirienko Mar 23, 2026
b9c9b9d
Fix clang-format in test_api_lifecycle.cpp
pavel-kirienko Mar 23, 2026
6d6205e
Update README with improved TX and RX pipeline details
pavel-kirienko Mar 23, 2026
bdea240
Add CRC size to v0 extent
pavel-kirienko Mar 24, 2026
0e1d5f0
nomenclature update
pavel-kirienko Mar 24, 2026
5747a1e
Update tests for subscribe API split and v0 CRC extent fix
pavel-kirienko Mar 24, 2026
af20ca3
doc updates
pavel-kirienko Mar 24, 2026
75e046b
update docs
pavel-kirienko Mar 24, 2026
b772353
Add SocketCAN heartbeat monitor demo
pavel-kirienko Mar 24, 2026
c639d2a
readme
pavel-kirienko Mar 24, 2026
0b67af2
Merge branch 'experimental' of https://github.com/opencyphal/libcanar…
pavel-kirienko Mar 24, 2026
80361b6
split canard_publish_16b()
pavel-kirienko Mar 24, 2026
78cb577
demos
pavel-kirienko Mar 24, 2026
25774e8
Update tests for canard_publish_16b/13b split
pavel-kirienko Mar 24, 2026
df70da9
Apply clang-format to updated test files
pavel-kirienko Mar 24, 2026
a73a60e
cleanup
pavel-kirienko Mar 24, 2026
b388467
update the monitor demo
pavel-kirienko Mar 24, 2026
e25f955
coverage remarks
pavel-kirienko Mar 24, 2026
cbeae7c
Improve branch coverage from 88.6% to 94.6%, line coverage to 100%
pavel-kirienko Mar 24, 2026
e67e3ab
Remove out-of-range enum cast tests that trigger clang-tidy EnumCastO…
pavel-kirienko Mar 24, 2026
25a0519
Integrate Coveralls for coverage reporting
pavel-kirienko Mar 24, 2026
00ea0f8
Fix const-correctness warnings in test_api_lifecycle.cpp
pavel-kirienko Mar 24, 2026
4afbece
AGENTS style clarifications
pavel-kirienko Mar 24, 2026
4ba8b6e
Merge branch 'experimental' of https://github.com/opencyphal/libcanar…
pavel-kirienko Mar 24, 2026
c79812a
Clean up test suite: remove redundancies, extract helper, reorganize
pavel-kirienko Mar 24, 2026
71c5f78
Merge branch 'master' into experimental
pavel-kirienko Mar 24, 2026
22b42c2
Update cavl2.h, fix typos
pavel-kirienko Mar 24, 2026
7859378
remove -Wno-unused-function
pavel-kirienko Mar 24, 2026
ccdc630
unused functions
pavel-kirienko Mar 24, 2026
c14588d
Clarify retained TX frame lifetime
pavel-kirienko Mar 24, 2026
56f6556
Deflake coverage lifecycle test
pavel-kirienko Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 16 additions & 92 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,96 +1,20 @@
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
BasedOnStyle: Mozilla
IndentWidth: 4
ColumnLimit: 120
Standard: c++20
IndentExternBlock: NoIndent
AlwaysBreakAfterDefinitionReturnType: None
BreakAfterReturnType: None
AllowShortFunctionsOnASingleLine: All
AlignConsecutiveAssignments: true
AlignConsecutiveBitFields: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignConsecutiveMacros: true
AlignConsecutiveShortCaseStatements: { Enabled: true }
AlignEscapedNewlines: LeftWithLastLine
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
AfterExternBlock: false # Keeps the contents un-indented.
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
# BreakInheritanceList: AfterColon
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ (coverity|pragma:)'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeBlocks: Preserve
IndentCaseLabels: false
IndentPPDirectives: AfterHash
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 10000 # Raised intentionally; prefer breaking all
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 10000 # Raised intentionally because it hurts readability
PointerAlignment: Left
ReflowComments: true
SortIncludes: Never
SortUsingDeclarations: false
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeCtorInitializerColon: true
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++14
TabWidth: 8
UseTab: Never
...
SortIncludes: false
ForEachMacros:
- FOREACH_IFACE
- FOREACH_PRIO
13 changes: 13 additions & 0 deletions libcanard/.clang-tidy → .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,23 @@ Checks: >-
-bugprone-easily-swappable-parameters,
-llvm-header-guard,
-cert-dcl03-c,
-boost-use-ranges,
-hicpp-static-assert,
-misc-static-assert,
-*-macro-to-enum,
-*-macro-usage,
-*-enum-size,
-*-use-using,
-*-casting-through-void,
-misc-include-cleaner,
-cppcoreguidelines-avoid-do-while,
-*-magic-numbers,
-*-use-enum-class,
-*-use-trailing-return-type,
-*-deprecated-headers,
-*-avoid-c-arrays,
-*-nested-conditional-operator,
-*DeprecatedOrUnsafeBufferHandling,
CheckOptions:
- key: readability-function-cognitive-complexity.Threshold
value: '99'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/esp_dry_run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
upload_component:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: "recursive"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/esp_publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
upload_component:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: "recursive"

Expand Down
Loading