javaextensions/sensor/src/sensorconnection.h
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/sensor/src/sensorconnection.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Interface for Sensor
+*
+*/
+
+#ifndef SENSORCONNECTION_H
+#define SENSORCONNECTION_H
+
+// EXTERNAL INCLUDES
+
+// INTERNAL INCLUDES
+#include "sensor.h"
+#include "sensorlistener.h"
+
+// DATA STRUCTURES
+struct DataFillerParams
+{
+    DataFillerParams():
+            iDatas(0),
+            iIsDataLost(false),
+            iDataCount(0),
+            iDataObjects(0),
+            iJavaPeer(0),
+            iJniEnv(0)
+    { };
+    SensorData** iDatas;
+    bool iIsDataLost;
+    int iDataCount;
+    void* iDataObjects;
+    void* iJavaPeer;
+    void* iJniEnv;
+};
+
+typedef void (*ConditionMetCB)(void*, void*, void*, int, double, long);
+typedef void (*DataReceivedCB)(DataFillerParams*);
+
+// CLASS DESCRIPTION
+/**
+ * Interface for Sensor
+ * Used for controlling sensors
+ *
+ * @lib N/A
+ * @since S60 3.2
+ */
+class SensorConnection : public SensorListener
+{
+public: // Constructor and Destructor
+    /**
+     * Destructor
+     */
+    ~SensorConnection();
+
+    /**
+     * Constructor
+     * @param aSensor, Sensor assosiated with this connection
+     */
+    SensorConnection(Sensor* sensor);
+
+public: // From SensorListener
+    void DataReceived(SensorData** aData, bool aIsDataLost);
+
+    void ConditionMet(void* aHandle, int aChannelId,
+                      double aValue, long aTimeStamp);
+
+public: // New methods
+    /**
+     * Returns pointer to actual sensor implementation
+     */
+    Sensor* GetSensor();
+
+    /**
+     * Returns assigned java peer object
+     */
+    void* GetJavaPeer()
+    {
+        return iJavaPeer;
+    };
+
+    /**
+     * Sets java peer objet
+     * @param aJavaPeer, peer object to set
+     */
+    void SetJavaPeer(void* aJavaPeer)
+    {
+        iJavaPeer = aJavaPeer;
+    };
+
+    /**
+     * Store jni env
+     */
+    void SetJni(void* aJni)
+    {
+        iJniEnv = aJni;
+    };
+
+    /**
+     * Sets callback methods
+     * @param aDataReceived
+     * @param aConditionMet
+     */
+    void SetCallbacks(DataReceivedCB aDataReceived,
+                      ConditionMetCB aConditionMet)
+    {
+        iDataReceived = aDataReceived;
+        iConditionMet = aConditionMet;
+    }
+    /**
+     * Prepare for data listening
+     * Creates sensor datas etc when needed
+     * @return error code or 0 if no error
+     */
+    int PrepareDataListening(void* aNewDataObjects,
+                             int aDataCount,
+                             void*& aOldDataObject,
+                             int aDataType);
+
+    /**
+     * Starts data listening
+     */
+    int StartDataListening(int aBufferSize,
+                           long aBufferingPeriod,
+                           bool aTimestampsIncluded,
+                           bool aValiditiesIncluded,
+                           bool aIsOneShot);
+
+    /**
+     * Returns stored dataobjects
+     */
+    void* DataObjects();
+
+private: // New methods
+
+    // Allocates new data object
+    SensorData** AllocateData(int aBufferSize,
+                              int aDataType);
+
+    // deletes data filler params and corresponding
+    void ClearData(SensorData** aDatas, int aCount);
+
+private: // Data
+    // Sensor, owned
+    Sensor* iSensor;
+
+    // Data filling parameters, owned
+    DataFillerParams* iParams;
+
+    // JNIEnv, not owned
+    void* iJniEnv;
+
+    // Java side peer object, not owned
+    void* iJavaPeer;
+
+    // Callback methods
+    DataReceivedCB iDataReceived;
+    ConditionMetCB iConditionMet;
+
+    int iBufferSize;
+    bool iTimeStamps;
+    bool iValidities;
+};
+
+#endif // SENSORCONNECTION_H
+
+// End of file