From 218edb53f9843b5b4d42e65c186ae04b0dd42c79 Mon Sep 17 00:00:00 2001 From: Kevron Rees Date: Mon, 24 Sep 2012 12:28:39 -0700 Subject: [PATCH] config required to construct plugins. device config added to wheel plugin --- ambd/pluginloader.cpp | 7 ++----- ambd/pluginloader.h | 6 +++--- examples/configwheel | 3 ++- examples/democonfig | 6 ++++-- lib/abstractsink.cpp | 12 ++++-------- lib/abstractsink.h | 6 ++---- lib/abstractsource.cpp | 4 ++-- lib/abstractsource.h | 4 ++-- plugins/dbus/accelerationproperty.cpp | 2 +- plugins/dbus/dbusplugin.cpp | 12 ++++++------ plugins/dbus/dbusplugin.h | 4 ++-- plugins/dbus/properties.h | 2 +- plugins/demosink/demosinkplugin.cpp | 8 ++++---- plugins/demosink/demosinkplugin.h | 8 ++++---- plugins/exampleplugin.cpp | 8 ++++---- plugins/exampleplugin.h | 2 +- plugins/examplesink.cpp | 6 +++--- plugins/examplesink.h | 14 ++++---------- plugins/obd2plugin/obd2source.cpp | 6 +++--- plugins/obd2plugin/obd2source.h | 2 +- plugins/websocketsink/websocketsink.cpp | 2 +- plugins/websocketsink/websocketsinkmanager.cpp | 10 +++++----- plugins/websocketsink/websocketsinkmanager.h | 2 +- plugins/websocketsourceplugin/websocketsource.cpp | 6 +++--- plugins/websocketsourceplugin/websocketsource.h | 2 +- plugins/wheel/wheelplugin.cpp | 17 ++++++++++++----- plugins/wheel/wheelplugin.h | 4 +++- 27 files changed, 81 insertions(+), 84 deletions(-) diff --git a/ambd/pluginloader.cpp b/ambd/pluginloader.cpp index 4e63f97..33107de 100644 --- a/ambd/pluginloader.cpp +++ b/ambd/pluginloader.cpp @@ -97,12 +97,11 @@ PluginLoader::PluginLoader(string configFile, AbstractRoutingEngine* re): f_crea string path = json_reader_get_string_value(reader); json_reader_end_member(reader); - AbstractSource* plugin = loadPlugin(path); + AbstractSource* plugin = loadPlugin(path,configurationMap); if(plugin != nullptr) { mSources.push_back(plugin); - plugin->setConfiguration(configurationMap); } json_reader_end_element(reader); @@ -133,15 +132,13 @@ PluginLoader::PluginLoader(string configFile, AbstractRoutingEngine* re): f_crea string path = json_reader_get_string_value(reader); json_reader_end_member(reader); - AbstractSinkManager* plugin = loadPlugin(path); + AbstractSinkManager* plugin = loadPlugin(path, configurationMap); if(plugin == nullptr) { throw std::runtime_error("plugin is not a SinkManager"); } - plugin->setConfiguration(configurationMap); - json_reader_end_element(reader); } diff --git a/ambd/pluginloader.h b/ambd/pluginloader.h index 43b6bfc..18edb9e 100644 --- a/ambd/pluginloader.h +++ b/ambd/pluginloader.h @@ -33,7 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA using namespace std; -typedef void* create_t(AbstractRoutingEngine*); +typedef void* create_t(AbstractRoutingEngine*, map ); class PluginLoader @@ -51,7 +51,7 @@ public: private: ///methods: template - T loadPlugin(string pluginName) + T loadPlugin(string pluginName, map config) { DebugOut()<<"Loading plugin: "<( obj ); } diff --git a/examples/configwheel b/examples/configwheel index c58520d..522cca3 100644 --- a/examples/configwheel +++ b/examples/configwheel @@ -2,7 +2,8 @@ "sources" : [ { "name" : "WheelSource", - "path" : "/usr/lib/automotive-message-broker/wheelsourceplugin.so" + "path" : "/usr/lib/automotive-message-broker/wheelsourceplugin.so", + "device" : "/dev/input/js1" } ], "sinks": [ diff --git a/examples/democonfig b/examples/democonfig index 86ab11f..f86dd71 100644 --- a/examples/democonfig +++ b/examples/democonfig @@ -2,13 +2,15 @@ "sources" : [ { "name" : "WheelSource", - "path" : "/usr/lib/automotive-message-broker/wheelsourceplugin.so" + "path" : "/usr/lib/automotive-message-broker/wheelsourceplugin.so", + "device" : "/dev/input/js1" } ], "sinks": [ { "name" : "WebSocketSink", - "path" : "/usr/lib/automotive-message-broker/websocketsinkplugin.so" + "path" : "/usr/lib/automotive-message-broker/websocketsinkplugin.so", + "interface" : "lo" } , { "path" : "/usr/lib/automotive-message-broker/demosinkplugin.so", diff --git a/lib/abstractsink.cpp b/lib/abstractsink.cpp index 4d0a704..a8ec558 100644 --- a/lib/abstractsink.cpp +++ b/lib/abstractsink.cpp @@ -20,8 +20,8 @@ #include "abstractsink.h" #include "abstractroutingengine.h" -AbstractSink::AbstractSink(AbstractRoutingEngine* engine) -:routingEngine(engine) +AbstractSink::AbstractSink(AbstractRoutingEngine* engine, map config) + :routingEngine(engine), configuration(config) { routingEngine->registerSink(this); } @@ -36,15 +36,11 @@ void AbstractSink::setConfiguration(map config) configuration = config; } -AbstractSinkManager::AbstractSinkManager(AbstractRoutingEngine* engine) +AbstractSinkManager::AbstractSinkManager(AbstractRoutingEngine* engine, map config) :routingEngine(engine) { - -} - -void AbstractSinkManager::setConfiguration(map config) -{ configuration = config; } + diff --git a/lib/abstractsink.h b/lib/abstractsink.h index 6c5b907..110c72e 100644 --- a/lib/abstractsink.h +++ b/lib/abstractsink.h @@ -40,7 +40,7 @@ class AbstractSink { public: - AbstractSink(AbstractRoutingEngine* engine); + AbstractSink(AbstractRoutingEngine* engine, map config); virtual ~AbstractSink(); ///Pure virtual methods: @@ -72,9 +72,7 @@ class AbstractSinkManager { public: - AbstractSinkManager(AbstractRoutingEngine* engine); - - virtual void setConfiguration(map config); + AbstractSinkManager(AbstractRoutingEngine* engine, map config); protected: AbstractRoutingEngine* routingEngine; diff --git a/lib/abstractsource.cpp b/lib/abstractsource.cpp index ada4b96..55e8d90 100644 --- a/lib/abstractsource.cpp +++ b/lib/abstractsource.cpp @@ -19,8 +19,8 @@ #include "abstractsource.h" -AbstractSource::AbstractSource(AbstractRoutingEngine* engine) -: AbstractSink(engine), routingEngine(engine) +AbstractSource::AbstractSource(AbstractRoutingEngine* engine, map config) + : AbstractSink(engine,config), routingEngine(engine) { } diff --git a/lib/abstractsource.h b/lib/abstractsource.h index 6db0e51..70d55f5 100644 --- a/lib/abstractsource.h +++ b/lib/abstractsource.h @@ -39,7 +39,7 @@ class AbstractSource: public AbstractSink { public: - AbstractSource(AbstractRoutingEngine* engine); + AbstractSource(AbstractRoutingEngine* engine, map config); virtual ~AbstractSource(); ///pure virtual methods: @@ -55,7 +55,7 @@ protected: AbstractRoutingEngine* routingEngine; private: - AbstractSource():AbstractSink(nullptr) { } + AbstractSource():AbstractSink(nullptr, map()) { } }; #endif // ABSTRACTSOURCE_H diff --git a/plugins/dbus/accelerationproperty.cpp b/plugins/dbus/accelerationproperty.cpp index 6259b14..780aa6e 100644 --- a/plugins/dbus/accelerationproperty.cpp +++ b/plugins/dbus/accelerationproperty.cpp @@ -20,7 +20,7 @@ #include "listplusplus.h" AccelerationPropertyInterface::AccelerationPropertyInterface(AbstractRoutingEngine *re, GDBusConnection* connection) - :DBusSink("org.automotive.acceleration","/org/automotive/acceleration", re, connection), + :DBusSink("org.automotive.acceleration","/org/automotive/acceleration", re, connection, map ()), accelerationX(nullptr), accelerationY(nullptr), accelerationZ(nullptr) { supportedChanged(re->supported()); diff --git a/plugins/dbus/dbusplugin.cpp b/plugins/dbus/dbusplugin.cpp index b33ee56..e206fb9 100644 --- a/plugins/dbus/dbusplugin.cpp +++ b/plugins/dbus/dbusplugin.cpp @@ -23,14 +23,14 @@ #include "debugout.h" #include "listplusplus.h" -extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map config) { - return new DBusSinkManager(routingengine); + return new DBusSinkManager(routingengine, config); } -DBusSink::DBusSink(string interface, string path, AbstractRoutingEngine* engine, GDBusConnection* connection) +DBusSink::DBusSink(string interface, string path, AbstractRoutingEngine* engine, GDBusConnection* connection, map config) :AbstractDBusInterface(interface, path, connection), - AbstractSink(engine), supported(false) + AbstractSink(engine, config), supported(false) { } @@ -66,8 +66,8 @@ std::string DBusSink::uuid() return "c2e6cafa-eef5-4b8a-99a0-0f2c9be1057d"; } -DBusSinkManager::DBusSinkManager(AbstractRoutingEngine *engine) - :AbstractSinkManager(engine) +DBusSinkManager::DBusSinkManager(AbstractRoutingEngine *engine, map config) + :AbstractSinkManager(engine, config) { DBusInterfaceManager* manager = new DBusInterfaceManager(engine); } diff --git a/plugins/dbus/dbusplugin.h b/plugins/dbus/dbusplugin.h index 1cf6c5a..7faa80b 100644 --- a/plugins/dbus/dbusplugin.h +++ b/plugins/dbus/dbusplugin.h @@ -31,7 +31,7 @@ class DBusSink : public AbstractSink, public AbstractDBusInterface { public: - DBusSink(std::string interface, std::string path, AbstractRoutingEngine* engine, GDBusConnection* connection); + DBusSink(std::string interface, std::string path, AbstractRoutingEngine* engine, GDBusConnection* connection, map config); virtual void supportedChanged(PropertyList supportedProperties); virtual void propertyChanged(VehicleProperty::Property property, AbstractPropertyType *value, std::string uuid); virtual std::string uuid(); @@ -52,7 +52,7 @@ private: class DBusSinkManager: public AbstractSinkManager { public: - DBusSinkManager(AbstractRoutingEngine* engine); + DBusSinkManager(AbstractRoutingEngine* engine, map config); }; #endif diff --git a/plugins/dbus/properties.h b/plugins/dbus/properties.h index 84fc15e..c0255a0 100644 --- a/plugins/dbus/properties.h +++ b/plugins/dbus/properties.h @@ -27,7 +27,7 @@ class VehicleSpeedProperty: public DBusSink { public: VehicleSpeedProperty(AbstractRoutingEngine* re, GDBusConnection* connection) - :DBusSink("org.automotive.vehicleSpeed","/org/automotive/vehiclespeed", re, connection) + :DBusSink("org.automotive.vehicleSpeed","/org/automotive/vehiclespeed", re, connection, map()) { wantProperty(VehicleProperty::VehicleSpeed,"VehicleSpeed", "i", AbstractProperty::Read); supportedChanged(re->supported()); diff --git a/plugins/demosink/demosinkplugin.cpp b/plugins/demosink/demosinkplugin.cpp index c970a93..9f7f6b3 100644 --- a/plugins/demosink/demosinkplugin.cpp +++ b/plugins/demosink/demosinkplugin.cpp @@ -53,8 +53,8 @@ string findReplace(string str, string tofind, string replacewith, string exclusi } -DemoSink::DemoSink(AbstractRoutingEngine* re) -:AbstractSink(re) +DemoSink::DemoSink(AbstractRoutingEngine* re, map config) +:AbstractSink(re, config) { routingEngine->subscribeToProperty(VehicleProperty::ButtonEvent, this); routingEngine->subscribeToProperty(VehicleProperty::TurnSignal, this); @@ -65,9 +65,9 @@ DemoSink::~DemoSink() } -extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map config) { - return new DemoSinkManager(routingengine); + return new DemoSinkManager(routingengine, config); } string DemoSink::uuid() diff --git a/plugins/demosink/demosinkplugin.h b/plugins/demosink/demosinkplugin.h index 1393841..02fb191 100644 --- a/plugins/demosink/demosinkplugin.h +++ b/plugins/demosink/demosinkplugin.h @@ -28,7 +28,7 @@ class DemoSink: public AbstractSink { public: - DemoSink(AbstractRoutingEngine* re); + DemoSink(AbstractRoutingEngine* re, map config); ~DemoSink(); string uuid(); @@ -46,15 +46,15 @@ private: class DemoSinkManager: public AbstractSinkManager { public: - DemoSinkManager(AbstractRoutingEngine* engine) - :AbstractSinkManager(engine) + DemoSinkManager(AbstractRoutingEngine* engine, map config) + :AbstractSinkManager(engine, config) { } void setConfiguration(map config) { - DemoSink* sink = new DemoSink(routingEngine); + DemoSink* sink = new DemoSink(routingEngine, config); sink->setConfiguration(config); } }; diff --git a/plugins/exampleplugin.cpp b/plugins/exampleplugin.cpp index f61e164..45ef102 100644 --- a/plugins/exampleplugin.cpp +++ b/plugins/exampleplugin.cpp @@ -42,8 +42,8 @@ static gboolean timeoutCallback(gpointer data) return true; } -ExampleSourcePlugin::ExampleSourcePlugin(AbstractRoutingEngine* re) -:AbstractSource(re), velocity(0), engineSpeed(0) +ExampleSourcePlugin::ExampleSourcePlugin(AbstractRoutingEngine* re, map config) +:AbstractSource(re, config), velocity(0), engineSpeed(0) { re->setSupported(supported(), this); debugOut("setting timeout"); @@ -53,9 +53,9 @@ ExampleSourcePlugin::ExampleSourcePlugin(AbstractRoutingEngine* re) -extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine, map config) { - return new ExampleSourcePlugin(routingengine); + return new ExampleSourcePlugin(routingengine, config); } diff --git a/plugins/exampleplugin.h b/plugins/exampleplugin.h index a52008d..5187c5c 100644 --- a/plugins/exampleplugin.h +++ b/plugins/exampleplugin.h @@ -28,7 +28,7 @@ class ExampleSourcePlugin: public AbstractSource { public: - ExampleSourcePlugin(AbstractRoutingEngine* re); + ExampleSourcePlugin(AbstractRoutingEngine* re, map config); string uuid(); void getPropertyAsync(AsyncPropertyReply *reply); diff --git a/plugins/examplesink.cpp b/plugins/examplesink.cpp index e870ff0..d3e6c43 100644 --- a/plugins/examplesink.cpp +++ b/plugins/examplesink.cpp @@ -21,12 +21,12 @@ #include "abstractroutingengine.h" #include "debugout.h" -extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map config) { - return new ExampleSinkManager(routingengine); + return new ExampleSinkManager(routingengine, config); } -ExampleSink::ExampleSink(AbstractRoutingEngine* engine): AbstractSink(engine) +ExampleSink::ExampleSink(AbstractRoutingEngine* engine, map config): AbstractSink(engine, config) { routingEngine->subscribeToProperty(VehicleProperty::EngineSpeed, this); routingEngine->subscribeToProperty(VehicleProperty::VehicleSpeed, this); diff --git a/plugins/examplesink.h b/plugins/examplesink.h index a522993..afac457 100644 --- a/plugins/examplesink.h +++ b/plugins/examplesink.h @@ -27,7 +27,7 @@ class ExampleSink : public AbstractSink { public: - ExampleSink(AbstractRoutingEngine* engine); + ExampleSink(AbstractRoutingEngine* engine, map config); virtual PropertyList subscriptions(); virtual void supportedChanged(PropertyList supportedProperties); virtual void propertyChanged(VehicleProperty::Property property, AbstractPropertyType* value, std::string uuid); @@ -37,16 +37,10 @@ public: class ExampleSinkManager: public AbstractSinkManager { public: - ExampleSinkManager(AbstractRoutingEngine* engine) - :AbstractSinkManager(engine) + ExampleSinkManager(AbstractRoutingEngine* engine, map config) + :AbstractSinkManager(engine, config) { - - } - - void setConfiguration(map config) - { - ExampleSink* sink = new ExampleSink(routingEngine); - sink->setConfiguration(config); + new ExampleSink(routingEngine, config); } }; diff --git a/plugins/obd2plugin/obd2source.cpp b/plugins/obd2plugin/obd2source.cpp index 40e82d0..40cfcb3 100644 --- a/plugins/obd2plugin/obd2source.cpp +++ b/plugins/obd2plugin/obd2source.cpp @@ -397,7 +397,7 @@ void OBD2Source::setConfiguration(map config) requ->arg = port + ":" + baud; g_async_queue_push(commandQueue,requ); } -OBD2Source::OBD2Source(AbstractRoutingEngine *re) : AbstractSource(re) +OBD2Source::OBD2Source(AbstractRoutingEngine *re, map config) : AbstractSource(re, config) { g_timeout_add(50, updateProperties, this ); clientConnected = false; @@ -429,9 +429,9 @@ PropertyList OBD2Source::supported() { return m_supportedProperties; } -extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine, map config) { - return new OBD2Source(routingengine); + return new OBD2Source(routingengine, config); } string OBD2Source::uuid() diff --git a/plugins/obd2plugin/obd2source.h b/plugins/obd2plugin/obd2source.h index d2e12f5..9c97d35 100644 --- a/plugins/obd2plugin/obd2source.h +++ b/plugins/obd2plugin/obd2source.h @@ -53,7 +53,7 @@ class OBD2Source : public AbstractSource { public: - OBD2Source(AbstractRoutingEngine* re); + OBD2Source(AbstractRoutingEngine* re, map config); string uuid(); int portHandle; void getPropertyAsync(AsyncPropertyReply *reply); diff --git a/plugins/websocketsink/websocketsink.cpp b/plugins/websocketsink/websocketsink.cpp index ddb00db..6f02294 100644 --- a/plugins/websocketsink/websocketsink.cpp +++ b/plugins/websocketsink/websocketsink.cpp @@ -32,7 +32,7 @@ -WebSocketSink::WebSocketSink(AbstractRoutingEngine* re,libwebsocket *wsi,string uuid,VehicleProperty::Property property,std::string ambdproperty) : AbstractSink(re) +WebSocketSink::WebSocketSink(AbstractRoutingEngine* re,libwebsocket *wsi,string uuid,VehicleProperty::Property property,std::string ambdproperty) : AbstractSink(re,map ()) { m_amdbproperty = ambdproperty; m_uuid = uuid; diff --git a/plugins/websocketsink/websocketsinkmanager.cpp b/plugins/websocketsink/websocketsinkmanager.cpp index 410b8bd..f93551c 100644 --- a/plugins/websocketsink/websocketsinkmanager.cpp +++ b/plugins/websocketsink/websocketsinkmanager.cpp @@ -34,14 +34,14 @@ bool gioPollingFunc(GIOChannel *source,GIOCondition condition,gpointer data); -WebSocketSinkManager::WebSocketSinkManager(AbstractRoutingEngine* engine):AbstractSinkManager(engine) +WebSocketSinkManager::WebSocketSinkManager(AbstractRoutingEngine* engine, map config):AbstractSinkManager(engine, config) { m_engine = engine; //Create a listening socket on port 23000 on localhost. - + } void WebSocketSinkManager::init() { @@ -50,7 +50,7 @@ void WebSocketSinkManager::init() protocollist[1] = { NULL, NULL, 0 }; - + setConfiguration(configuration); } void WebSocketSinkManager::setConfiguration(map config) { @@ -212,9 +212,9 @@ void WebSocketSinkManager::addSink(libwebsocket* socket, VehicleProperty::Proper WebSocketSink *sink = new WebSocketSink(m_engine,socket,uuid,property,tmpstr); m_sinkMap[property] = sink; } -extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map config) { - sinkManager = new WebSocketSinkManager(routingengine); + sinkManager = new WebSocketSinkManager(routingengine, config); sinkManager->init(); return sinkManager; } diff --git a/plugins/websocketsink/websocketsinkmanager.h b/plugins/websocketsink/websocketsinkmanager.h index 18433ec..cf82ec4 100644 --- a/plugins/websocketsink/websocketsinkmanager.h +++ b/plugins/websocketsink/websocketsinkmanager.h @@ -31,7 +31,7 @@ class WebSocketSinkManager: public AbstractSinkManager { public: - WebSocketSinkManager(AbstractRoutingEngine* engine); + WebSocketSinkManager(AbstractRoutingEngine* engine, map config); void addSingleShotSink(libwebsocket* socket, VehicleProperty::Property property,string id); void addSink(libwebsocket* socket, VehicleProperty::Property property,string uuid); void disconnectAll(libwebsocket* socket); diff --git a/plugins/websocketsourceplugin/websocketsource.cpp b/plugins/websocketsourceplugin/websocketsource.cpp index 46363dc..b172621 100644 --- a/plugins/websocketsourceplugin/websocketsource.cpp +++ b/plugins/websocketsourceplugin/websocketsource.cpp @@ -308,7 +308,7 @@ void WebSocketSource::setSupported(PropertyList list) m_re->updateSupported(list,PropertyList()); } -WebSocketSource::WebSocketSource(AbstractRoutingEngine *re) : AbstractSource(re) +WebSocketSource::WebSocketSource(AbstractRoutingEngine *re, map config) : AbstractSource(re, config) { clientConnected = false; source = this; @@ -324,9 +324,9 @@ PropertyList WebSocketSource::supported() { return m_supportedProperties; } -extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine, map config) { - return new WebSocketSource(routingengine); + return new WebSocketSource(routingengine, config); } string WebSocketSource::uuid() diff --git a/plugins/websocketsourceplugin/websocketsource.h b/plugins/websocketsourceplugin/websocketsource.h index b7ca468..3eacd70 100644 --- a/plugins/websocketsourceplugin/websocketsource.h +++ b/plugins/websocketsourceplugin/websocketsource.h @@ -32,7 +32,7 @@ class WebSocketSource : public AbstractSource { public: - WebSocketSource(AbstractRoutingEngine* re); + WebSocketSource(AbstractRoutingEngine* re, map config); string uuid(); boost::any getProperty(VehicleProperty::Property property); void getPropertyAsync(AsyncPropertyReply *reply); diff --git a/plugins/wheel/wheelplugin.cpp b/plugins/wheel/wheelplugin.cpp index 66d6cff..a30a6a7 100644 --- a/plugins/wheel/wheelplugin.cpp +++ b/plugins/wheel/wheelplugin.cpp @@ -104,8 +104,8 @@ private: }; -WheelSourcePlugin::WheelSourcePlugin(AbstractRoutingEngine* re) -:AbstractSource(re) +WheelSourcePlugin::WheelSourcePlugin(AbstractRoutingEngine* re, map config) +:AbstractSource(re, config) { re->setSupported(supported(), this); this->mWheel = new WheelPrivate(this, re); @@ -118,9 +118,9 @@ WheelSourcePlugin::~WheelSourcePlugin() -extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine) +extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine, map config) { - return new WheelSourcePlugin(routingengine); + return new WheelSourcePlugin(routingengine, config); } string WheelSourcePlugin::uuid() @@ -211,7 +211,14 @@ clutch(false), oldClutch(false), brake(false), oldBrake(false) //FIXME: Support config file with joystick device mapping, button/axis mappings, etc. - if ((fd = open("/dev/input/js0", O_RDONLY)) < 0) { + std::string jsdev = parent->getConfiguration()["device"]; + + DebugOut(0)<<"JSDev: "< config); ~WheelSourcePlugin(); string uuid(); @@ -43,6 +43,8 @@ public: void propertyChanged(VehicleProperty::Property property, AbstractPropertyType* value, string uuid) {} void supportedChanged(PropertyList) {} + map getConfiguration() { return configuration; } + friend class WheelPrivate; private: -- 2.7.4