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 {
40 {
41 public:
42  using TCallbackFunc = std::function<void(const ModbusMsgInStampedConstPtr&)>;
43 
44  FilterPipeline(ros::NodeHandle& nh, TCallbackFunc callback_func);
45 
46 private:
49  std::shared_ptr<message_filters::Subscriber<ModbusMsgInStamped> > modbus_read_sub_;
50 
53  std::shared_ptr<message_filters::UpdateFilter<ModbusMsgInStamped> > update_filter_;
54 };
55 
56 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
58 {
59  if (!callback_func)
60  {
61  throw std::invalid_argument("Argument \"callback_func\" must not be empty");
62  }
63  modbus_read_sub_ = std::make_shared<message_filters::Subscriber<ModbusMsgInStamped> >(nh, TOPIC_MODBUS_READ, 1);
64  update_filter_ = std::make_shared<message_filters::UpdateFilter<ModbusMsgInStamped> >(*modbus_read_sub_);
65  update_filter_->registerCallback(callback_func);
66 }
67 
68 } // namespace prbt_hardware_support
69 
70 #endif // FILTER_PIPELINE_H
std::shared_ptr< message_filters::Subscriber< ModbusMsgInStamped > > modbus_read_sub_
std::function< void(const ModbusMsgInStampedConstPtr &)> TCallbackFunc
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...
std::shared_ptr< message_filters::UpdateFilter< ModbusMsgInStamped > > update_filter_


prbt_hardware_support
Author(s):
autogenerated on Wed Oct 28 2020 03:12:06