summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp')
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
index 9778b95c..e4afdd34 100644
--- a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
@@ -40,6 +40,8 @@
****************************************************************************/
#include "sensorfwmagnetometer.h"
+#include <QSensor>
+
char const * const SensorfwMagnetometer::id("sensorfw.magnetometer");
bool SensorfwMagnetometer::m_initDone = false;
@@ -53,11 +55,14 @@ SensorfwMagnetometer::SensorfwMagnetometer(QSensor *sensor)
setDescription(QLatin1String("magnetic flux density in teslas (T)"));
setRanges(NANO);
setReading<QMagnetometerReading>(&m_reading);
+ sensor->setDataRate(50);//set a default rate
}
void SensorfwMagnetometer::start()
{
- m_isGeoMagnetometer = sensor()->returnGeoValues();
+ QMagnetometer *const magnetometer = qobject_cast<QMagnetometer *>(sensor());
+ if (magnetometer)
+ m_isGeoMagnetometer = magnetometer->returnGeoValues();
SensorfwSensorBase::start();
}
@@ -67,13 +72,13 @@ void SensorfwMagnetometer::slotDataAvailable(const MagneticField& data)
m_reading.setX( NANO * (m_isGeoMagnetometer?data.x():data.rx()));
m_reading.setY( NANO * (m_isGeoMagnetometer?data.y():data.ry()));
m_reading.setZ( NANO * (m_isGeoMagnetometer?data.z():data.rz()));
- m_reading.setCalibrationLevel( m_isGeoMagnetometer?((float) data.level()) / 3.0 :1);
+ m_reading.setCalibrationLevel(m_isGeoMagnetometer?((float) data.level()) / 3.0 :1);
m_reading.setTimestamp(data.timestamp());
newReadingAvailable();
}
-void SensorfwMagnetometer::slotFrameAvailable(const QVector<MagneticField>& frame)
+void SensorfwMagnetometer::slotFrameAvailable(const QVector<MagneticField>& frame)
{
for (int i=0, l=frame.size(); i<l; i++) {
slotDataAvailable(frame.at(i));
@@ -83,8 +88,10 @@ void SensorfwMagnetometer::slotFrameAvailable(const QVector<MagneticField>& fr
bool SensorfwMagnetometer::doConnect()
{
if (m_bufferSize==1)
- return QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(const MagneticField&)), this, SLOT(slotDataAvailable(const MagneticField&)));
- return QObject::connect(m_sensorInterface, SIGNAL(frameAvailable(const QVector<MagneticField>& )),this, SLOT(slotFrameAvailable(const QVector<MagneticField>& )));
+ return QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(const MagneticField&)),
+ this, SLOT(slotDataAvailable(const MagneticField&)));
+ return QObject::connect(m_sensorInterface, SIGNAL(frameAvailable(const QVector<MagneticField>& )),
+ this, SLOT(slotFrameAvailable(const QVector<MagneticField>& )));
}
QString SensorfwMagnetometer::sensorName() const