Source

Target

Commits (2)
Showing with 38 additions and 20 deletions
TARGET = qtsensors_sensorfw
QT = core sensors network
QT = core sensors network dbus
PLUGIN_TYPE = sensors
load(qt_plugin)
......
......@@ -51,6 +51,7 @@ sensorfwaccelerometer::sensorfwaccelerometer(QSensor *sensor)
setDescription(QLatin1String("x, y, and z axes accelerations in m/s^2"));
setRanges(GRAVITY_EARTH_THOUSANDTH);
setReading<QAccelerometerReading>(&m_reading);
sensor->setDataRate(50);//set a default rate
}
void sensorfwaccelerometer::slotDataAvailable(const XYZ& data)
......
......@@ -54,6 +54,7 @@ Sensorfwals::Sensorfwals(QSensor *sensor)
setDescription(QLatin1String("ambient light intensity given as 5 pre-defined levels"));
addOutputRange(0, 5, 1);
addDataRate(10,10);
sensor->setDataRate(10);//set a default rate
}
void Sensorfwals::start()
......
......@@ -46,7 +46,6 @@
#include <qambientlightsensor.h>
#include <alssensor_i.h>
#include <unsigned.h>
......
......@@ -50,6 +50,7 @@ SensorfwCompass::SensorfwCompass(QSensor *sensor)
{
initSensor<CompassSensorChannelInterface>(m_initDone);
setReading<QCompassReading>(&m_reading);
sensor->setDataRate(50);//set a default rate
}
void SensorfwCompass::slotDataAvailable(const Compass& data)
......
......@@ -45,7 +45,7 @@
#include <qcompass.h>
#include <compasssensor_i.h>
#include <compass.h>
#include <datatypes/compass.h>
......
......@@ -54,6 +54,7 @@ SensorfwGyroscope::SensorfwGyroscope(QSensor *sensor)
setReading<QGyroscopeReading>(&m_reading);
addDataRate(10, 10);
addDataRate(50, 50);
sensor->setDataRate(50);//set a default rate
}
void SensorfwGyroscope::slotDataAvailable(const XYZ& data)
......
......@@ -56,6 +56,7 @@ SensorfwIrProximitySensor::SensorfwIrProximitySensor(QSensor *sensor)
addOutputRange(0, 100, 1);
addDataRate(10,10);
rangeMax = QFile::exists(RM680_PS)?255:1023;
sensor->setDataRate(10);//set a default rate
}
void SensorfwIrProximitySensor::slotDataAvailable(const Proximity& proximity)
......
......@@ -49,6 +49,7 @@ SensorfwLightSensor::SensorfwLightSensor(QSensor *sensor)
{
initSensor<ALSSensorChannelInterface>(m_initDone);
setReading<QLightReading>(&m_reading);
sensor->setDataRate(10);//set a default rate
}
void SensorfwLightSensor::slotDataAvailable(const Unsigned& data)
......
......@@ -47,8 +47,6 @@
#include <qlightsensor.h>
#include <alssensor_i.h>
#include <unsigned.h>
class SensorfwLightSensor : public SensorfwSensorBase
......
......@@ -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
......
......@@ -46,7 +46,7 @@
#include <qmagnetometer.h>
#include <magnetometersensor_i.h>
#include <magneticfield.h>
#include <datatypes/magneticfield.h>
......
......@@ -41,7 +41,7 @@
#include "sensorfworientationsensor.h"
#include <posedata.h>
#include <datatypes/posedata.h>
char const * const SensorfwOrientationSensor::id("sensorfw.orientationsensor");
bool SensorfwOrientationSensor::m_initDone = false;
......@@ -51,6 +51,7 @@ SensorfwOrientationSensor::SensorfwOrientationSensor(QSensor *sensor)
{
initSensor<OrientationSensorChannelInterface>(m_initDone);
setReading<QOrientationReading>(&m_reading);
sensor->setDataRate(10);//set a default rate
}
......
......@@ -46,7 +46,6 @@
#include <qorientationsensor.h>
#include <orientationsensor_i.h>
#include <unsigned.h>
......
......@@ -50,6 +50,7 @@ SensorfwProximitySensor::SensorfwProximitySensor(QSensor *sensor)
initSensor<ProximitySensorChannelInterface>(m_initDone);
setReading<QProximityReading>(&m_reading);
addDataRate(10,10); //TODO: fix this when we know better
sensor->setDataRate(10);//set a default rate
}
void SensorfwProximitySensor::start()
......
......@@ -46,7 +46,6 @@
#include <qproximitysensor.h>
#include <proximitysensor_i.h>
#include <unsigned.h>
......
......@@ -49,7 +49,10 @@ SensorfwRotationSensor::SensorfwRotationSensor(QSensor *sensor)
{
initSensor<RotationSensorChannelInterface>(m_initDone);
setReading<QRotationReading>(&m_reading);
sensor()->setHasZ(true);
QRotationSensor *const rotationSensor = qobject_cast<QRotationSensor *>(sensor);
if (rotationSensor)
rotationSensor->setHasZ(true);
sensor->setDataRate(20);//set a default rate
}
void SensorfwRotationSensor::slotDataAvailable(const XYZ& data)
......
......@@ -47,7 +47,7 @@
#include <qrotationsensor.h>
#include <rotationsensor_i.h>
#include <xyz.h>
#include <datatypes/xyz.h>
......
......@@ -73,7 +73,7 @@ void SensorfwSensorBase::start()
if (m_sensorInterface) {
// dataRate
QByteArray type = sensor()->type();
if (type != QTapSensor::type() && type != QProximitySensor::type()) {
if (type != QTapSensor::type && type != QProximitySensor::type) {
int dataRate = sensor()->dataRate();
int interval = dataRate > 0 ? 1000 / dataRate : 0;
// for testing maximum speed
......
......@@ -47,6 +47,11 @@
#include <sensormanagerinterface.h>
#include <abstractsensor_i.h>
#include <QAmbientLightSensor>
#include <QIRProximitySensor>
#include <QTapSensor>
#include <QProximitySensor>
class SensorfwSensorBase : public QSensorBackend
{
public:
......@@ -137,11 +142,11 @@ protected:
m_maxBufferSize = 1;
sensor()->setMaxBufferSize(m_maxBufferSize);
sensor()->efficientBufferSize(m_efficientBufferSize);
sensor()->setEfficientBufferSize(m_efficientBufferSize);
QByteArray type = sensor()->type();
if (type == QAmbientLightSensor::type()) return; // SensorFW returns lux values, plugin enumerated values
if (type == QIRProximitySensor::type()) return; // SensorFW returns raw reflectance values, plugin % of max reflectance
if (type == QAmbientLightSensor::type) return; // SensorFW returns lux values, plugin enumerated values
if (type == QIRProximitySensor::type) return; // SensorFW returns raw reflectance values, plugin % of max reflectance
if (name == "accelerometersensor") return; // SensorFW returns milliGs, plugin m/s^2
if (name == "magnetometersensor") return; // SensorFW returns nanoTeslas, plugin Teslas
if (name == "gyroscopesensor") return; // SensorFW returns DSPs, plugin milliDSPs
......