Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the port introspection service per discussion on the forum #93

Merged
merged 4 commits into from
Oct 27, 2020

Conversation

pavel-kirienko
Copy link
Member

Fixes #84

The new port introspection service follows the push model, simplifying its support in hard real-time systems with strict scheduling constraints (the amount of time required to manage the service is known which is normally not the case for service servers). See https://forum.uavcan.org/t/alternative-transport-protocols-in-uavcan/324/34?u=pavel.kirienko

Contrary to the discussion on the forum:

The publisher configuration can be subjected to the same treatment but it is not immediately required by the application-level objectives at hand, and as such, this part of the problem can be postponed indefinitely – after all, the publication set is always trivially observable on the network by means of mere packet monitoring, which is not the case for the subscription configuration.

Notice:

  • A subject may be published ad-hoc or with a very low interval, which can make its existence unobservable over a finite time interval.
  • Some packets may not be visible by the monitor/debugger node due to static routing or acceptance filtering.
  • Logical coupling: network introspection is coupled with routing/acceptance filtering.

Which is why I also included the publisher configuration into this service.

The service GetInfo is removed because for fixed-ID ports the data type is obviously deducible from the port-ID, and for non-fixed-ID ports this is addressed in #92.

The statistics service had an issue with request/response handling; instead of fixing I removed it. We may revisit it later and consider using standard register names instead of a dedicated service to lower the implementation barriers.

The reviewed design will address the same demands using a stateless subject and the register interface:

- #84
- #89

The objective is to comply with the design guidelines and to reduce the implementation effort.
The new service is stateless and compliant with the interface design guidelines.

The Statistics service is removed and not yet replaced because it had a design issue (did not distinguish between servers and clients) and because YAGNI. Later we may address this using the Register API.

The GetInfo service is removed because for fixed ports the data type information is deducible from the port-ID, and non-fixed ports are addressed by #92
@pavel-kirienko pavel-kirienko added this to the 1.0 milestone Oct 25, 2020
@pavel-kirienko pavel-kirienko self-assigned this Oct 25, 2020
@thirtytwobits thirtytwobits self-requested a review October 27, 2020 20:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Review the current v0.1 port introspection interface per discussion on the forum
2 participants