Fawkes API Fawkes Development Version
transform_listener.h
1/***************************************************************************
2 * transform_listener.h - Fawkes transform listener (based on ROS tf)
3 *
4 * Created: Mon Oct 24 18:09:47 2011
5 * Copyright 2011 Tim Niemueller [www.niemueller.de]
6 ****************************************************************************/
7
8/* This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version. A runtime exception applies to
12 * this software (see LICENSE.GPL_WRE file mentioned below for details).
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU Library General Public License for more details.
18 *
19 * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
20 */
21
22/* This code is based on ROS tf with the following copyright and license:
23 *
24 * Copyright (c) 2008, Willow Garage, Inc.
25 * All rights reserved.
26 *
27 * Redistribution and use in source and binary forms, with or without
28 * modification, are permitted provided that the following conditions are met:
29 *
30 * * Redistributions of source code must retain the above copyright
31 * notice, this list of conditions and the following disclaimer.
32 * * Redistributions in binary form must reproduce the above copyright
33 * notice, this list of conditions and the following disclaimer in the
34 * documentation and/or other materials provided with the distribution.
35 * * Neither the name of the Willow Garage, Inc. nor the names of its
36 * contributors may be used to endorse or promote products derived from
37 * this software without specific prior written permission.
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
40 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
42 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
43 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
44 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
45 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
46 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49 * POSSIBILITY OF SUCH DAMAGE.
50 */
51
52#ifndef _LIBS_TF_TRANSFORM_LISTENER_H_
53#define _LIBS_TF_TRANSFORM_LISTENER_H_
54
55#include <blackboard/interface_listener.h>
56#include <blackboard/interface_observer.h>
57#include <tf/types.h>
58
59#include <list>
60
61namespace fawkes {
62
63class BlackBoard;
64class TransformInterface;
65
66namespace tf {
67
68class Transformer;
69
71{
72public:
73 TransformListener(BlackBoard *bb, Transformer *tf_transformer, bool bb_is_remote = false);
74 virtual ~TransformListener();
75
76 // for BlackBoardInterfaceObserver
77 virtual void bb_interface_created(const char *type, const char *id) noexcept;
78
79 // for BlackBoardInterfaceListener
80 virtual void bb_interface_data_refreshed(Interface *interface) noexcept;
81 virtual void bb_interface_writer_removed(Interface *interface, Uuid instance_serial) noexcept;
82 virtual void bb_interface_reader_removed(Interface *interface, Uuid instance_serial) noexcept;
83
84private:
85 void conditional_close(Interface *interface) noexcept;
86
87private:
88 BlackBoard * bb_;
89 Transformer *tf_transformer_;
90 bool bb_is_remote_;
91
92 std::list<TransformInterface *> tfifs_;
93};
94
95} // end namespace tf
96} // end namespace fawkes
97
98#endif
BlackBoard interface listener.
BlackBoard interface observer.
The BlackBoard abstract class.
Definition: blackboard.h:46
Base class for all Fawkes BlackBoard interfaces.
Definition: interface.h:80
A convenience class for universally unique identifiers (UUIDs).
Definition: uuid.h:29
Receive transforms and answer queries.
virtual void bb_interface_writer_removed(Interface *interface, Uuid instance_serial) noexcept
A writing instance has been closed for a watched interface.
TransformListener(BlackBoard *bb, Transformer *tf_transformer, bool bb_is_remote=false)
Constructor.
virtual void bb_interface_reader_removed(Interface *interface, Uuid instance_serial) noexcept
A reading instance has been closed for a watched interface.
virtual void bb_interface_created(const char *type, const char *id) noexcept
BlackBoard interface created notification.
virtual ~TransformListener()
Destructor.
virtual void bb_interface_data_refreshed(Interface *interface) noexcept
BlackBoard data refreshed notification.
Coordinate transforms between any two frames in a system.
Definition: transformer.h:65
Fawkes library namespace.