* API updates for rmw preallocation work.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Adjust for allocation in serialized message method.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Fix extra take call.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Add functions to return formatted Node Name-Namespace strings
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Changed get_node_names to return fully qualified names, removed namespace method
Signed-off-by: Oswin So <oswinso@gmail.com>
* Removed unnecessary capture-by-reference
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Added first draft of tests
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Fixed bug creating phantom empty name/namespaces
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Re-ordered includes
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Swap checks to see if name is in set
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Fixed style errors from uncrustify
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Swapped to unordered_set
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Re-ordered includes again
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* nitpick: minimize vertical whitespace
see: https://google.github.io/styleguide/cppguide.html#Vertical_Whitespace
Signed-off-by: William Woodall <william@osrfoundation.org>
* Add API documentation for added get_node_names function
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Revert to last known semi-working point
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Modified expected test results
A fully-qualified name is "namespace"/"name". If namespace is set to be "/" (as they are in these tests), we would expect a qualified name of "//name"
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Have get_node_names determine if central slash needed or not
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Corrected tests to not accept double slashes
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Undo changes to .gitignore
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Change qualified string construction to better handle invalid slashes
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Removed debugging statements
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Simplified slash-checking logic
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Changed mapped_ring_buffer class to store both shared_ptr or unique_ptr
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Changed the IPM store and take methods
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Changed publish methods to take advantage of the new IPM
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Change how subscriptions handle intraprocess messages
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Modified publish method signatures
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Renamed 'publisher.cpp' and 'subscription.cpp' to 'publisher_base.cpp' and 'subscription_base.cpp'
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Updated lifecycle_publisher publish methods
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* in progress broken test_time_source
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* style
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* test undeclared params
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* Only get parameter if it is set
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* doc fixup
Signed-off-by: William Woodall <william@osrfoundation.org>
* use override rather than virtual in places
Signed-off-by: William Woodall <william@osrfoundation.org>
* rename ParameterInfo_t to ParameterInfo and just use struct, no typedef
Signed-off-by: William Woodall <william@osrfoundation.org>
* add method to access ParameterValue within a Parameter
Signed-off-by: William Woodall <william@osrfoundation.org>
* enable get<Parameter> and get<ParameterValue> on Parameter class
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid const pass by value
Signed-off-by: William Woodall <william@osrfoundation.org>
* match type of enum in C++ to type used in message definition
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup after rebase
Signed-off-by: William Woodall <william@osrfoundation.org>
* more fixup after rebase
Signed-off-by: William Woodall <william@osrfoundation.org>
* replace create_parameter with declare_parameter
Signed-off-by: William Woodall <william@osrfoundation.org>
* provide implementation for templated declare_parameter method
Signed-off-by: William Woodall <william@osrfoundation.org>
* style
Signed-off-by: William Woodall <william@osrfoundation.org>
* do not use const reference when it's a primitive (like bool)
Signed-off-by: William Woodall <william@osrfoundation.org>
* typo
Signed-off-by: William Woodall <william@osrfoundation.org>
* follow to bool change that wasn't staged
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* added lots of docs, alternative API signatures, and some of the tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* more tests and associated fixes
Signed-off-by: William Woodall <william@osrfoundation.org>
* address documentation feedback
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup previously added tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* add tests and fixes for describe_parameter(s) and get_parameter_types
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove old parameter tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* use const reference where possible
Signed-off-by: William Woodall <william@osrfoundation.org>
* address comments
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix tests for deprecated methods
Signed-off-by: William Woodall <william@osrfoundation.org>
* address feedback
Signed-off-by: William Woodall <william@osrfoundation.org>
* significantly improve the reliability of the time_source tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* uncrustify, cpplint, and cppcheck fixes
Signed-off-by: William Woodall <william@osrfoundation.org>
* Revert "significantly improve the reliability of the time_source tests"
This reverts commit 3ef385d8419c3f71cba91e622138583a91b2682a.
Signed-off-by: William Woodall <william@osrfoundation.org>
* only declare use_sim_time parameter if not already declared
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup rclcpp_lifecycle
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* add missing namespace scope which fails on Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* extend deprecation warning suppression to support Windows too
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix compiler warnings and missing visibility macro
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove commented left over tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix compiler warning on Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* suppress deprecation warning on include of file in Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid potential loss of data warning converting int64_t to int
Signed-off-by: William Woodall <william@osrfoundation.org>
* trying to fix more loss of data warnings
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix test_node
Signed-off-by: William Woodall <william@osrfoundation.org>
* add option to automatically declare parameters from initial parameters (yaml file)
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove redundant conditional
Signed-off-by: William Woodall <william@osrfoundation.org>
* Options-based create_publisher and create_subscription interfaces
Introduce new Options structs for creating publishers and subscribers. Deprecate existing interfaces for checking in CI how often they are used.
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Remove default params that resulted in ambiguous declarations.
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Remove one deprecation to limit upstream impact, add documentation on pub/sub options, slim down test lambdas character count
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Un-abbreviate Allocator in new interfaces/types, define a common Options specialization that doesn't need empty brackets
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Suppress cppcheck syntaxError for the one function
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
The two distinct operations of acquiring and subsequent checking of a
timer have to be protected by one lock_guard against races with other
threads. The releasing of a timer has to be protected by the same lock.
Given this requirement there is no use for a second mutex.
Signed-off-by: Marko Durkovic <marko@ternaris.com>
* Sub Node alternative
* Sub Node alternative
* Test // characters in namespaces
* Sub Node alternative
* Test // characters in namespaces
* Fixing style and warning in the order of initalizing members
* Fixing cases with / in different positions, and adding new tests
* Removing commented methods
* Changing extended_namespace to sub_namespace
* Fixed a bug when merging
* Fixed a bug when merging
* Sub Node alternative
* Sub Node alternative
* Test // characters in namespaces
* Fixing style and warning in the order of initalizing members
* Fixing cases with / in different positions, and adding new tests
* Removing commented methods
* Changing extended_namespace to sub_namespace
* Fixed a bug when merging
* Merge with origin to update branch
* improvements to API and documentation
Signed-off-by: William Woodall <william@osrfoundation.org>
* style and fixing tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup subnode specific tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove vestigial function
Signed-off-by: William Woodall <william@osrfoundation.org>
* improve documentation
Signed-off-by: William Woodall <william@osrfoundation.org>
* add test to check interaction between ~ and sub-nodes
Signed-off-by: William Woodall <william@osrfoundation.org>
* typo
Signed-off-by: William Woodall <william@osrfoundation.org>
* Start work on creaating NodeOptions structure.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Continue work on NodeOptions.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Update tests for NodeOptions impl.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Update documentation and copy/assignment.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Update rclcpp_lifecycle to conform to new API.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Use builder pattern with NodeOptions.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Documentation updates.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Update rclcpp_lifecycle to use NodeOptions.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* change to parameter idiom only, from builder pattern
Signed-off-by: William Woodall <william@osrfoundation.org>
* Update rclcpp/include/rclcpp/node_options.hpp
Co-Authored-By: wjwwood <william+github@osrfoundation.org>
Signed-off-by: William Woodall <william@osrfoundation.org>
* follow up with more resets of the rcl_node_options_t
Signed-off-by: William Woodall <william@osrfoundation.org>
* todo about get env
Signed-off-by: William Woodall <william@osrfoundation.org>
* Add in the ability to get parameters in a map.
Any parameters that have a "." in them will be considered to
be part of a "map" (though they can also be get and set
individually). This PR adds two new template specializations
to the public node API so that it can take a map, and store
the list of values (so setting the parameter with a name of
"foo" and a key of "x" will end up with a parameter of "foo.x").
It also adds an API to get all of the keys corresponding to
a prefix, and returing that as a map (so a get of "foo" will
get all parameters that begin with "foo."). Note that all
parameters within the map must have the same type, otherwise
an rclcpp::ParameterTypeException will be thrown.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Fix style problems pointed out by uncrustify/cpplint.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Move tests for set_parameter_if_not_set/get_parameter map to rclcpp.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Rename get_parameter -> get_parameters.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Add in documentation from review.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* added new constructors for sync parameter client
* sync param client now has raw ptr member instead of shared ptr
* fixed pointer style
* allow objects which do not inherit from node to create a sync parameters client
Resolves#595
* Separate the Node Time Source from the Node Clock
* Implement initial value checking of use_sim_time parameter parameter
* Be sure to update all newly attached clocks
* Homogenizing the behavior to use the last received value otherwise zero time when enabling sim time.
* Add virtual destructors to interface classes
* [WIP] Refactor signal handling.
* fix deadlock
Signed-off-by: William Woodall <william@osrfoundation.org>
* finished fixing signal handling and removing more global state
Signed-off-by: William Woodall <william@osrfoundation.org>
* add missing include of <condition_variable>
* use unordered map in signal handling class
Signed-off-by: William Woodall <william@osrfoundation.org>
* use consistent terminology
Signed-off-by: William Woodall <william@osrfoundation.org>
* use emplace in map
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid throwing in destructor
Signed-off-by: William Woodall <william@osrfoundation.org>
* words
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid throwing from destructors in a few places
Signed-off-by: William Woodall <william@osrfoundation.org>
* make install/uninstall thread-safe
Signed-off-by: William Woodall <william@osrfoundation.org>
* refactor init to allow for non-global init
Signed-off-by: William Woodall <william@osrfoundation.org>
* Update rclcpp/include/rclcpp/utilities.hpp
Co-Authored-By: wjwwood <william+github@osrfoundation.org>
* Update rclcpp/include/rclcpp/utilities.hpp
Co-Authored-By: wjwwood <william+github@osrfoundation.org>
* Update rclcpp/include/rclcpp/utilities.hpp
Co-Authored-By: wjwwood <william+github@osrfoundation.org>
* Update rclcpp/src/rclcpp/utilities.cpp
Co-Authored-By: wjwwood <william+github@osrfoundation.org>
* refactor state into context objects and fix signal handling
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid nullptr access in error messages
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid exception in publish after shutdown was called
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix missing and unused headers
Signed-off-by: William Woodall <william@osrfoundation.org>
* cpplint
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixes found during testing
Signed-off-by: William Woodall <william@osrfoundation.org>
* address bug found in review comment
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixes and warnings fixed during testing
Signed-off-by: William Woodall <william@osrfoundation.org>
* addressing review comments
Signed-off-by: William Woodall <william@osrfoundation.org>
* ensure new ExecutorArgs are used everywhere
* [rclcpp] Add class Waitable
Provides a virtual API for interacting with wait sets.
* [rclcpp] Add node interface for Waitables
* [rclcpp] Implement node interface for Waitables
* [rclcpp] Integrate Waitable entities with executor
* Implement remaining logic for integrating Waitables
* Add visibility macros and other refactoring to Waitable class
* Return zero size for entities in a Waitable by default
* Bugfix: Clear list of waitable handles
* Bugfix: update Waitable handle list based on readiness
* Bugfix: update for loop condition
* Give node a node_waitables_
* Give lifecycle node a node_waitables
Now the functions take an optional output index argument.
Refactored the graph listener usage of rcl_wait_set_add_guard_condition() to take advantage of the new API.
* Providing logging macro signature that accepts std::string
* - RCLCPP_ prefix to macros Add
- New tests added
* - Added doc to the functions and macros
- Functions declared as RCLCPP_PUBLIC
* - Small typo in doc corrected
* Fixed error when compiling with clang
* touch up docs
This fixes the build on MacOS High Sierra and later, and
is the more correct thing to do anyway.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Don't auto-activate ROS time if clock topic is being published
* Destroy subscription when not needed, avoid re-creating it
* Additional tests
* Always reset pointer
* Initialise sub in initialiser list
* Implement get_parameter_or_set_default.
This is syntactic sugar to allow the user to get a parameter.
If the parameter is already set on the node, it gets the value
of the parameter. If it is not set, then it gets the alternative
value and sets it on the node, ensuring that it exists.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Review fixes (one sentence per line).
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Rename get_parameter_or_set_default -> get_parameter_or_set
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
* Add TIME_MAX and DURATION_MAX functions
* Fix Linting Errors
* change funtion name as per coding style
* change function name as per coding style
* Update duration.cpp
* Update time.cpp
* Update test_duration.cpp
* Update time.hpp
* remove extra empty line
* fix indentation to comply with uncrusity 0.67
* fix spacing before opening brackets
* space between reference and variable name in signature
* questionable space between pointer marker and variable name