Fawkes API Fawkes Development Version
robotino_plugin.cpp
1
2/***************************************************************************
3 * robotino_plugin.cpp - Plugin for Robotino platform support
4 *
5 * Created: Sun Nov 13 15:31:57 2011
6 * Copyright 2011 Tim Niemueller [www.niemueller.de]
7 *
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Library General Public License for more details.
19 *
20 * Read the full text in the LICENSE.GPL file in the doc directory.
21 */
22
23#include <core/plugin.h>
24
25#ifdef HAVE_OPENROBOTINO
26# include "openrobotino_com_thread.h"
27#endif
28#ifdef HAVE_ROBOTINO_DIRECT
29# include "direct_com_thread.h"
30#endif
31#include "act_thread.h"
32#include "sensor_thread.h"
33
34using namespace fawkes;
35
36/** Plugin to provide Robotino platform support for Fawkes.
37 * @author Tim Niemueller
38 */
40{
41public:
42 /** Constructor.
43 * @param config Fawkes configuration
44 */
46 {
47 std::string cfg_driver = config->get_string("/hardware/robotino/driver");
48
49 RobotinoComThread *com_thread = NULL;
50
51 if (cfg_driver == "openrobotino") {
52#ifdef HAVE_OPENROBOTINO
53 com_thread = new OpenRobotinoComThread();
54#else
55 throw Exception("robotino: driver mode 'openrobotino' not available at compile time");
56#endif
57 } else if (cfg_driver == "direct") {
58#ifdef HAVE_ROBOTINO_DIRECT
59 com_thread = new DirectRobotinoComThread();
60#else
61 throw Exception("robotino: driver mode 'direct' not available at compile time");
62#endif
63 } else {
64 throw Exception("robotino: unknown driver '%s'", cfg_driver.c_str());
65 }
66 thread_list.push_back(com_thread);
69 }
70};
71
72PLUGIN_DESCRIPTION("Robotino platform support")
73EXPORT_PLUGIN(RobotinoPlugin)
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
Robotino act hook integration thread.
Definition: act_thread.h:57
Virtual base class for thread that communicates with a Robotino.
Definition: com_thread.h:41
Plugin to provide Robotino platform support for Fawkes.
RobotinoPlugin(Configuration *config)
Constructor.
Robotino sensor hook integration thread.
Definition: sensor_thread.h:51
Interface for configuration handling.
Definition: config.h:68
virtual std::string get_string(const char *path)=0
Get value from configuration which is of type string.
Base class for exceptions in Fawkes.
Definition: exception.h:36
Plugin interface class.
Definition: plugin.h:34
ThreadList thread_list
Thread list member.
Definition: plugin.h:53
Configuration * config
Fawkes configuration.
Definition: plugin.h:58
void push_back(Thread *thread)
Add thread to the end.
Fawkes library namespace.