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 - #24 by pavel.kirienko, 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.
FYI @TSC21