feat: allow passing ros2 types in send_message #741
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Reducing boilerplate:
Proposed Changes
Allow passing IROS2Message into send_message method. Msg cls validation by rosidl_runtime_py
Issues
TBD: Implementation for messages is easy, implementation for services and actions is hard. We are currently passing a dictionary and msg_type e.g. "std_srvs/srv/SetBool". Then we use the msg_type to create a Request cls and fill it with the passed dictionary.
A simpler api, coherent with new send_messages should allow:
But to create a service client we also need to know the underlying base class (SetBool, not a SetBool.Request). Since SetBool.Request is not linked to SetBool, we will either need to keep passing msg_type via a string/cls or hack our way out with some magic.
Testing
Extended test suite