diff -r 06b8e2af4411 -r 6fbed849b4f4 qtmobility/plugins/sensors/maemo6/maemo6magnetometer.cpp --- 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(&m_reading); + const QString sensorName = "magnetometersensor"; + initSensor(sensorName, m_initDone); - if (!m_initDone) { - qDBusRegisterMetaType(); - initSensor("magnetometersensor"); - if (m_sensorInterface) - QObject::connect(static_cast(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(&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() );