void CSensorBackendSym::GetDataRate() { TSensrvProperty datarate_prop; TInt err; TRAP(err, iBackendData.iSensorChannel->GetPropertyL(KSensrvPropIdDataRate, KSensrvItemIndexNone, datarate_prop)); if(err == KErrNone) { if(datarate_prop.GetArrayIndex() == ESensrvSingleProperty) { TReal min, max, value; if(datarate_prop.PropertyType() == ESensrvIntProperty) { TInt intMin, intMax, intValue; datarate_prop.GetMinValue(intMin); datarate_prop.GetMaxValue(intMax); datarate_prop.GetValue(intValue); min = intMin; max = intMax; value = intValue; } else if(datarate_prop.PropertyType() == ESensrvRealProperty) { datarate_prop.GetMinValue(min); datarate_prop.GetMaxValue(max); datarate_prop.GetValue(value); } //Set datarate as range addDataRate(min, max); } //if list has more than one item, data rate will be having descrete values, agreed with DS team else if(datarate_prop.GetArrayIndex() == ESensrvArrayPropertyInfo) { TReal datarate; TInt min, max, index; datarate_prop.GetMinValue(min); datarate_prop.GetMaxValue(max); datarate_prop.GetValue(index); for(int i=min; i<=max; i++) { TRAP(err, iBackendData.iSensorChannel->GetPropertyL(KSensrvPropIdDataRate, KSensrvItemIndexNone, i, datarate_prop)); if(err == KErrNone) { if(datarate_prop.PropertyType() == ESensrvIntProperty) { TInt intDatarate; datarate_prop.GetValue(intDatarate); datarate = intDatarate; } else if(datarate_prop.PropertyType() == ESensrvRealProperty) { datarate_prop.GetValue(datarate); } addDataRate(datarate, datarate); } } } } }
meegogyroscope::meegogyroscope(QSensor *sensor) : meegosensorbase(sensor) { initSensor<GyroscopeSensorChannelInterface>(m_initDone); setDescription(QLatin1String("angular velocities around x, y, and z axis in degrees per second")); setRanges(MILLI); setReading<QGyroscopeReading>(&m_reading); addDataRate(10, 10); addDataRate(50, 50); }
AndroidAccelerometerSensorBackend::AndroidAccelerometerSensorBackend(QSensor *sensor,int uniqueId ,QtSensorJNI::AndroidSensorType sensorType) : AndroidSensorBackend(sensor,uniqueId,sensorType) { setReading<QAccelerometerReading>(&m_reading); addDataRate(0,3); }
QS60SensorApiAccelerometer::QS60SensorApiAccelerometer(QSensor *sensor) : QSensorBackend(sensor) , m_nativeSensor(NULL) , m_sampleFactor(0.0f) { TRAPD(err, findAndCreateNativeSensorL()); if(err != KErrNone) { sensorStopped(); sensorError(err); } setReading<QAccelerometerReading>(&m_reading); // http://www.st.com/stonline/products/literature/ds/12726/lis302dl.pdf // That 3D accelerometer inside N95 , N93i or N82 is from STMicroelectronics (type LIS302DL). // http://wiki.forum.nokia.com/index.php/Nokia_Sensor_APIs. // Sensor is set to 100Hz 2G mode and no public interface to switch it to 8G // 2G - mode addDataRate(100, 100); addOutputRange(-22.418, 22.418, 0.17651); setDescription(QLatin1String("lis302dl")); //Synbian interface gives values between -680 - 680 m_sampleFactor = this->sensor()->outputRanges()[0].maximum / 680.0f; }
mocktapsensor::mocktapsensor(QSensor *sensor) : mockcommon(sensor) { setReading<QTapReading>(&m_reading); addDataRate(50, 50); // 50Hz connect(mockcommonPrv(),SIGNAL(tapData(QString)),this,SLOT(parseTapData(QString))); }
mockproximitysensor::mockproximitysensor(QSensor *sensor) : mockcommon(sensor) { setReading<QProximityReading>(&m_reading); addDataRate(50, 50); // 50Hz connect(mockcommonPrv(),SIGNAL(proxyData(QString)),this,SLOT(parseProxyData(QString))); }
AndroidCompassSensorBackend::AndroidCompassSensorBackend(QSensor *sensor,int uniqueId ,QtSensorJNI::AndroidSensorType sensorType) : AndroidSensorBackend(sensor,uniqueId,sensorType) { setReading<QCompassReading>(&m_reading); addDataRate(0,3); }
mockorientationsensor::mockorientationsensor(QSensor *sensor) : mockcommon(sensor) { setReading<QOrientationReading>(&m_reading); addDataRate(50, 50); // 50Hz connect(mockcommonPrv(),SIGNAL(orientData(QString)),this,SLOT(parseOrientData(QString))); }
AndroidProximitySensorBackend::AndroidProximitySensorBackend(QSensor *sensor,int uniqueId ,QtSensorJNI::AndroidSensorType sensorType) : AndroidSensorBackend(sensor,uniqueId,sensorType) { setReading<QProximityReading>(&m_reading); addDataRate(0,3); }
mockaccelerometer::mockaccelerometer(QSensor *sensor) : mockcommon(sensor) { setReading<QAccelerometerReading>(&m_reading); addDataRate(50, 50); // 50 connect(mockcommonPrv(),SIGNAL(accelData(QString)),this,SLOT(parseAccelData(QString))); }
meegoals::meegoals(QSensor *sensor) : meegosensorbase(sensor) { initSensor<ALSSensorChannelInterface>(m_initDone); setReading<QAmbientLightReading>(&m_reading); // metadata setDescription(QLatin1String("ambient light intensity given as 5 pre-defined levels")); addOutputRange(0, 5, 1); addDataRate(10,10); }
meegoirproximitysensor::meegoirproximitysensor(QSensor *sensor) : meegosensorbase(sensor) { initSensor<ProximitySensorChannelInterface>(m_initDone); setReading<QIRProximityReading>(&m_reading); setDescription(QLatin1String("reflectance as percentage (%) of maximum")); addOutputRange(0, 100, 1); addDataRate(10,10); rangeMax = QFile::exists(RM680_PS)?255:1023; }
SensorfwProximitySensor::SensorfwProximitySensor(QSensor *sensor) : SensorfwSensorBase(sensor), m_exClose(false) , m_initDone(0) { init(); setReading<QProximityReading>(&m_reading); addDataRate(10,10); //TODO: fix this when we know better sensor->setDataRate(10);//set a default rate }
SensorfwTapSensor::SensorfwTapSensor(QSensor *sensor) : SensorfwSensorBase(sensor), m_initDone(false), m_isOnceStarted(false) { init(); setReading<QTapReading>(&m_reading); addOutputRange(QTapReading::Undefined, QTapReading::Z_Both, 1); addDataRate(10,10); //TODO: fix this when we know better sensor->setDataRate(10);//set a default rate }
n900lightsensor::n900lightsensor(QSensor *sensor) : n900filebasedsensor(sensor) { setReading<QLightReading>(&m_reading); // Sensor takes 12-400ms to complete one reading and is triggered by // a read of the /sys file (no interrupt/timing loop/etc. is used). addDataRate(1, 2); setDescription(QLatin1String("tsl2563")); sensor->setProperty("fieldOfView", 1); // very narrow field of view. }
n900accelerometer::n900accelerometer(QSensor *sensor) : n900filebasedsensor(sensor) { setReading<QAccelerometerReading>(&m_reading); // According to the kernel driver, this runs at 100 or 400Hz // but we can't change the rate because we don't run as root. // The hardware seems to run at 100Hz by default so report that. // Report 1-100Hz so the app can poll less frequently if it wants to. addDataRate(1, 100); // According to the kernel driver this reports +- 2G or +- 8G (with lower accuracy) // but we can't change the range because we don't run as root. // The hardware seems to run at +- 2G by default so report that. addOutputRange(-22.418, 22.418, 0.17651); // 2G setDescription(QLatin1String("lis302dl")); }
testsensorimpl::testsensorimpl(QSensor *sensor) : QSensorBackend(sensor) { setReading<TestSensorReading>(&m_reading); setDescription("sensor description"); addOutputRange(0, 1, 0.5); addOutputRange(0, 2, 1); QString doThis = sensor->property("doThis").toString(); if (doThis == "rates(0)") { setDataRates(0); } else if (doThis == "rates(nodef)") { TestSensor *acc = new TestSensor(this); setDataRates(acc); delete acc; } else if (doThis == "rates") { TestSensor *acc = new TestSensor(this); acc->connectToBackend(); setDataRates(acc); delete acc; } else { addDataRate(100, 100); } reading(); }
dummylightsensor::dummylightsensor(QSensor *sensor) : dummycommon(sensor) { setReading<QAmbientLightReading>(&m_reading); addDataRate(100,100); }
bool SensorfwSensorBase::initSensorInterface(QString const &name) { if (!m_sensorInterface) { sensorError(KErrNotFound); return false; } //metadata const QList<DataRange> intervals = m_sensorInterface->getAvailableIntervals(); for (int i = 0, l = intervals.size(); i < l; i++) { qreal intervalMax = intervals.at(i).max; qreal intervalMin = intervals.at(i).min; if (intervalMin == 0 && intervalMax == 0) { // 0 interval has different meanings in e.g. magge/acce // magge -> best-effort // acce -> lowest possible // in Qt API setting 0 means default continue; } qreal rateMin = intervalMax < 1 ? 1 : 1 / intervalMax * 1000; rateMin = rateMin < 1 ? 1 : rateMin; intervalMin = intervalMin < 1 ? 10: intervalMin; // do not divide with 0 qreal rateMax = 1 / intervalMin * 1000; addDataRate(rateMin, rateMax); } //bufferSizes if (m_bufferingSensors.contains(sensor()->identifier())) { IntegerRangeList sizes = m_sensorInterface->getAvailableBufferSizes(); for (int i = 0; i < sizes.size(); i++) { int second = sizes.at(i).second; m_maxBufferSize = second > m_bufferSize ? second : m_maxBufferSize; } m_maxBufferSize = m_maxBufferSize < 0 ? 1 : m_maxBufferSize; //SensorFW guarantees to provide the most efficient size first //TODO: remove from comments //m_efficientBufferSize = m_sensorInterface->hwBuffering()? (l>0?sizes.at(0).first:1) : 1; } else { m_maxBufferSize = 1; } sensor()->setMaxBufferSize(m_maxBufferSize); sensor()->setEfficientBufferSize(m_efficientBufferSize); // TODO deztructor: Leaking abstraction detected. Just copied code // from initSensor<>() here, need to QByteArray type = sensor()->type(); if ((type == QAmbientLightSensor::type) // SensorFW returns lux values, plugin enumerated values || (type == QIRProximitySensor::type) // SensorFW returns raw reflectance values, plugin % of max reflectance || (name == "accelerometersensor") // SensorFW returns milliGs, plugin m/s^2 || (name == "magnetometersensor") // SensorFW returns nanoTeslas, plugin Teslas || (name == "gyroscopesensor")) // SensorFW returns DSPs, plugin milliDSPs return true; setDescription(m_sensorInterface->description()); if (name == "tapsensor") return true; setRanges(); return true; }
dummyaccelerometer::dummyaccelerometer(QSensor *sensor) : dummycommon(sensor) { setReading<QAccelerometerReading>(&m_reading); addDataRate(100, 100); // 100Hz }
AndroidAmbientLightSensorBackend::AndroidAmbientLightSensorBackend(QSensor *sensor,int uniqueId,QtSensorJNI::AndroidSensorType sensorType) : AndroidSensorBackend(sensor,uniqueId,sensorType) { setReading<QAmbientLightReading>(&m_reading); addDataRate(0,3); }