qtmobility/plugins/sensors/maemo6/maemo6sensorbase.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
--- a/qtmobility/plugins/sensors/maemo6/maemo6sensorbase.cpp	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/plugins/sensors/maemo6/maemo6sensorbase.cpp	Wed Jun 23 19:08:38 2010 +0300
@@ -41,12 +41,15 @@
 
 #include "maemo6sensorbase.h"
 
+
 SensorManagerInterface* maemo6sensorbase::m_remoteSensorManager = 0;
+
+
 const float maemo6sensorbase::GRAVITY_EARTH = 9.80665;
 const float maemo6sensorbase::GRAVITY_EARTH_THOUSANDTH = 0.00980665;
 
 maemo6sensorbase::maemo6sensorbase(QSensor *sensor)
-    : QSensorBackend(sensor), m_sensorRunning(false)
+    : QSensorBackend(sensor), m_sensorInterface(0)
 {
     if (!m_remoteSensorManager)
         m_remoteSensorManager = &SensorManagerInterface::instance();
@@ -54,7 +57,7 @@
 
 maemo6sensorbase::~maemo6sensorbase()
 {
-   if (m_sensorInterface) {
+    if (m_sensorInterface) {
         stop();
         QObject::disconnect(m_sensorInterface);
         delete m_sensorInterface, m_sensorInterface = 0;
@@ -63,30 +66,28 @@
 
 void maemo6sensorbase::start()
 {
-    if (m_sensorRunning)
-        return;
+
     if (m_sensorInterface) {
         int dataRate = sensor()->dataRate();
-        int interval = 1000 / dataRate;
-        // for testing max speed
-        //interval = 1;
-        //dataRate = 1000;
         if (dataRate > 0) {
+            int interval = 1000 / dataRate;
+            // for testing maximum speed
+            //interval = 1;
+            //dataRate = 1000;
             qDebug() << "Setting data rate" << dataRate << "Hz (interval" << interval << "ms) for" << m_sensorInterface->id();
             m_sensorInterface->setInterval(interval);
         } else {
-            qDebug() << "Sensor data rate" << dataRate << "Hz";
+            qDebug() << "Data rate in don't care mode (interval" << m_sensorInterface->interval() << "ms) for" << m_sensorInterface->id();
         }
-        m_sensorInterface->start();
+        int returnCode = m_sensorInterface->start().error().type();
+        if (returnCode==0) return;
+        qWarning()<<"m_sensorInterface did not start, error code:"<<returnCode;
     }
-    m_sensorRunning = true;
+    sensorStopped();
 }
 
 void maemo6sensorbase::stop()
 {
-    if (!m_sensorRunning)
-        return;
     if (m_sensorInterface)
         m_sensorInterface->stop();
-    m_sensorRunning = false;
 }