filter_pipeline.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019 Pilz GmbH & Co. KG
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13 
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef FILTER_PIPELINE_H
19 #define FILTER_PIPELINE_H
20 
21 #include <memory>
22 #include <stdexcept>
23 
24 #include <functional>
25 
27 
29 #include <prbt_hardware_support/ModbusMsgInStamped.h>
32 
33 namespace prbt_hardware_support
34 {
35 
41 {
42 public:
43  using TCallbackFunc = std::function<void(const ModbusMsgInStampedConstPtr&)>;
44 
45  FilterPipeline(ros::NodeHandle& nh, TCallbackFunc callback_func);
46 
47 private:
50  std::shared_ptr< message_filters::Subscriber<ModbusMsgInStamped> > modbus_read_sub_;
51 
54  std::shared_ptr< message_filters::UpdateFilter<ModbusMsgInStamped> > update_filter_;
55 
56 };
57 
58 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
60 {
61  if (!callback_func)
62  {
63  throw std::invalid_argument("Argument \"callback_func\" must not be empty");
64  }
65  modbus_read_sub_ = std::make_shared< message_filters::Subscriber<ModbusMsgInStamped> >(nh, TOPIC_MODBUS_READ, 1);
66  update_filter_ = std::make_shared< message_filters::UpdateFilter<ModbusMsgInStamped> >(*modbus_read_sub_);
67  update_filter_->registerCallback(callback_func);
68 }
69 
70 }
71 
72 #endif // FILTER_PIPELINE_H
std::shared_ptr< message_filters::UpdateFilter< ModbusMsgInStamped > > update_filter_
std::function< void(const ModbusMsgInStampedConstPtr &)> TCallbackFunc
std::shared_ptr< message_filters::Subscriber< ModbusMsgInStamped > > modbus_read_sub_
static const std::string TOPIC_MODBUS_READ
FilterPipeline(ros::NodeHandle &nh, TCallbackFunc callback_func)
An abstraction of a series of filters which ensures that only Modbus messages with different timestam...


prbt_hardware_support
Author(s):
autogenerated on Tue Feb 2 2021 03:50:17