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; }
void testsensorimpl::start() { QVariant _exclusive = sensor()->property("exclusive"); bool exclusive = _exclusive.isValid()?_exclusive.toBool():false; if (exclusive) { if (!exclusiveHandle) { exclusiveHandle = this; } else { // Hook up the busyChanged signal connect(exclusiveHandle, SIGNAL(emitBusyChanged()), sensor(), SIGNAL(busyChanged())); sensorBusy(); // report the busy condition return; } } QString doThis = sensor()->property("doThis").toString(); if (doThis == "stop") sensorStopped(); else if (doThis == "error") sensorError(1); else if (doThis == "setOne") { m_reading.setTimestamp(1); m_reading.setTest(1); newReadingAvailable(); } else { m_reading.setTimestamp(2); m_reading.setTest(2); newReadingAvailable(); } }
void genericalssensor::start() { lightSensor->setDataRate(sensor()->dataRate()); lightSensor->start(); if (!lightSensor->isActive()) sensorStopped(); if (lightSensor->isBusy()) sensorBusy(); }
void GenericTiltSensor::start() { accelerometer->setDataRate(sensor()->dataRate()); accelerometer->setAlwaysOn(sensor()->isAlwaysOn()); accelerometer->start(); if (!accelerometer->isActive()) sensorStopped(); if (accelerometer->isBusy()) sensorBusy(); }
void n900lightsensor::start() { if (!QFile::exists(QLatin1String(filename))) goto error; n900filebasedsensor::start(); return; error: sensorStopped(); }
void SensorfwSensorBase::start() { if (m_sensorInterface) { // dataRate QByteArray type = sensor()->type(); if (type != QTapSensor::type && type != QProximitySensor::type) { int dataRate = sensor()->dataRate(); int interval = dataRate > 0 ? 1000 / dataRate : 0; // for testing maximum speed //interval = 1; //dataRate = 1000; m_sensorInterface->setInterval(interval); } // outputRange int currentRange = sensor()->outputRange(); int l = sensor()->outputRanges().size(); if (l > 1) { if (currentRange != m_prevOutputRange) { //#ifdef Q_WS_MAEMO_6 bool isOk = m_sensorInterface->setDataRangeIndex(currentRange); //NOTE THAT THE CHANGE MIGHT NOT SUCCEED, FIRST COME FIRST SERVED if (!isOk) sensorError(KErrInUse); else m_prevOutputRange = currentRange; //#else // // TODO: remove when sensord integrated, in sensorfw env there is a delay // qoutputrange range = sensor()->outputRanges().at(currentRange); // qreal correction = 1/correctionFactor(); // DataRange range1(range.minimum*correction, range.maximum*correction, range.accuracy*correction); // m_sensorInterface->requestDataRange(range1); // m_prevOutputRange = currentRange; //#endif } } // always on bool alwaysOn = sensor()->isAlwaysOn(); m_sensorInterface->setStandbyOverride(alwaysOn); // connects after buffering checks doConnectAfterCheck(); int returnCode = m_sensorInterface->start().error().type(); if (returnCode == 0) { running = true; return; } qWarning() << "m_sensorInterface did not start, error code:" << returnCode; } sensorStopped(); }