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 } |