helpForUsers files added.
[speedfreak] / Client / accelerometer.cpp
index 0495135..4336b31 100644 (file)
@@ -3,11 +3,13 @@
  *
  * @author      Rikhard Kuutti <rikhard.kuutti@fudeco.com>
  * @author      Kai Rasilainen <kai.rasilainen@fudeco.com>
- * @author      Jukka Kurttila <jukka.kurttila@fudeco.com>
+ * @author      Jukka Kurttila <jktla@suomi24.fi>
+ * @author      Toni Jussila   <toni.jussila@fudeco.com>
  * @copyright   (c) 2010 Speed Freak team
  * @license     http://opensource.org/licenses/gpl-license.php GNU Public License
  */
 
+//#define FROM_FILE //Use this flag to read acceleration data from file, set also filename using fileReader->setFileName
 #include "accelerometer.h"
 
 #include <QDBusConnection>
 #include <QDBusPendingReply>
 
 #define kFilteringFactor 0.2
+#define kIterations      100
 
 /**
- * Default constructor for Accelerometer class
- *
- */
+  * Default constructor for Accelerometer class.
+  *
+  */
 Accelerometer::Accelerometer()
 {
     initValues();
+    calibrateDialog = NULL;
+    //fileReader = new filereader();
+    //fileReader->setFileName("45.txt");
 }
 
 /**
- * Default destructor for Accelerometer class
- *
- */
+  * Default destructor for Accelerometer class.
+  * Deletes all dynamic objects and sets them to NULL.
+  */
 Accelerometer::~Accelerometer()
 {
+    if(calibrateDialog)
+        delete calibrateDialog;
+    if(fileReader)
+        delete fileReader;
 }
 
 /**
- * Init class members
- *
- */
+  * Init class members.
+  *
+  */
 void Accelerometer::initValues()
 {
     previousAccelerationX = 0;
@@ -45,6 +55,7 @@ void Accelerometer::initValues()
     calibrationX = 0;
     calibrationY = 0;
     calibrationZ = 0;
+    fileReader = NULL;
 }
 
 /**
@@ -57,7 +68,34 @@ void Accelerometer::calibrate(void)
     unsigned int iteration = 0;
     qreal sampleX, sampleY, sampleZ;
 
+    calibrateDialog = new CalibrateDialog();
+    calibrateDialog->show();
+    calibrateDialog->resetProgressValue();
+    calibrateDialog->setMaxValue( kIterations + 1 );
+
+#ifdef FROM_FILE
+    unsigned int numberOfIterations = 50;
     do {
+        calibrateDialog->setProgressValue(iteration);
+
+        fileReader->ReadLine(sampleX,sampleY,sampleZ);
+        //getAcceleration(sampleX, sampleY, sampleZ);
+
+        calibrationX += sampleX; // Accumulate Samples
+        calibrationY += sampleY; // for all axes.
+        calibrationZ += sampleZ;
+
+        iteration++;
+
+    } while(iteration < numberOfIterations);        // kIterations times
+
+    calibrationX = calibrationX/numberOfIterations;  // division by kIterations
+    calibrationY = calibrationY/numberOfIterations;
+    calibrationZ = calibrationZ/numberOfIterations;
+
+#else
+    do {
+        calibrateDialog->setProgressValue(iteration);
 
         getAcceleration(sampleX, sampleY, sampleZ);
 
@@ -67,20 +105,22 @@ void Accelerometer::calibrate(void)
 
         iteration++;
 
-    } while(iteration != 1024);        // 1024 times
+    } while(iteration != kIterations);        // kIterations times
 
-    calibrationX = calibrationX/1024;  // division by 1024
-    calibrationY = calibrationY/1024;
-    calibrationZ = calibrationZ/1024;
+    calibrationX = calibrationX/kIterations;  // division by kIterations
+    calibrationY = calibrationY/kIterations;
+    calibrationZ = calibrationZ/kIterations;
+#endif
+    calibrateDialog->close();
 }
 
 /**
- * Smooths Accelerometer data by applying a low pass filter to data
- *
- * @param x accelerometer's x-axis input
- * @param y accelerometer's y-axis input
- * @param z accelerometer's z-axis input
- */
+  * Smooths Accelerometer data by applying a low pass filter to data.
+  *
+  * @param x accelerometer's x-axis input
+  * @param y accelerometer's y-axis input
+  * @param z accelerometer's z-axis input
+  */
 void Accelerometer::smoothData(qreal &x, qreal &y, qreal &z)
 {
     x = (previousAccelerationX * (1 - kFilteringFactor)) + (x * kFilteringFactor);
@@ -93,14 +133,17 @@ void Accelerometer::smoothData(qreal &x, qreal &y, qreal &z)
 }
 
 /**
- * Gets the raw acceleration data from accelerometer
- *
- * @param x accelerometer's x-axis input
- * @param y accelerometer's y-axis input
- * @param z accelerometer's z-axis input
- */
+  * Gets the raw acceleration data from accelerometer.
+  *
+  * @param x accelerometer's x-axis input
+  * @param y accelerometer's y-axis input
+  * @param z accelerometer's z-axis input
+  */
 void Accelerometer::getAcceleration(qreal &x, qreal &y, qreal &z)
 {
+#ifdef FROM_FILE
+    fileReader->ReadLine(x,y,z);
+#else
     QDBusConnection connection(QDBusConnection::systemBus());
     if (connection.isConnected()) {
         QDBusInterface interface("com.nokia.mce", "/com/nokia/icd", QString(), connection);
@@ -111,33 +154,34 @@ void Accelerometer::getAcceleration(qreal &x, qreal &y, qreal &z)
         y = static_cast<qreal>(reply.argumentAt<4>()) / 1000;
         z = static_cast<qreal>(reply.argumentAt<5>()) / 1000;
     }
+#endif
 }
 
 /**
- * Get the x calibration component
- *
- * @return calibrationX x calibration component
- */
+  * Get the x calibration component.
+  *
+  * @return calibrationX x calibration component
+  */
 qreal Accelerometer::getCalibrationX()
 {
     return calibrationX;
 }
 
 /**
- * Get the y calibration component
- *
- * @return calibrationY y calibration component
- */
+  * Get the y calibration component.
+  *
+  * @return calibrationY y calibration component
+  */
 qreal Accelerometer::getCalibrationY()
 {
     return calibrationY;
 }
 
 /**
- * Get the z calibration component
- *
- * @return calibrationZ z calibration component
- */
+  * Get the z calibration component.
+  *
+  * @return calibrationZ z calibration component
+  */
 qreal Accelerometer::getCalibrationZ()
 {
     return calibrationZ;