#include "gtl_hw.h" namespace gtl { namespace hw { hw::hw(QString path, QObject* parent) : QObject(parent) { QDir dir(path); qDebug() << "loading hardware plugins. path:" << dir.absolutePath(); QStringList plugins = dir.entryList(QStringList() << "*.dll", QDir::Files); for (int i = 0; i < plugins.size(); i++) { QPluginLoader loader(dir.absoluteFilePath(plugins[i])); QObject* obj = loader.instance(); if (obj) { if(loader.metaData().value("IID").toString() == "gtlab.hardware") _instances.insert(qobject_cast(obj)->id(), obj); else loader.unload(); } } } QStringList hw::devices() const { return _instances.keys(); } device *hw::create_device(QString device, QObject* parent) { QMultiMap::iterator iter_device = _instances.find(device); if(iter_device == _instances.end()) return NULL; return qobject_cast(iter_device.value())->create_device(parent); } } }