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 "sensor_thread.h"
32 #include "act_thread.h"
33 
34 using namespace fawkes;
35 
36 /** Plugin to provide Robotino platform support for Fawkes.
37  * @author Tim Niemueller
38  */
40 {
41 public:
42  /** Constructor.
43  * @param config Fawkes configuration
44  */
46  : Plugin(config)
47  {
48  std::string cfg_driver = config->get_string("/hardware/robotino/driver");
49 
50  RobotinoComThread *com_thread = NULL;
51 
52  if (cfg_driver == "openrobotino") {
53 #ifdef HAVE_OPENROBOTINO
54  com_thread = new OpenRobotinoComThread();
55 #else
56  throw Exception("robotino: driver mode 'openrobotino' not available at compile time");
57 #endif
58  } else if (cfg_driver == "direct") {
59 #ifdef HAVE_ROBOTINO_DIRECT
60  com_thread = new DirectRobotinoComThread();
61 #else
62  throw Exception("robotino: driver mode 'direct' not available at compile time");
63 #endif
64  } else {
65  throw Exception("robotino: unknown driver '%s'", cfg_driver.c_str());
66  }
67  thread_list.push_back(com_thread);
68  thread_list.push_back(new RobotinoSensorThread(com_thread));
69  thread_list.push_back(new RobotinoActThread(com_thread));
70  }
71 };
72 
73 PLUGIN_DESCRIPTION("Robotino platform support")
74 EXPORT_PLUGIN(RobotinoPlugin)
Plugin interface class.
Definition: plugin.h:33
Plugin to provide Robotino platform support for Fawkes.
Fawkes library namespace.
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
Base class for exceptions in Fawkes.
Definition: exception.h:36
Robotino act hook integration thread.
Definition: act_thread.h:47
Virtual base class for thread that communicates with a Robotino.
Definition: com_thread.h:39
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
Robotino sensor hook integration thread.
Definition: sensor_thread.h:45
Interface for configuration handling.
Definition: config.h:67
virtual std::string get_string(const char *path)=0
Get value from configuration which is of type string.
RobotinoPlugin(Configuration *config)
Constructor.