*
* @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>
* @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>
{
initValues();
calibrateDialog = NULL;
+ //fileReader = new filereader();
+ //fileReader->setFileName("45.txt");
}
/**
{
if(calibrateDialog)
delete calibrateDialog;
+ if(fileReader)
+ delete fileReader;
}
/**
calibrationX = 0;
calibrationY = 0;
calibrationZ = 0;
+ fileReader = NULL;
}
/**
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);
calibrationX = calibrationX/kIterations; // division by kIterations
calibrationY = calibrationY/kIterations;
calibrationZ = calibrationZ/kIterations;
-
+#endif
calibrateDialog->close();
}
*/
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);
y = static_cast<qreal>(reply.argumentAt<4>()) / 1000;
z = static_cast<qreal>(reply.argumentAt<5>()) / 1000;
}
+#endif
}
/**
#include <QObject>
+#include "filereader.h"
#include "calculate.h"
#include "calibratedialog.h"
qreal calibrationX, calibrationY, calibrationZ;
CalibrateDialog *calibrateDialog;
+
+ filereader* fileReader;
+
};
#endif // ACCELEROMETER_H
accelerometer = new Accelerometer();
movingAverageZ = new MovingAverage(10);
+ movingAverageY = new MovingAverage(10);
calculate = new Calculate();
accelerationStartThreshold = 0.1;
delete accelerometerTimer;
delete calculate;
delete movingAverageZ;
+ delete movingAverageY;
if(resultDialog)
delete resultDialog;
}
//accelerometer->smoothData(x, y, z);
- //Calculate average
+ //Calculate average for Z
movingAverageZ->Enqueue(z);
z = movingAverageZ->Average();
+ //Calculate average for Y
+ movingAverageY->Enqueue(y);
+ y = movingAverageY->Average();
// Apply calibration
x -= accelerometer->getCalibrationX();
y -= accelerometer->getCalibrationY();
z -= accelerometer->getCalibrationZ();
+ qreal calY = accelerometer->getCalibrationY();
+ qreal calZ = accelerometer->getCalibrationZ();
+
+ if(calY < 0)
+ calY = -calY;
+ if(calZ < 0)
+ calZ = -calZ;
+
+ //Take acceleration from more affecting axel
+ if(calZ < calY)
+ {
+ z = z*(1+calZ/2);
+ currentAcceleration = z;
+ }
+ else
+ {
+ y = y*(1+calY/2);
+ currentAcceleration = -y;
+ }
+
+ //screen up: y = 0, z = -1
+ //screen front: y = -1, z = 0
+
// QString str = QString("acc x: " + QString::number(x) + "\n" +
// "acc y: " + QString::number(y) + "\n" +
// "acc z: " + QString::number(z) + "\n");
- currentAcceleration = z;//sqrt(x*x + y*y + z*z);
+ //currentAcceleration = z;//sqrt(x*x + y*y + z*z);
+ //qDebug("y: %f, calibZ: %f, calibY: %f\n",y,accelerometer->getCalibrationZ(),accelerometer->getCalibrationY());
changeInAcceleration = currentAcceleration;
if (((fabs(changeInAcceleration) <= accelerationStartThreshold)
Accelerometer* accelerometer;
Calculate *calculate;
MovingAverage* movingAverageZ;
+ MovingAverage* movingAverageY;
int updateScreenCounter;
double accelerationStartThreshold;
helproutingdialog.cpp \
helpsettingsdialog.cpp \
custombutton.cpp \
- profiledialog.cpp
+ profiledialog.cpp \
+ filereader.cpp
HEADERS += mainwindow.h \
creditsdialog.h \
routedialog.h \
helproutingdialog.h \
helpsettingsdialog.h \
custombutton.h \
- profiledialog.h
+ profiledialog.h \
+ filereader.h
FORMS += mainwindow.ui \
creditsdialog.ui \
routedialog.ui \