22 #include "act_thread.h"
23 #include "driver_thread.h"
24 #include "sensor_thread.h"
26 #include <core/plugin.h>
46 std::set<std::string> configs;
47 std::set<std::string> ignored_configs;
49 std::string prefix =
"/dynamixel/";
52 #if __cplusplus >= 201103L
53 std::unique_ptr<Configuration::ValueIterator> i(config->
search(prefix.c_str()));
55 std::auto_ptr<Configuration::ValueIterator> i(config->
search(prefix.c_str()));
58 std::string cfg_name = std::string(i->
path()).substr(prefix.length());
59 cfg_name = cfg_name.substr(0, cfg_name.find(
"/"));
61 if ((configs.find(cfg_name) == configs.end())
62 && (ignored_configs.find(cfg_name) == ignored_configs.end())) {
63 std::string cfg_prefix = prefix + cfg_name +
"/";
67 active = config->
get_bool((cfg_prefix +
"active").c_str());
76 thread_list.push_back(drv_thread);
77 configs.insert(cfg_name);
80 ignored_configs.insert(cfg_name);
83 for (ThreadList::iterator i = thread_list.begin(); i != thread_list.end(); ++i) {
93 if (thread_list.empty()) {
96 throw Exception(
"No active servo configs, aborting");
99 thread_list.push_back(sensor_thread);
100 thread_list.push_back(act_thread);
104 PLUGIN_DESCRIPTION(
"Robotis Dynamixel servo driver plugin")