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).
Summary
Add the server side of
uavcan.node.GetInfo.1.0(fixed port-ID 430) toCyphalApp: 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:
UdpardRxRPCDispatcherfor service frames.udpardRxRxDispatCXListen(..., is_request=true, ...)).destination_address(subject multicast 239.0.x vs service multicast 239.1.0.<node_id>).UavcanGetInfoResponse_1_0with assigned fields (name must be the allowed charset: a-z 0-9 . - _), serialize, andudpvTxRespondwith the same transfer-ID and client node-ID.Testing
Out of scope
Client scanner (see following issue).