sick_generic_callback.h
Go to the documentation of this file.
1 #include "sick_scan/sick_scan_base.h" /* Base definitions included in all header files, added by add_sick_scan_base_header.py. Do not edit this line. */
2 /*
3 * Copyright (C) 2022, Ing.-Buero Dr. Michael Lehning, Hildesheim
4 * Copyright (C) 2022, SICK AG, Waldkirch
5 * All rights reserved.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 *
20 * All rights reserved.
21 *
22 * Redistribution and use in source and binary forms, with or without
23 * modification, are permitted provided that the following conditions are met:
24 *
25 * * Redistributions of source code must retain the above copyright
26 * notice, this list of conditions and the following disclaimer.
27 * * Redistributions in binary form must reproduce the above copyright
28 * notice, this list of conditions and the following disclaimer in the
29 * documentation and/or other materials provided with the distribution.
30 * * Neither the name of Osnabrueck University nor the names of its
31 * contributors may be used to endorse or promote products derived from
32 * this software without specific prior written permission.
33 * * Neither the name of SICK AG nor the names of its
34 * contributors may be used to endorse or promote products derived from
35 * this software without specific prior written permission
36 * * Neither the name of Ing.-Buero Dr. Michael Lehning nor the names of its
37 * contributors may be used to endorse or promote products derived from
38 * this software without specific prior written permission
39 *
40 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
41 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
43 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
44 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
45 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
46 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
47 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
48 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
50 * POSSIBILITY OF SUCH DAMAGE.
51 *
52 * Authors:
53 * Michael Lehning <michael.lehning@lehning.de>
54 *
55 */
56 #ifndef __SICK_GENERIC_CALLBACK_H_INCLUDED
57 #define __SICK_GENERIC_CALLBACK_H_INCLUDED
58 
59 #include <condition_variable>
60 #include <mutex>
61 #include <string>
62 #include <vector>
63 
66 
67 // forward declaration of SickLdmrsObjectArray required for LdmrsObjectArray listener
68 #if __ROS_VERSION == 2 // ROS-2 (Linux or Windows)
69 #include <sick_scan_xd/msg/sick_ldmrs_object_array.hpp>
70 #else
72 #endif
73 
74 namespace sick_scan_xd
75 {
77  {
79  PointCloud2withEcho(const ros_sensor_msgs::PointCloud2* msg, int32_t _num_echos, int32_t _segment_idx, const std::string& _topic)
80  : num_echos(_num_echos), segment_idx(_segment_idx), topic(_topic)
81  {
83  }
85  int32_t num_echos = 0; // number of echos
86  int32_t segment_idx = 0; // segment index (or -1 if pointcloud contains data from multiple segments)
87  std::string topic; // ros topic this pointcloud is published
88  };
89 
90  typedef void(* PointCloud2Callback)(rosNodePtr handle, const PointCloud2withEcho* msg);
91  typedef void(* ImuCallback)(rosNodePtr handle, const ros_sensor_msgs::Imu* msg);
93  typedef void(* LFErecCallback)(rosNodePtr handle, const sick_scan_msg::LFErecMsg* msg);
95  typedef void(* RadarScanCallback)(rosNodePtr handle, const sick_scan_msg::RadarScan* msg);
97  typedef void(* NAV350mNPOSDataCallback)(rosNodePtr handle, const NAV350mNPOSData* msg);
98 
103 
108 
109  void addImuListener(rosNodePtr handle, ImuCallback listener);
110  void notifyImuListener(rosNodePtr handle, const ros_sensor_msgs::Imu* msg);
111  void removeImuListener(rosNodePtr handle, ImuCallback listener);
112  bool isImuListenerRegistered(rosNodePtr handle, ImuCallback listener);
113 
118 
119  void addLFErecListener(rosNodePtr handle, LFErecCallback listener);
121  void removeLFErecListener(rosNodePtr handle, LFErecCallback listener);
123 
128 
129  void addRadarScanListener(rosNodePtr handle, RadarScanCallback listener);
133 
138 
143 
144  /*
145  * Callback template for registration and deregistration of callbacks incl. notification of listeners
146  */
147  template<typename HandleType, class MsgType> class SickCallbackHandler
148  {
149  public:
150 
151  typedef void(* callbackFunctionPtr)(HandleType handle, const MsgType* msg);
152 
153  void addListener(HandleType handle, callbackFunctionPtr listener)
154  {
155  if (listener)
156  {
157  std::unique_lock<std::mutex> lock(m_listeners_mutex);
158  m_listeners[handle].push_back(listener);
159  }
160  }
161 
162  void notifyListener(HandleType handle, const MsgType* msg)
163  {
164  std::list<callbackFunctionPtr> listeners = getListener(handle);
165  for(typename std::list<callbackFunctionPtr>::iterator iter_listener = listeners.begin(); iter_listener != listeners.end(); iter_listener++)
166  {
167  if (*iter_listener)
168  {
169  (*iter_listener)(handle, msg);
170  }
171  }
172  }
173 
174  void notifyListener(const MsgType* msg)
175  {
176  std::vector<HandleType> handle_list;
177  {
178  std::unique_lock<std::mutex> lock(m_listeners_mutex);
179  for(typename std::map<HandleType, std::list<callbackFunctionPtr>>::iterator iter_listeners = m_listeners.begin(); iter_listeners != m_listeners.end(); iter_listeners++)
180  handle_list.push_back(iter_listeners->first);
181  }
182  for(int n = 0; n < handle_list.size(); n++)
183  {
184  notifyListener(handle_list[n], msg);
185  }
186  }
187 
188  void removeListener(HandleType handle, callbackFunctionPtr listener)
189  {
190  std::unique_lock<std::mutex> lock(m_listeners_mutex);
191  std::list<callbackFunctionPtr> & listeners = m_listeners[handle];
192  for(typename std::list<callbackFunctionPtr>::iterator iter_listener = listeners.begin(); iter_listener != listeners.end(); )
193  {
194  if (*iter_listener == listener)
195  {
196  iter_listener = listeners.erase(iter_listener);
197  }
198  else
199  {
200  iter_listener++;
201  }
202  }
203  }
204 
205  bool isListenerRegistered(HandleType handle, callbackFunctionPtr listener)
206  {
207  if (listener)
208  {
209  std::unique_lock<std::mutex> lock(m_listeners_mutex);
210  std::list<callbackFunctionPtr> & listeners = m_listeners[handle];
211  for(typename std::list<callbackFunctionPtr>::iterator iter_listener = listeners.begin(); iter_listener != listeners.end(); iter_listener++)
212  {
213  if (*iter_listener == listener)
214  return true;
215  }
216  }
217  return false;
218  }
219 
220  void clear()
221  {
222  std::unique_lock<std::mutex> lock(m_listeners_mutex);
223  m_listeners.clear();
224  }
225 
226  protected:
227 
228  std::list<callbackFunctionPtr> getListener(HandleType handle)
229  {
230  std::unique_lock<std::mutex> lock(m_listeners_mutex);
231  return m_listeners[handle];
232  }
233 
234  std::map<HandleType, std::list<callbackFunctionPtr>> m_listeners; // list of listeners
235  std::mutex m_listeners_mutex; // mutex to protect access to m_listeners
236 
237  }; // class SickCallbackHandler
238 
239  /*
240  * Utility template to wait for a message
241  */
242  template<typename HandleType, class MsgType> class SickWaitForMessageHandler
243  {
244  public:
245 
247 
248  bool waitForNextMessage(MsgType& msg, double timeout_sec)
249  {
250  uint64_t timeout_microsec = std::max<uint64_t>((uint64_t)(1), (uint64_t)(timeout_sec * 1.0e6));
251  std::chrono::system_clock::time_point wait_end_time = std::chrono::system_clock::now() + std::chrono::microseconds(timeout_microsec);
252  std::unique_lock<std::mutex> lock(m_message_mutex);
253  m_message_valid = false;
254  while(m_running && rosOk() && !m_message_valid)
255  {
256  if (m_message_cond.wait_until(lock, wait_end_time) == std::cv_status::timeout || std::chrono::system_clock::now() >= wait_end_time)
257  break;
258  }
259  if (m_message_valid)
260  {
261  msg = m_message;
262  }
263  return m_message_valid;
264  }
265 
266  static void messageCallback(HandleType node, const MsgType* msg)
267  {
268  if (msg)
269  {
270  std::unique_lock<std::mutex> lock(s_wait_for_message_handler_mutex);
271  for(typename std::list<SickWaitForMessageHandlerPtr>::iterator iter_handler = s_wait_for_message_handler_list.begin(); iter_handler != s_wait_for_message_handler_list.end(); iter_handler++)
272  {
273  if (*iter_handler)
274  (*iter_handler)->message_callback(node, msg);
275  }
276  }
277  }
278 
280  {
281  std::unique_lock<std::mutex> lock(s_wait_for_message_handler_mutex);
282  s_wait_for_message_handler_list.push_back(handler);
283  }
284 
286  {
287  std::unique_lock<std::mutex> lock(s_wait_for_message_handler_mutex);
288  for(typename std::list<SickWaitForMessageHandlerPtr>::iterator iter_handler = s_wait_for_message_handler_list.begin(); iter_handler != s_wait_for_message_handler_list.end(); )
289  {
290  if (*iter_handler == handler)
291  iter_handler = s_wait_for_message_handler_list.erase(iter_handler);
292  else
293  iter_handler++;
294  }
295  }
296 
297  static void shutdown()
298  {
299  std::unique_lock<std::mutex> lock(s_wait_for_message_handler_mutex);
300  for (typename std::list<SickWaitForMessageHandlerPtr>::iterator iter_handler = s_wait_for_message_handler_list.begin(); iter_handler != s_wait_for_message_handler_list.end(); iter_handler++)
301  {
302  if ((*iter_handler))
303  (*iter_handler)->signal_shutdown();
304  }
305  }
306 
307  protected:
308 
309  void signal_shutdown(void)
310  {
311  std::unique_lock<std::mutex> lock(m_message_mutex);
312  m_running = false;
313  m_message_cond.notify_all();
314  }
315 
316  void message_callback(HandleType node, const MsgType* msg)
317  {
318  if (msg)
319  {
320  ROS_INFO_STREAM("SickScanApiWaitEventHandler::message_callback(): message recceived");
321  std::unique_lock<std::mutex> lock(m_message_mutex);
322  if (m_running && rosOk())
323  {
324  m_message = *msg;
325  m_message_valid = true;
326  }
327  m_message_cond.notify_all();
328  }
329  }
330 
331  bool m_running = true; // set false to signal shutdown
332  bool m_message_valid = false; // becomes true after message has been received
333  MsgType m_message; // the received message
334  std::mutex m_message_mutex; // mutex to protect access to m_message
335  std::condition_variable m_message_cond; // condition to wait for resp. notify when a message is received
336 
337  static std::list<SickWaitForMessageHandler<HandleType, MsgType>*> s_wait_for_message_handler_list; // list of all instances of SickWaitForMessageHandler
338  static std::mutex s_wait_for_message_handler_mutex; // mutex to protect access to s_wait_for_message_handler_list
339  }; // class SickWaitForMessageHandler
340 
350 
351 } // namespace sick_scan_xd
352 #endif // __SICK_GENERIC_CALLBACK_H_INCLUDED
sick_scan_xd::NAV350mNPOSDataCallback
void(* NAV350mNPOSDataCallback)(rosNodePtr handle, const NAV350mNPOSData *msg)
Definition: sick_generic_callback.h:97
sick_scan_xd::SickCallbackHandler::notifyListener
void notifyListener(const MsgType *msg)
Definition: sick_generic_callback.h:174
sick_scan_xd::SickCallbackHandler
Definition: sick_generic_callback.h:147
sick_scan_xd::SickWaitForMessageHandler::shutdown
static void shutdown()
Definition: sick_generic_callback.h:297
sick_scan_xd::WaitForVisualizationMarkerMessageHandler
SickWaitForMessageHandler< rosNodePtr, ros_visualization_msgs::MarkerArray > WaitForVisualizationMarkerMessageHandler
Definition: sick_generic_callback.h:348
sick_scan_xd::SickCallbackHandler::m_listeners_mutex
std::mutex m_listeners_mutex
Definition: sick_generic_callback.h:235
sensor_msgs::Imu
::sensor_msgs::Imu_< std::allocator< void > > Imu
Definition: Imu.h:93
sick_scan_xd::SickWaitForMessageHandler::s_wait_for_message_handler_mutex
static std::mutex s_wait_for_message_handler_mutex
Definition: sick_generic_callback.h:338
msg
msg
sick_scan_xd::PointCloud2withEcho::PointCloud2withEcho
PointCloud2withEcho(const ros_sensor_msgs::PointCloud2 *msg, int32_t _num_echos, int32_t _segment_idx, const std::string &_topic)
Definition: sick_generic_callback.h:79
sick_scan_xd::removeNavPoseLandmarkListener
void removeNavPoseLandmarkListener(rosNodePtr handle, NAV350mNPOSDataCallback listener)
Definition: sick_generic_callback.cpp:239
sick_scan_xd::notifyLdmrsObjectArrayListener
void notifyLdmrsObjectArrayListener(rosNodePtr handle, const sick_scan_msg::SickLdmrsObjectArray *msg)
Definition: sick_generic_callback.cpp:174
sick_scan_xd::notifyLIDoutputstateListener
void notifyLIDoutputstateListener(rosNodePtr handle, const sick_scan_msg::LIDoutputstateMsg *msg)
Definition: sick_generic_callback.cpp:134
sick_scan_xd::PointCloud2withEcho::num_echos
int32_t num_echos
Definition: sick_generic_callback.h:85
SickLdmrsObjectArray.h
sick_scan_xd::removeLIDoutputstateListener
void removeLIDoutputstateListener(rosNodePtr handle, LIDoutputstateCallback listener)
Definition: sick_generic_callback.cpp:139
sick_scan_xd::isImuListenerRegistered
bool isImuListenerRegistered(rosNodePtr handle, ImuCallback listener)
Definition: sick_generic_callback.cpp:124
sick_scan_xd::SickWaitForMessageHandler::m_message
MsgType m_message
Definition: sick_generic_callback.h:333
sensor_msgs::PointCloud2
::sensor_msgs::PointCloud2_< std::allocator< void > > PointCloud2
Definition: PointCloud2.h:90
sick_scan_xd::SickWaitForMessageHandler::m_message_cond
std::condition_variable m_message_cond
Definition: sick_generic_callback.h:335
sick_scan_xd::removePolarPointcloudListener
void removePolarPointcloudListener(rosNodePtr handle, PointCloud2Callback listener)
Definition: sick_generic_callback.cpp:99
sick_scan_xd::addVisualizationMarkerListener
void addVisualizationMarkerListener(rosNodePtr handle, VisualizationMarkerCallback listener)
Definition: sick_generic_callback.cpp:209
sick_scan_xd::isLdmrsObjectArrayListenerRegistered
bool isLdmrsObjectArrayListenerRegistered(rosNodePtr handle, SickLdmrsObjectArrayCallback listener)
Definition: sick_generic_callback.cpp:184
sick_scan_xd::notifyPolarPointcloudListener
void notifyPolarPointcloudListener(rosNodePtr handle, const sick_scan_xd::PointCloud2withEcho *msg)
Definition: sick_generic_callback.cpp:94
sick_scan_xd::notifyImuListener
void notifyImuListener(rosNodePtr handle, const ros_sensor_msgs::Imu *msg)
Definition: sick_generic_callback.cpp:114
sick_scan_xd::PointCloud2withEcho
Definition: sick_generic_callback.h:76
sick_scan_xd::removeLFErecListener
void removeLFErecListener(rosNodePtr handle, LFErecCallback listener)
Definition: sick_generic_callback.cpp:159
sick_scan_xd::NAV350mNPOSData
Definition: sick_nav_scandata.h:200
sick_scan_xd::removeVisualizationMarkerListener
void removeVisualizationMarkerListener(rosNodePtr handle, VisualizationMarkerCallback listener)
Definition: sick_generic_callback.cpp:219
sick_scan_xd::WaitForPolarPointCloudMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_xd::PointCloud2withEcho > WaitForPolarPointCloudMessageHandler
Definition: sick_generic_callback.h:342
sick_scan_xd
Definition: abstract_parser.cpp:65
sick_scan_xd::addRadarScanListener
void addRadarScanListener(rosNodePtr handle, RadarScanCallback listener)
Definition: sick_generic_callback.cpp:189
sick_scan_xd::SickLdmrsObjectArray
::sick_scan_xd::SickLdmrsObjectArray_< std::allocator< void > > SickLdmrsObjectArray
Definition: SickLdmrsObjectArray.h:56
sick_ros_wrapper.h
sick_scan_xd::PointCloud2withEcho::segment_idx
int32_t segment_idx
Definition: sick_generic_callback.h:86
sick_scan_xd::addLIDoutputstateListener
void addLIDoutputstateListener(rosNodePtr handle, LIDoutputstateCallback listener)
Definition: sick_generic_callback.cpp:129
sick_scan_xd::LFErecMsg
::sick_scan_xd::LFErecMsg_< std::allocator< void > > LFErecMsg
Definition: LFErecMsg.h:61
sick_scan_xd::SickCallbackHandler::isListenerRegistered
bool isListenerRegistered(HandleType handle, callbackFunctionPtr listener)
Definition: sick_generic_callback.h:205
ROS::now
ROS::Time now(void)
Definition: ros_wrapper.cpp:116
sick_scan_xd::SickCallbackHandler::removeListener
void removeListener(HandleType handle, callbackFunctionPtr listener)
Definition: sick_generic_callback.h:188
sick_scan_xd::addLFErecListener
void addLFErecListener(rosNodePtr handle, LFErecCallback listener)
Definition: sick_generic_callback.cpp:149
sick_scan_xd::removeRadarScanListener
void removeRadarScanListener(rosNodePtr handle, RadarScanCallback listener)
Definition: sick_generic_callback.cpp:199
sick_nav_scandata.h
sick_scan_xd::PointCloud2Callback
void(* PointCloud2Callback)(rosNodePtr handle, const PointCloud2withEcho *msg)
Definition: sick_generic_callback.h:90
sick_scan_xd::notifyVisualizationMarkerListener
void notifyVisualizationMarkerListener(rosNodePtr handle, const ros_visualization_msgs::MarkerArray *msg)
Definition: sick_generic_callback.cpp:214
sick_scan_xd::WaitForNAVPOSDataMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_xd::NAV350mNPOSData > WaitForNAVPOSDataMessageHandler
Definition: sick_generic_callback.h:349
ROS_INFO_STREAM
#define ROS_INFO_STREAM(...)
Definition: sick_scan_ros2_example.cpp:71
sick_scan_xd::SickWaitForMessageHandler::waitForNextMessage
bool waitForNextMessage(MsgType &msg, double timeout_sec)
Definition: sick_generic_callback.h:248
sick_scan_xd::SickCallbackHandler::notifyListener
void notifyListener(HandleType handle, const MsgType *msg)
Definition: sick_generic_callback.h:162
sick_scan_xd::PointCloud2withEcho::topic
std::string topic
Definition: sick_generic_callback.h:87
sick_scan_xd::isNavPoseLandmarkListenerRegistered
bool isNavPoseLandmarkListenerRegistered(rosNodePtr handle, NAV350mNPOSDataCallback listener)
Definition: sick_generic_callback.cpp:244
polar_to_cartesian_pointcloud_ros1.node
node
Definition: polar_to_cartesian_pointcloud_ros1.py:81
sick_scan_xd::SickWaitForMessageHandler::addWaitForMessageHandlerHandler
static void addWaitForMessageHandlerHandler(SickWaitForMessageHandlerPtr handler)
Definition: sick_generic_callback.h:279
sick_scan_xd::LFErecCallback
void(* LFErecCallback)(rosNodePtr handle, const sick_scan_msg::LFErecMsg *msg)
Definition: sick_generic_callback.h:93
sick_scan_xd::removeLdmrsObjectArrayListener
void removeLdmrsObjectArrayListener(rosNodePtr handle, SickLdmrsObjectArrayCallback listener)
Definition: sick_generic_callback.cpp:179
sick_scan_xd::WaitForLFErecMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_msg::LFErecMsg > WaitForLFErecMessageHandler
Definition: sick_generic_callback.h:344
visualization_msgs::MarkerArray
::visualization_msgs::MarkerArray_< std::allocator< void > > MarkerArray
Definition: MarkerArray.h:50
sick_scan_xd::SickWaitForMessageHandler::removeWaitForMessageHandlerHandler
static void removeWaitForMessageHandlerHandler(SickWaitForMessageHandlerPtr handler)
Definition: sick_generic_callback.h:285
sick_scan_xd::SickWaitForMessageHandler::m_message_mutex
std::mutex m_message_mutex
Definition: sick_generic_callback.h:334
sick_scan_xd::addImuListener
void addImuListener(rosNodePtr handle, ImuCallback listener)
Definition: sick_generic_callback.cpp:109
sick_scan_xd::SickWaitForMessageHandler::m_message_valid
bool m_message_valid
Definition: sick_generic_callback.h:332
sick_scan_xd::addCartesianPointcloudListener
void addCartesianPointcloudListener(rosNodePtr handle, PointCloud2Callback listener)
Definition: sick_generic_callback.cpp:69
sick_scan_xd::LIDoutputstateMsg
::sick_scan_xd::LIDoutputstateMsg_< std::allocator< void > > LIDoutputstateMsg
Definition: LIDoutputstateMsg.h:110
sick_scan_xd::isCartesianPointcloudListenerRegistered
bool isCartesianPointcloudListenerRegistered(rosNodePtr handle, PointCloud2Callback listener)
Definition: sick_generic_callback.cpp:84
sick_scan_xd::notifyLFErecListener
void notifyLFErecListener(rosNodePtr handle, const sick_scan_msg::LFErecMsg *msg)
Definition: sick_generic_callback.cpp:154
ros::NodeHandle
sick_scan_xd::WaitForImuMessageHandler
SickWaitForMessageHandler< rosNodePtr, ros_sensor_msgs::Imu > WaitForImuMessageHandler
Definition: sick_generic_callback.h:343
sick_scan_xd::RadarScanCallback
void(* RadarScanCallback)(rosNodePtr handle, const sick_scan_msg::RadarScan *msg)
Definition: sick_generic_callback.h:95
sick_scan_xd::SickCallbackHandler::clear
void clear()
Definition: sick_generic_callback.h:220
sick_scan_xd::SickWaitForMessageHandler::signal_shutdown
void signal_shutdown(void)
Definition: sick_generic_callback.h:309
sick_scan_xd::VisualizationMarkerCallback
void(* VisualizationMarkerCallback)(rosNodePtr handle, const ros_visualization_msgs::MarkerArray *msg)
Definition: sick_generic_callback.h:96
sick_scan_xd::WaitForRadarScanMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_msg::RadarScan > WaitForRadarScanMessageHandler
Definition: sick_generic_callback.h:346
sick_scan_xd::isLIDoutputstateListenerRegistered
bool isLIDoutputstateListenerRegistered(rosNodePtr handle, LIDoutputstateCallback listener)
Definition: sick_generic_callback.cpp:144
sick_scan_xd::SickWaitForMessageHandler
Definition: sick_generic_callback.h:242
sick_scan_xd::removeCartesianPointcloudListener
void removeCartesianPointcloudListener(rosNodePtr handle, PointCloud2Callback listener)
Definition: sick_generic_callback.cpp:79
sick_scan_xd::SickWaitForMessageHandler::s_wait_for_message_handler_list
static std::list< SickWaitForMessageHandler< HandleType, MsgType > * > s_wait_for_message_handler_list
Definition: sick_generic_callback.h:337
sick_scan_xd::SickCallbackHandler::getListener
std::list< callbackFunctionPtr > getListener(HandleType handle)
Definition: sick_generic_callback.h:228
sick_scan_xd::SickWaitForMessageHandler::m_running
bool m_running
Definition: sick_generic_callback.h:331
sick_scan_xd::removeImuListener
void removeImuListener(rosNodePtr handle, ImuCallback listener)
Definition: sick_generic_callback.cpp:119
sick_scan_xd::notifyRadarScanListener
void notifyRadarScanListener(rosNodePtr handle, const sick_scan_msg::RadarScan *msg)
Definition: sick_generic_callback.cpp:194
sick_scan_xd::SickWaitForMessageHandler::messageCallback
static void messageCallback(HandleType node, const MsgType *msg)
Definition: sick_generic_callback.h:266
sick_scan_xd::ImuCallback
void(* ImuCallback)(rosNodePtr handle, const ros_sensor_msgs::Imu *msg)
Definition: sick_generic_callback.h:91
sick_scan_base.h
sick_scan_xd::isRadarScanListenerRegistered
bool isRadarScanListenerRegistered(rosNodePtr handle, RadarScanCallback listener)
Definition: sick_generic_callback.cpp:204
sick_scan_xd::SickCallbackHandler::callbackFunctionPtr
void(* callbackFunctionPtr)(HandleType handle, const MsgType *msg)
Definition: sick_generic_callback.h:151
sick_generic_device_finder.timeout
timeout
Definition: sick_generic_device_finder.py:113
sick_scan_xd::LIDoutputstateCallback
void(* LIDoutputstateCallback)(rosNodePtr handle, const sick_scan_msg::LIDoutputstateMsg *msg)
Definition: sick_generic_callback.h:92
sick_scan_xd::WaitForLdmrsObjectArrayMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_msg::SickLdmrsObjectArray > WaitForLdmrsObjectArrayMessageHandler
Definition: sick_generic_callback.h:347
sick_scan_xd::WaitForLIDoutputstateMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_msg::LIDoutputstateMsg > WaitForLIDoutputstateMessageHandler
Definition: sick_generic_callback.h:345
sick_scan_xd::PointCloud2withEcho::PointCloud2withEcho
PointCloud2withEcho()
Definition: sick_generic_callback.h:78
sick_scan_xd::addNavPoseLandmarkListener
void addNavPoseLandmarkListener(rosNodePtr handle, NAV350mNPOSDataCallback listener)
Definition: sick_generic_callback.cpp:229
sick_scan_xd::RadarScan
::sick_scan_xd::RadarScan_< std::allocator< void > > RadarScan
Definition: RadarScan.h:68
sick_scan_xd::WaitForCartesianPointCloudMessageHandler
SickWaitForMessageHandler< rosNodePtr, sick_scan_xd::PointCloud2withEcho > WaitForCartesianPointCloudMessageHandler
Definition: sick_generic_callback.h:341
sick_scan_xd::SickCallbackHandler::addListener
void addListener(HandleType handle, callbackFunctionPtr listener)
Definition: sick_generic_callback.h:153
sick_scan_xd::notifyCartesianPointcloudListener
void notifyCartesianPointcloudListener(rosNodePtr handle, const sick_scan_xd::PointCloud2withEcho *msg)
Definition: sick_generic_callback.cpp:74
sick_scan_xd::addPolarPointcloudListener
void addPolarPointcloudListener(rosNodePtr handle, PointCloud2Callback listener)
Definition: sick_generic_callback.cpp:89
rosOk
bool rosOk(void)
Definition: sick_ros_wrapper.h:206
sick_scan_xd::SickWaitForMessageHandler::message_callback
void message_callback(HandleType node, const MsgType *msg)
Definition: sick_generic_callback.h:316
sick_scan_xd::SickWaitForMessageHandler::SickWaitForMessageHandlerPtr
SickWaitForMessageHandler< HandleType, MsgType > * SickWaitForMessageHandlerPtr
Definition: sick_generic_callback.h:246
sick_scan_xd::isPolarPointcloudListenerRegistered
bool isPolarPointcloudListenerRegistered(rosNodePtr handle, PointCloud2Callback listener)
Definition: sick_generic_callback.cpp:104
sick_scan_xd::isLFErecListenerRegistered
bool isLFErecListenerRegistered(rosNodePtr handle, LFErecCallback listener)
Definition: sick_generic_callback.cpp:164
sick_scan_xd::SickLdmrsObjectArrayCallback
void(* SickLdmrsObjectArrayCallback)(rosNodePtr handle, const sick_scan_msg::SickLdmrsObjectArray *msg)
Definition: sick_generic_callback.h:94
sick_scan_xd::isVisualizationMarkerListenerRegistered
bool isVisualizationMarkerListenerRegistered(rosNodePtr handle, VisualizationMarkerCallback listener)
Definition: sick_generic_callback.cpp:224
sick_scan_xd::notifyNavPoseLandmarkListener
void notifyNavPoseLandmarkListener(rosNodePtr handle, NAV350mNPOSData *msg)
Definition: sick_generic_callback.cpp:234
sick_scan_xd::addLdmrsObjectArrayListener
void addLdmrsObjectArrayListener(rosNodePtr handle, SickLdmrsObjectArrayCallback listener)
Definition: sick_generic_callback.cpp:169
sick_scan_xd::PointCloud2withEcho::pointcloud
ros_sensor_msgs::PointCloud2 pointcloud
Definition: sick_generic_callback.h:84
sick_scan_xd::SickCallbackHandler::m_listeners
std::map< HandleType, std::list< callbackFunctionPtr > > m_listeners
Definition: sick_generic_callback.h:234


sick_scan_xd
Author(s): Michael Lehning , Jochen Sprickerhof , Martin Günther
autogenerated on Fri Oct 25 2024 02:47:10