plugins/sensors/maemo6/maemo6magnetometer.cpp
changeset 5 603d3f8b6302
parent 0 876b1a06bc25
equal deleted inserted replaced
3:e4ebb16b39ea 5:603d3f8b6302
    41 
    41 
    42 #include "maemo6magnetometer.h"
    42 #include "maemo6magnetometer.h"
    43 
    43 
    44 char const * const maemo6magnetometer::id("maemo6.magnetometer");
    44 char const * const maemo6magnetometer::id("maemo6.magnetometer");
    45 bool maemo6magnetometer::m_initDone = false;
    45 bool maemo6magnetometer::m_initDone = false;
       
    46 const float maemo6magnetometer::NANO = 0.000000001;
       
    47 
    46 
    48 
    47 maemo6magnetometer::maemo6magnetometer(QSensor *sensor)
    49 maemo6magnetometer::maemo6magnetometer(QSensor *sensor)
    48     : maemo6sensorbase(sensor)
    50     : maemo6sensorbase(sensor)
    49 {
    51 {
    50     const QString sensorName = "magnetometersensor";
    52     const QString sensorName = "magnetometersensor";
    51     initSensor<MagnetometerSensorChannelInterface>(sensorName, m_initDone);
    53     initSensor<MagnetometerSensorChannelInterface>(sensorName, m_initDone);
    52 
    54 
       
    55     setRanges(NANO);
    53 
    56 
    54     if (m_sensorInterface){
    57     if (m_sensorInterface){
    55         if (!(QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(const MagneticField&)),
    58         if (!(QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(const MagneticField&)),
    56                                this, SLOT(slotDataAvailable(const MagneticField&)))))
    59                                this, SLOT(slotDataAvailable(const MagneticField&)))))
    57             qWarning() << "Unable to connect "<< sensorName;
    60             qWarning() << "Unable to connect "<< sensorName;
    70 }
    73 }
    71 
    74 
    72 void maemo6magnetometer::slotDataAvailable(const MagneticField& data)
    75 void maemo6magnetometer::slotDataAvailable(const MagneticField& data)
    73 {
    76 {
    74 
    77 
    75     if (m_isGeoMagnetometer){
    78     //nanoTeslas given, divide with 10^9 to get Teslas
    76         m_reading.setX( 0.0000003 * data.x() );
    79     m_reading.setX( NANO * m_isGeoMagnetometer?data.x():data.rx());
    77         m_reading.setY( 0.0000003 * data.y() );
    80     m_reading.setY( NANO * m_isGeoMagnetometer?data.y():data.ry());
    78         m_reading.setZ( 0.0000003 * data.z() );
    81     m_reading.setZ( NANO * m_isGeoMagnetometer?data.z():data.rz());
    79         m_reading.setCalibrationLevel( ((float) data.level()) / 3.0 );
    82     m_reading.setCalibrationLevel( m_isGeoMagnetometer?((float) data.level()) / 3.0 :1);
    80     } else {
    83 
    81         m_reading.setX( 0.0000003 * data.rx() );
    84 
    82         m_reading.setY( 0.0000003 * data.ry() );
       
    83         m_reading.setZ( 0.0000003 * data.rz() );
       
    84         m_reading.setCalibrationLevel(1);
       
    85     }
       
    86     m_reading.setTimestamp(data.timestamp());
    85     m_reading.setTimestamp(data.timestamp());
    87     newReadingAvailable();
    86     newReadingAvailable();
    88 }
    87 }