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 
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  */
45  explicit RobotinoPlugin(Configuration *config) : Plugin(config)
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);
67  thread_list.push_back(new RobotinoSensorThread(com_thread));
68  thread_list.push_back(new RobotinoActThread(com_thread));
69  }
70 };
71 
72 PLUGIN_DESCRIPTION("Robotino platform support")
73 EXPORT_PLUGIN(RobotinoPlugin)
RobotinoPlugin
Plugin to provide Robotino platform support for Fawkes.
Definition: robotino_plugin.cpp:39
OpenRobotinoComThread
Definition: openrobotino_com_thread.h:71
fawkes::Configuration
Definition: config.h:68
fawkes
RobotinoActThread
Definition: act_thread.h:47
RobotinoComThread
Definition: com_thread.h:37
RobotinoPlugin::RobotinoPlugin
RobotinoPlugin(Configuration *config)
Constructor.
Definition: robotino_plugin.cpp:45
RobotinoSensorThread
Definition: sensor_thread.h:44
DirectRobotinoComThread
Definition: direct_com_thread.h:46
fawkes::Configuration::get_string
virtual std::string get_string(const char *path)=0
fawkes::Plugin
Definition: plugin.h:37
fawkes::Exception
Definition: exception.h:39