summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/sensors/simulator/main.cpp40
-rw-r--r--src/plugins/sensors/simulator/simulatorcommon.cpp5
-rw-r--r--src/plugins/sensors/simulator/simulatorcommon.h3
3 files changed, 47 insertions, 1 deletions
diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp
index dda7269c..1e404086 100644
--- a/src/plugins/sensors/simulator/main.cpp
+++ b/src/plugins/sensors/simulator/main.cpp
@@ -56,6 +56,13 @@ class SimulatorSensorPlugin : public QObject, public QSensorPluginInterface, pub
Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
+ SimulatorSensorPlugin()
+ {
+ SensorsConnection *connection = SensorsConnection::instance();
+ if (!connection) return; // hardly likely but just in case...
+ connect(connection, SIGNAL(setAvailableFeatures(quint32)), this, SLOT(setAvailableFeatures(quint32)));
+ }
+
void registerSensors()
{
QSensorManager::registerBackend(QAccelerometer::type, SimulatorAccelerometer::id, this);
@@ -99,6 +106,39 @@ public:
return 0;
}
+
+ // Copied from the emulator codebase
+ enum Features {
+ Accelerometer = 0x01,
+ Magnetometer = 0x02,
+ Compass = 0x04,
+ Infraredsensor = 0x08,
+ Lightsensor = 0x10
+ };
+
+public slots:
+ void setAvailableFeatures(quint32 features)
+ {
+ check(features&Accelerometer, QAccelerometer::type, SimulatorAccelerometer::id);
+ check(features&Lightsensor, QLightSensor::type, SimulatorLightSensor::id);
+ check(features&Lightsensor, QAmbientLightSensor::type, SimulatorAmbientLightSensor::id);
+ check(features&Magnetometer, QMagnetometer::type, SimulatorMagnetometer::id);
+ check(features&Compass, QCompass::type, SimulatorCompass::id);
+ check(features&Infraredsensor, QIRProximitySensor::type, SimulatorIRProximitySensor::id);
+ check(features&Infraredsensor, QProximitySensor::type, SimulatorProximitySensor::id);
+ }
+
+private:
+ void check(bool test, const QByteArray &type, const QByteArray &id)
+ {
+ if (test) {
+ if (!QSensorManager::isBackendRegistered(type, id))
+ QSensorManager::registerBackend(type, id, this);
+ } else {
+ if (QSensorManager::isBackendRegistered(type, id))
+ QSensorManager::unregisterBackend(type, id);
+ }
+ }
};
#include "main.moc"
diff --git a/src/plugins/sensors/simulator/simulatorcommon.cpp b/src/plugins/sensors/simulator/simulatorcommon.cpp
index f07cc468..cec02181 100644
--- a/src/plugins/sensors/simulator/simulatorcommon.cpp
+++ b/src/plugins/sensors/simulator/simulatorcommon.cpp
@@ -80,8 +80,9 @@ public:
signals:
void queueConnectToServer();
- void connectionFailed();
void initialSensorsDataSent();
+ void connectionFailed();
+ void setAvailableFeatures(quint32 features);
void setAmbientLightData(const QtMobility::QAmbientLightReadingData &);
void setLightData(const QtMobility::QLightReadingData &);
void setAccelerometerData(const QtMobility::QAccelerometerReadingData &);
@@ -121,6 +122,8 @@ SensorsConnection::SensorsConnection(QObject *parent)
this, SLOT(initialSensorsDataSent()));
connect(mConnection, SIGNAL(connectionFailed()),
this, SLOT(slotConnectionFailed()));
+ connect(mConnection, SIGNAL(setAvailableFeatures(quint32)),
+ this, SIGNAL(setAvailableFeatures(quint32)));
connect(mConnection, SIGNAL(setAmbientLightData(QtMobility::QAmbientLightReadingData)),
this, SLOT(setAmbientLightData(QtMobility::QAmbientLightReadingData)));
connect(mConnection, SIGNAL(setLightData(QtMobility::QLightReadingData)),
diff --git a/src/plugins/sensors/simulator/simulatorcommon.h b/src/plugins/sensors/simulator/simulatorcommon.h
index 7890d6bb..96ef69a6 100644
--- a/src/plugins/sensors/simulator/simulatorcommon.h
+++ b/src/plugins/sensors/simulator/simulatorcommon.h
@@ -60,6 +60,9 @@ public:
bool safe() const { return mInitialDataSent; }
bool connectionFailed() const { return mConnectionFailed; }
+signals:
+ void setAvailableFeatures(quint32 features);
+
public slots:
void setAmbientLightData(const QtMobility::QAmbientLightReadingData &);
void setLightData(const QtMobility::QLightReadingData &);