qtmobility/plugins/sensors/n900/n900proximitysensor.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/plugins/sensors/n900/n900proximitysensor.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/sensors/n900/n900proximitysensor.cpp	Mon May 03 13:18:40 2010 +0300
@@ -40,6 +40,7 @@
 ****************************************************************************/
 
 #include "n900proximitysensor.h"
+#include <QFile>
 #include <QDebug>
 #include <string.h>
 #include <time.h>
@@ -51,6 +52,20 @@
     : n900filebasedsensor(sensor)
 {
     setReading<QProximityReading>(&m_reading);
+    addDataRate(100, 100); // 100Hz
+    sensor->setDataRate(100); // default is 10Hz
+}
+
+void n900proximitysensor::start()
+{
+    if (!QFile::exists(QLatin1String(filename)))
+        goto error;
+
+    n900filebasedsensor::start();
+    return;
+
+error:
+    sensorStopped();
 }
 
 void n900proximitysensor::poll()
@@ -62,16 +77,17 @@
     fclose(fd);
     if (rs != 1) return;
 
-    QProximityReading::Proximity proximity = QProximityReading::Undefined;
+    bool close;
     if (strcmp(buffer, "closed") == 0) {
-        proximity = QProximityReading::Close;
+        close = true;
     } else {
-        proximity = QProximityReading::NotClose;
+        close = false;
     }
 
-    m_reading.setTimestamp(clock());
-    m_reading.setProximity(proximity);
-
-    newReadingAvailable();
+    if (close != m_reading.close()) {
+        m_reading.setTimestamp(clock());
+        m_reading.setClose(close);
+        newReadingAvailable();
+    }
 }