diff options
Diffstat (limited to 'src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp')
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp index 9778b95..e4afdd3 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 |