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.
The ros2_canopen::BasicSlave only supported SDO writes to UNSIGNED32 type data objects. A data length exception was thrown when trying to write to other data types.
The exception was coming from the line:
https://github.com/rosindustrial/ros2_canopen/blob/master/canopen_fake_slaves/include/canopen_fake_slaves/basic_slave.hpp#L49
It was calling Get<unsigned32_t>(), regardless of the data type of the object. This was resulting in a data length mismatch for data types other than UNSIGNED32.
I implemented a GetValue method to explicitly call Get<>() using the data object type. One thing to note is that the GetValue method only supports getting types that can fit inside a 32-bit container. Trying to SDO write larger values will result in the same data length exception as before. I also added more SDO write tests to exercise getting multiple data types.
This PR is related to the issue: #263