qtmobility/src/sensors/qsensor.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/src/sensors/qsensor.h	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/sensors/qsensor.h	Mon May 03 13:18:40 2010 +0300
@@ -47,6 +47,7 @@
 #include <QByteArray>
 #include <QMetaType>
 #include <QVariant>
+#include <QPair>
 
 QTM_BEGIN_NAMESPACE
 
@@ -56,96 +57,97 @@
 class QSensorReadingPrivate;
 class QSensorFilter;
 
+#ifdef Q_QDOC
 typedef quint64 qtimestamp;
+#else
+class qtimestamp
+{
+public:
+    qtimestamp() : value() {}
+    qtimestamp(quint64 timestamp) : value(timestamp) {}
+    operator quint64() const { return value; }
+private:
+    quint64 value;
+};
+#endif
+
+typedef QPair<int,int> qrange;
+typedef QList<qrange> qrangelist;
+struct qoutputrange
+{
+    qreal minimum;
+    qreal maximum;
+    qreal accuracy;
+};
+typedef QList<qoutputrange> qoutputrangelist;
 
 class Q_SENSORS_EXPORT QSensor : public QObject
 {
     friend class QSensorBackend;
 
     Q_OBJECT
-    Q_ENUMS(UpdatePolicy)
-    Q_FLAGS(UpdatePolicies)
     Q_PROPERTY(QByteArray sensorid READ identifier WRITE setIdentifier)
-    Q_PROPERTY(QByteArray type READ type WRITE setType)
-    Q_PROPERTY(bool connected READ isConnected)
-    Q_PROPERTY(UpdatePolicies supportedUpdatePolicies READ supportedUpdatePolicies)
-    Q_PROPERTY(UpdatePolicy updatePolicy READ updatePolicy WRITE setUpdatePolicy)
-    Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval)
+    Q_PROPERTY(QByteArray type READ type)
+    Q_PROPERTY(bool connectedToBackend READ isConnectedToBackend)
+    Q_PROPERTY(QtMobility::qrangelist availableDataRates READ availableDataRates)
+    Q_PROPERTY(int dataRate READ dataRate WRITE setDataRate)
     Q_PROPERTY(QSensorReading* reading READ reading NOTIFY readingChanged)
-    Q_PROPERTY(bool running READ isActive WRITE setActive)
+    Q_PROPERTY(bool busy READ isBusy)
+    Q_PROPERTY(bool active READ isActive)
+    Q_PROPERTY(QtMobility::qoutputrangelist outputRanges READ outputRanges)
+    Q_PROPERTY(int outputRange READ outputRange WRITE setOutputRange)
+    Q_PROPERTY(QString description READ description)
+    Q_PROPERTY(int error READ error NOTIFY sensorError)
 public:
-    explicit QSensor(QObject *parent = 0);
+    explicit QSensor(const QByteArray &type, QObject *parent = 0);
     virtual ~QSensor();
 
     QByteArray identifier() const;
     void setIdentifier(const QByteArray &identifier);
 
     QByteArray type() const;
-    void setType(const QByteArray &type);
-
-    Q_INVOKABLE bool connect();
-    bool isConnected() const;
-
-    bool isActive() const;
-    void setActive(bool running);
 
-    bool isSignalEnabled() const;
-    void setSignalEnabled(bool enabled);
+    Q_INVOKABLE bool connectToBackend();
+    bool isConnectedToBackend() const;
 
-    enum UpdatePolicy {
-        Undefined         = 0x00, // If the sensor has no specific policy
-
-        // Used by irregularly updating sensors
-        OnChangeUpdates   = 0x01,
+    bool isBusy() const;
+    bool isActive() const;
 
-        // Used by continuously updating sensors
-        OccasionalUpdates = 0x02,
-        InfrequentUpdates = 0x04,
-        FrequentUpdates   = 0x08,
-
-        // For more control
-        TimedUpdates      = 0x10, // Every x milliseconds (may not be supported by all sensors)
-        PolledUpdates     = 0x20  // As often as polled (may not be supported by all sensors)
-    };
-    Q_DECLARE_FLAGS(UpdatePolicies, UpdatePolicy)
+    qrangelist availableDataRates() const;
+    int dataRate() const;
+    void setDataRate(int rate);
 
-    // What policies does the sensor support
-    UpdatePolicies supportedUpdatePolicies() const;
+    qoutputrangelist outputRanges() const;
+    int outputRange() const;
+    void setOutputRange(int index);
 
-    // Set the desired update policy (default is defined by the sensor)
-    // Use documentation to determine the policies that the sensor
-    // supports.
-    void setUpdatePolicy(UpdatePolicy policy);
-    void setUpdateInterval(int interval);
-
-    // Retrieve the policy
-    UpdatePolicy updatePolicy() const;
-    int updateInterval() const;
+    QString description() const;
+    int error() const;
 
     // Filters modify the reading
     void addFilter(QSensorFilter *filter);
     void removeFilter(QSensorFilter *filter);
 
-    // Poll for sensor change (only if using PolledUpdates)
-    void poll();
-
     // The readings are exposed via this object
     QSensorReading *reading() const;
 
     // Information about available sensors
+    // These functions are implemented in qsensormanager.cpp
     static QList<QByteArray> sensorTypes();
     static QList<QByteArray> sensorsForType(const QByteArray &type);
     static QByteArray defaultSensorForType(const QByteArray &type);
 
 public Q_SLOTS:
     // Start receiving values from the sensor
-    void start();
+    bool start();
 
     // Stop receiving values from the sensor
     void stop();
 
 Q_SIGNALS:
+    void busyChanged();
     void readingChanged();
+    void sensorError(int error);
 
 protected:
     // called by the back end
@@ -156,8 +158,6 @@
     Q_DISABLE_COPY(QSensor)
 };
 
-Q_DECLARE_OPERATORS_FOR_FLAGS(QSensor::UpdatePolicies)
-
 class Q_SENSORS_EXPORT QSensorFilter
 {
     friend class QSensor;
@@ -185,8 +185,7 @@
     // Access properties of sub-classes by numeric index
     // For name-based access use QObject::property()
     int valueCount() const;
-    // default impl is slow but sub-classes can make faster implementations
-    virtual QVariant value(int index) const;
+    QVariant value(int index) const;
 
 protected:
     explicit QSensorReading(QObject *parent, QSensorReadingPrivate *d);
@@ -249,6 +248,9 @@
 QTM_END_NAMESPACE
 
 Q_DECLARE_METATYPE(QtMobility::qtimestamp)
+Q_DECLARE_METATYPE(QtMobility::qrange)
+Q_DECLARE_METATYPE(QtMobility::qrangelist)
+Q_DECLARE_METATYPE(QtMobility::qoutputrangelist)
 
 #endif