pf_interface.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <memory>
5 #include <future>
6 #include <dynamic_reconfigure/server.h>
7 
11 #include "pf_driver/pf/pipeline.h"
15 #include "pf_driver/PFDriverR2000Config.h"
16 #include "pf_driver/PFDriverR2300Config.h"
17 
19 {
20 public:
21  PFInterface();
22 
23  bool init(std::shared_ptr<HandleInfo> info, std::shared_ptr<ScanConfig> config,
24  std::shared_ptr<ScanParameters> params, const std::string& topic, const std::string& frame_id,
25  const uint16_t num_layers);
26 
27  bool start_transmission(std::shared_ptr<std::mutex> net_mtx, std::shared_ptr<std::condition_variable> net_cv,
28  bool& net_fail);
29  void stop_transmission();
30  void terminate();
31 
32 private:
33  using PipelinePtr = std::unique_ptr<Pipeline>;
34 
37  std::unique_ptr<Transport> transport_;
38  std::shared_ptr<PFSDPBase> protocol_interface_;
40  std::shared_ptr<Reader<PFPacket>> reader_;
41  std::string topic_;
42  std::string frame_id_;
43  uint16_t num_layers_;
44  std::string product_;
45 
46  std::shared_ptr<HandleInfo> info_;
47  std::shared_ptr<ScanConfig> config_;
48  std::shared_ptr<ScanParameters> params_;
49  std::string prev_handle_;
50 
51  enum class PFState
52  {
53  UNINIT,
54  INIT,
55  RUNNING,
56  SHUTDOWN,
57  ERROR
58  };
60 
61  bool init();
62 
63  void change_state(PFState state);
64  bool can_change_state(PFState state);
65 
66  void start_watchdog_timer(float duration);
67  void feed_watchdog(const ros::TimerEvent& e); // timer based
68  void on_shutdown();
69 
70  // factory functions
71  bool handle_version(int major_version, int minor_version, int device_family, const std::string& topic,
72  const std::string& frame_id, const uint16_t num_layers);
73  PipelinePtr get_pipeline(const std::string& packet_type, std::shared_ptr<std::mutex> net_mtx,
74  std::shared_ptr<std::condition_variable> net_cv, bool& net_fail);
75  void connection_failure_cb();
76 };
void start_watchdog_timer(float duration)
std::shared_ptr< Reader< PFPacket > > reader_
Definition: pf_interface.h:40
void change_state(PFState state)
ros::Timer watchdog_timer_
Definition: pf_interface.h:36
config
uint16_t num_layers_
Definition: pf_interface.h:43
ros::NodeHandle nh_
Definition: pf_interface.h:35
std::string frame_id_
Definition: pf_interface.h:42
std::shared_ptr< ScanConfig > config_
Definition: pf_interface.h:47
void terminate()
void feed_watchdog(const ros::TimerEvent &e)
bool start_transmission(std::shared_ptr< std::mutex > net_mtx, std::shared_ptr< std::condition_variable > net_cv, bool &net_fail)
void on_shutdown()
std::shared_ptr< ScanParameters > params_
Definition: pf_interface.h:48
std::string prev_handle_
Definition: pf_interface.h:49
bool can_change_state(PFState state)
std::shared_ptr< HandleInfo > info_
Definition: pf_interface.h:46
PFState state_
Definition: pf_interface.h:59
PipelinePtr pipeline_
Definition: pf_interface.h:39
std::unique_ptr< Transport > transport_
Definition: pf_interface.h:37
std::string topic_
Definition: pf_interface.h:41
PipelinePtr get_pipeline(const std::string &packet_type, std::shared_ptr< std::mutex > net_mtx, std::shared_ptr< std::condition_variable > net_cv, bool &net_fail)
std::unique_ptr< Pipeline > PipelinePtr
Definition: pf_interface.h:33
void connection_failure_cb()
bool handle_version(int major_version, int minor_version, int device_family, const std::string &topic, const std::string &frame_id, const uint16_t num_layers)
void stop_transmission()
std::string product_
Definition: pf_interface.h:44
std::shared_ptr< PFSDPBase > protocol_interface_
Definition: pf_interface.h:38


pf_driver
Author(s): Harsh Deshpande
autogenerated on Fri Feb 24 2023 03:59:35