How node inform others with parameter register change?

Assume there is a ground control station(GCS) configuring a cyphal node’s parameters by cyphal.register service.
Some parameters change but GCS does not know.

The reason is not the key point in this topic, anyhow it happens, it may come from two aspects: 1, bad non-orthogonal parameters design, change one may affect two; 2, change not made by GCS.

How can the node inform GCS of its parameter changement?

Some possible solutions:

  1. user clicks the refresh-all button in GCS.
  2. node sends custom messages to inform GCS.
  3. GCS polls all/some registers periodically and interleavelly.
  4. GCS polls a specific register which stands for the checksum of all parameters.

Any practical suggestion? Can it be achieved under public regulated data types?

Solutions 1, 3, 4 seem sensible; solution 2 is very intrusive and costly to implement. There is also solution #5, which is to make GCS or any other node interested in tracking register changes snoop for uavcan.register.Access requests and responses sent between other nodes and update its model of each node’s state on the fly. This is exactly how Yukon does it! When a register is changed anywhere on the network, the register table is updated immediately without the need to refresh the list manually. Obviously, this wouldn’t work if a node decided to update its registers independently rather than through an external request, but that’s a separate story.