Skip to content

nucleo-cyphal: add uavcan.node.GetInfo client scanner (issue #45) - #47

Merged
emrainey merged 1 commit into
developfrom
issue-45
Aug 9, 2026
Merged

nucleo-cyphal: add uavcan.node.GetInfo client scanner (issue #45)#47
emrainey merged 1 commit into
developfrom
issue-45

Conversation

@emrainey

@emrainey emrainey commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Closes #45 (client half).

Stacked on top of #44/#46 (server + dispatcher infra). Builds on
GetInfoResponseHandler and the RPC dispatcher introduced there.

Changes

  • GetInfoScanner (applications/nucleo-cyphal/include/GetInfoScanner.hpp):
    scan window of server node-IDs, wrap-around cursor, per-node
    transfer-ID table, pending-node tracking. Host-testable, no target deps.
  • CyphalApp: registers a response RX port for service 430
    (is_request=false), routes received transfers by transfer.is_request,
    sends sealed GetInfo requests via udpardTxRequest on a 5 s tick, and
    gathers/deserializes responses with udpardGather.
  • bare-metal memmove: udpardGather needs memmove; added an
    overlap-safe memory::move + extern "C" memmove (cross-target only,
    mirroring memcpy/memset) in modules/memory.

Tests

  • New host Catch2 suite cyphal-getinfo-client (9 cases / 38 assertions)
    covering scan cursor wrap-around, per-node transfer-IDs, range checks,
    reset and pending state.
  • memory::move tests cover non-overlap, forward/backward overlap, zero-length.
  • LLVM 18/18, AppleClang 18/18; M4 and M7 cross workflows build.

Verified with ./scripts/build-all-presets.sh scope as documented in AGENTS.md
(the on-host-native-gcc preset is not buildable on macOS, pre-existing).

…move

AI-authored (deepseek-v4-flash-free, 2-year+ context, default params):
- Add GetInfoScanner (scan window 2..10, per-node transfer-IDs, wrap cursor)
- Register response RX port (is_request=false) and route Rx transfers by direction
- Send sealed GetInfo requests via udpardTxRequest on a 5 s tick in Execute()
- Gather/deserialize GetInfo responses (udpardGather + generated deser) and print
- Add host Catch2 tests for the client scanner (9 cases / 38 assertions)
- Add memory::move (overlap-safe) + extern "C" memmove in modules/memory for
  libudpard, gated to cross-target builds like memcpy/memset; host tests cover
  forward/backward overlap and zero-length moves

Human: issue #45 context and scan-window/naming choices.

Verified: LLVM 18/18, AppleClang 18/18, M4 + M7 cross workflows build.
@emrainey
emrainey merged commit 4f0fec9 into develop Aug 9, 2026
4 checks passed
@emrainey
emrainey deleted the issue-45 branch August 9, 2026 19:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant