22 #include "acquisition_thread.h"
23 #include "sensor_thread.h"
25 #include <core/plugin.h>
27 # include "imu_cruizcore_xg1010.h"
46 std::set<std::string> configs;
47 std::set<std::string> ignored_configs;
49 std::string prefix =
"/hardware/imu/";
51 #if __cplusplus >= 201103L
52 std::unique_ptr<Configuration::ValueIterator> i(config->
search(prefix.c_str()));
54 std::auto_ptr<Configuration::ValueIterator> i(config->
search(prefix.c_str()));
57 std::string cfg_name = std::string(i->
path()).substr(prefix.length());
58 cfg_name = cfg_name.substr(0, cfg_name.find(
"/"));
60 if ((configs.find(cfg_name) == configs.end())
61 && (ignored_configs.find(cfg_name) == ignored_configs.end())) {
62 std::string cfg_prefix = prefix + cfg_name +
"/";
66 active = config->
get_bool((cfg_prefix +
"active").c_str());
72 std::string type = config->
get_string((cfg_prefix +
"type").c_str());
73 bool continuous =
false;
75 continuous = config->
get_bool((cfg_prefix +
"continuous").c_str());
82 if (type ==
"CruizCore-XG1010") {
88 throw Exception(
"Unknown IMU type '%s' for config %s",
93 thread_list.push_back(aqt);
98 configs.insert(cfg_name);
101 ignored_configs.insert(cfg_name);
104 for (ThreadList::iterator i = thread_list.begin(); i != thread_list.end(); ++i) {
112 if (thread_list.empty()) {
113 throw Exception(
"No IMU devices configured, aborting");
118 PLUGIN_DESCRIPTION(
"Driver for inertial measurement units (IMU)")