qtmobility/plugins/sensors/maemo6/maemo6magnetometer.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
--- a/qtmobility/plugins/sensors/maemo6/maemo6magnetometer.cpp	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/plugins/sensors/maemo6/maemo6magnetometer.cpp	Wed Jun 23 19:08:38 2010 +0300
@@ -41,37 +41,42 @@
 
 #include "maemo6magnetometer.h"
 
-const char *maemo6magnetometer::id("maemo6.magnetometer");
+char const * const maemo6magnetometer::id("maemo6.magnetometer");
 bool maemo6magnetometer::m_initDone = false;
 
 maemo6magnetometer::maemo6magnetometer(QSensor *sensor)
-    : maemo6sensorbase(sensor), m_sensor(sensor)
+    : maemo6sensorbase(sensor)
 {
-    setReading<QMagnetometerReading>(&m_reading);
+    const QString sensorName = "magnetometersensor";
+    initSensor<MagnetometerSensorChannelInterface>(sensorName, m_initDone);
 
-    if (!m_initDone) {
-        qDBusRegisterMetaType<MagneticField>();
-        initSensor<MagnetometerSensorChannelInterface>("magnetometersensor");
 
-        if (m_sensorInterface)
-            QObject::connect(static_cast<const MagnetometerSensorChannelInterface*>(m_sensorInterface), SIGNAL(dataAvailable(const MagneticField&)), this, SLOT(slotDataAvailable(const MagneticField&)));
-        else
-            qWarning() << "Unable to initialize magnetometer sensor.";
+    if (m_sensorInterface){
+        if (!(QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(const MagneticField&)),
+                               this, SLOT(slotDataAvailable(const MagneticField&)))))
+            qWarning() << "Unable to connect "<< sensorName;
+    }
+    else
+        qWarning() << "Unable to initialize "<< sensorName;
 
-        // metadata
-        addDataRate(43, 43); // 43Hz
-        sensor->setDataRate(43);
-        addOutputRange(-0.000614, 0.000614, 0.0000003); // -600 ... 600 mikroteslas, 0.3 uT resolution
-        setDescription(QLatin1String("Measures magnetic flux density measured in teslas"));
+    setReading<QMagnetometerReading>(&m_reading);
+    // metadata
+    addDataRate(1, 130); // 43 Hz
+    addOutputRange(-0.000614, 0.000614, 0.0000003); // -600 ... 600 mikroteslas, 0.3 uT resolution
+    setDescription(QLatin1String("Measures magnetic flux density in teslas"));
 
-        m_initDone = true;
-    }
+}
+
+void maemo6magnetometer::start(){
+    maemo6sensorbase::start();
+    QVariant v = sensor()->property("returnGeoValues");
+    m_isGeoMagnetometer =  v.isValid() && v.toBool()? true: false;
 }
 
 void maemo6magnetometer::slotDataAvailable(const MagneticField& data)
 {
-    QVariant v = m_sensor->property("returnGeoValues");
-    if (v.isValid() && v.toBool()) {
+
+    if (m_isGeoMagnetometer){
         m_reading.setX( 0.0000003 * data.x() );
         m_reading.setY( 0.0000003 * data.y() );
         m_reading.setZ( 0.0000003 * data.z() );