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)
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:35
Robotino act hook integration thread.
Definition: act_thread.h:48
Virtual base class for thread that communicates with a Robotino.
Definition: com_thread.h:38
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:64
virtual std::string get_string(const char *path)=0
Get value from configuration which is of type string.
RobotinoPlugin(Configuration *config)
Constructor.