parameter_interface.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <chrono>
4 #include <functional>
5 #include <mutex>
6 #include <regex>
7 #include <string>
8 #include <unordered_set>
9 #include <vector>
10 
11 #include <rclcpp/rclcpp.hpp>
12 
14 
15 namespace foxglove_bridge {
16 
17 using ParameterList = std::vector<foxglove::Parameter>;
18 using ParamUpdateFunc = std::function<void(const ParameterList&)>;
19 
21 public:
22  ParameterInterface(rclcpp::Node* node, std::vector<std::regex> paramWhitelistPatterns);
23 
24  ParameterList getParams(const std::vector<std::string>& paramNames,
25  const std::chrono::duration<double>& timeout);
26  void setParams(const ParameterList& params, const std::chrono::duration<double>& timeout);
27  void subscribeParams(const std::vector<std::string>& paramNames);
28  void unsubscribeParams(const std::vector<std::string>& paramNames);
29  void setParamUpdateCallback(ParamUpdateFunc paramUpdateFunc);
30 
31 private:
32  rclcpp::Node* _node;
33  std::vector<std::regex> _paramWhitelistPatterns;
34  rclcpp::CallbackGroup::SharedPtr _callbackGroup;
35  std::mutex _mutex;
36  std::unordered_map<std::string, rclcpp::AsyncParametersClient::SharedPtr> _paramClientsByNode;
37  std::unordered_map<std::string, std::unordered_set<std::string>> _subscribedParamsByNode;
38  std::unordered_map<std::string, rclcpp::SubscriptionBase::SharedPtr> _paramSubscriptionsByNode;
40 
41  ParameterList getNodeParameters(rclcpp::AsyncParametersClient::SharedPtr paramClient,
42  const std::string& nodeName,
43  const std::vector<std::string>& paramNames,
44  const std::chrono::duration<double>& timeout);
45  void setNodeParameters(rclcpp::AsyncParametersClient::SharedPtr paramClient,
46  const std::string& nodeName, const std::vector<rclcpp::Parameter>& params,
47  const std::chrono::duration<double>& timeout);
48  bool isWhitelistedParam(const std::string& paramName);
49 };
50 
51 } // namespace foxglove_bridge
foxglove_bridge::ParameterInterface::_subscribedParamsByNode
std::unordered_map< std::string, std::unordered_set< std::string > > _subscribedParamsByNode
Definition: parameter_interface.hpp:37
foxglove_bridge::ParameterInterface::setParams
void setParams(const ParameterList &params, const std::chrono::duration< double > &timeout)
Definition: parameter_interface.cpp:229
foxglove_bridge::ParameterInterface::setNodeParameters
void setNodeParameters(rclcpp::AsyncParametersClient::SharedPtr paramClient, const std::string &nodeName, const std::vector< rclcpp::Parameter > &params, const std::chrono::duration< double > &timeout)
Definition: parameter_interface.cpp:378
foxglove_bridge::ParameterInterface::getNodeParameters
ParameterList getNodeParameters(rclcpp::AsyncParametersClient::SharedPtr paramClient, const std::string &nodeName, const std::vector< std::string > &paramNames, const std::chrono::duration< double > &timeout)
Definition: parameter_interface.cpp:343
foxglove_bridge::ParameterInterface::getParams
ParameterList getParams(const std::vector< std::string > &paramNames, const std::chrono::duration< double > &timeout)
Definition: parameter_interface.cpp:143
foxglove_bridge::ParameterInterface::subscribeParams
void subscribeParams(const std::vector< std::string > &paramNames)
Definition: parameter_interface.cpp:268
foxglove_bridge::ParameterInterface::_paramClientsByNode
std::unordered_map< std::string, rclcpp::AsyncParametersClient::SharedPtr > _paramClientsByNode
Definition: parameter_interface.hpp:36
foxglove_bridge::ParameterInterface::isWhitelistedParam
bool isWhitelistedParam(const std::string &paramName)
foxglove_bridge::ParamUpdateFunc
std::function< void(const ParameterList &)> ParamUpdateFunc
Definition: parameter_interface.hpp:18
foxglove_bridge::ParameterInterface::setParamUpdateCallback
void setParamUpdateCallback(ParamUpdateFunc paramUpdateFunc)
Definition: parameter_interface.cpp:338
foxglove_bridge::ParameterInterface::_paramUpdateFunc
ParamUpdateFunc _paramUpdateFunc
Definition: parameter_interface.hpp:39
foxglove_bridge::ParameterInterface::unsubscribeParams
void unsubscribeParams(const std::vector< std::string > &paramNames)
Definition: parameter_interface.cpp:320
foxglove_bridge
Definition: generic_service.hpp:9
foxglove_bridge::ParameterInterface::_node
rclcpp::Node * _node
Definition: parameter_interface.hpp:32
foxglove_bridge::ParameterList
std::vector< foxglove::Parameter > ParameterList
Definition: parameter_interface.hpp:17
parameter.hpp
foxglove_bridge::ParameterInterface::_paramWhitelistPatterns
std::vector< std::regex > _paramWhitelistPatterns
Definition: parameter_interface.hpp:33
foxglove_bridge::ParameterInterface::_callbackGroup
rclcpp::CallbackGroup::SharedPtr _callbackGroup
Definition: parameter_interface.hpp:34
foxglove_bridge::ParameterInterface
Definition: parameter_interface.hpp:20
foxglove_bridge::ParameterInterface::_paramSubscriptionsByNode
std::unordered_map< std::string, rclcpp::SubscriptionBase::SharedPtr > _paramSubscriptionsByNode
Definition: parameter_interface.hpp:38
foxglove_bridge::ParameterInterface::_mutex
std::mutex _mutex
Definition: parameter_interface.hpp:35
foxglove_bridge::ParameterInterface::ParameterInterface
ParameterInterface(rclcpp::Node *node, std::vector< std::regex > paramWhitelistPatterns)
Definition: parameter_interface.cpp:137


foxglove_bridge
Author(s): Foxglove
autogenerated on Wed Mar 5 2025 03:34:31