DS-015 Get detailed Node functions/capabilities

Currently UAVCAN has a defined full node info request 430.GetInfo.1.0.uavcan which gives standardized information about the node, but this only includes basic common information.

For DS-015 we want to know more about a node, more specifically the functionality of a node, so we know what kind data it will publish and what kind of commands we can send to it. For example we’ve got a node with GPS, mag and compass or a node with ESC and Servo controls. What would be a correct way to report such functionality?

1 Like

@pavel.kirienko What’s your take here?

We need to start with the basic question: why is it helpful to know the functionality of a node beyond the set of the ports it provides?

With the currently proposed register API, one can determine whether a node has a port by its name (that is, by the final component of the register name like uavcan.pub.mangnetic_field_strength). Proper naming provided, this should be enough to provide some minimum degree of introspection for basic applications.

This method notably lacks the type information. It was noted a long time ago in GUI Tool – Next Generation, where a solution was proposed:

Although the specified pattern lacks the pub/sub differentiation, so it should be factored in as well. It is not mentioned in the quoted excerpt but the register would be read-only (persistent, immutable).

Currently, it is probably out of the scope of the DS-015 MVP effort, but I expect that it will become relevant after the first version of the standard (DS-015) is released, along with a few other more advanced features.