Skip to content

uavcan.node.GetInfo service server in CyphalApp #44

Description

@emrainey

Summary

Add the server side of uavcan.node.GetInfo.1.0 (fixed port-ID 430) to CyphalApp: respond to incoming GetInfo requests with this node's assigned identity (name / unique-ID / versions).

This is the first half of the shared service infra:

  • Create and start a UdpardRxRPCDispatcher for service frames.
  • Register a service request RX port for port-ID 430 (udpardRxRxDispatCXListen(..., is_request=true, ...)).
  • Route incoming UDP datagrams to the subject subscription vs the RPC dispatcher based on destination_address (subject multicast 239.0.x vs service multicast 239.1.0.<node_id>).
  • Register the service multicast 239.1.0.103 / ETH-IP multicast membership in hypha so requests are delivered.
  • On a completed request transfer: build UavcanGetInfoResponse_1_0 with assigned fields (name must be the allowed charset: a-z 0-9 . - _), serialize, and udpvTxRespond with the same transfer-ID and client node-ID.

Testing

  • Unit tests on DSDL round-trip (request empty payload no-op; response serialize/deserialize), Catch2, host (no target deps).
  • App-level logic behind hypha/ethernet is not host-testable; add a mock + test plan for the request-response rendezvous logic.

Out of scope

Client scanner (see following issue).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions