summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--daemon/sensorPlugins/stepCounter.cpp15
-rw-r--r--daemon/sensorPlugins/stepCounter.h8
2 files changed, 14 insertions, 9 deletions
diff --git a/daemon/sensorPlugins/stepCounter.cpp b/daemon/sensorPlugins/stepCounter.cpp
index a01c0b9..00d7066 100644
--- a/daemon/sensorPlugins/stepCounter.cpp
+++ b/daemon/sensorPlugins/stepCounter.cpp
@@ -15,6 +15,7 @@
#include <QTime>
#include <QTimer>
#include <QtSensors/QStepCounterSensor>
+#include <QSettings>
#include <time.h>
#include "../logger.h"
@@ -38,14 +39,15 @@ StepCounterPlugin::StepCounterPlugin(QObject* parent, int initInterval, bool dae
setupFilePath(sensorPathPrefix);
while (!stepcounterSensor->isActive()) { }
+ m_settings = new QSettings("asteroid", "sensorlogd");
if (dayFileExists(sensorPathPrefix) && daemonFresh) {
QStringList lastLineData = fileGetPrevRecord(sensorPathPrefix);
lastRecordTime = QDateTime::currentDateTime();
- stepcounterSensor->reading()->setSteps(lastLineData[1].toInt() + stepcounterSensor->reading()->steps()); // we add the last recorded value from today to the current value. This 'recovers' the steps from between reboots. I'm not sure how this will work on catfish or medaka.
-
+ m_stepsOffset = -lastLineData[1].toInt(); // we add the last recorded value from today to the current value. This 'recovers' the steps from between reboots. I'm not sure how this will work on catfish or medaka.
} else if (dayFileExists) {
lastRecordTime = QDateTime::currentDateTime();
+ m_stepsOffset = m_settings->value("StepCounterPrivate/stepsOffset", 0).toInt();
}
}
@@ -65,12 +67,13 @@ void StepCounterPlugin::triggerRecording()
{
qDebug() << "stepcounter interval recording";
if (lastRecordTime.date() < QDate::currentDate()) {
- int steps = stepcounterSensor->reading()->steps();
+ int steps = stepcounterSensor->reading()->steps() - m_stepsOffset;
fileAddRecord(sensorPathPrefix, QString::number(steps), QDateTime(QDate::currentDate().addDays(-1), QTime(23, 59, 59))); // this writes the current step count to the last second of the previous day
- stepcounterSensor->reading()->setSteps(0); // and then we reset the step counter
- qDebug() << "date change detected; recorded " << steps << " to previous day and reset step counter hw. Step counter now holds " << stepcounterSensor->reading()->steps() << " steps";
+ m_stepsOffset = stepcounterSensor->reading()->steps(); // and then we reset the step counter
+ m_settings->setValue("StepCounterPrivate/stepsOffset", m_stepsOffset);
+ qDebug() << "date change detected; recorded " << steps << " to previous day and reset step counter hw.";
} else {
- int steps = stepcounterSensor->reading()->steps();
+ int steps = stepcounterSensor->reading()->steps() - m_stepsOffset;
qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << " : " << steps << stepcounterSensor->isActive();
// we probably ought to do some error checking here
fileAddRecord(sensorPathPrefix, QString::number(steps));
diff --git a/daemon/sensorPlugins/stepCounter.h b/daemon/sensorPlugins/stepCounter.h
index a6475f5..cb6a7e4 100644
--- a/daemon/sensorPlugins/stepCounter.h
+++ b/daemon/sensorPlugins/stepCounter.h
@@ -15,14 +15,14 @@
#include <QDateTime>
#include <QDBusInterface>
#include <QTimer>
+#include <QSettings>
#include <QtSensors/QStepCounterSensor>
-class StepCounterPlugin : public QObject
-{
+class StepCounterPlugin : public QObject {
Q_OBJECT
public:
- explicit StepCounterPlugin(QObject *parent = 0, int initInterval = 600000, bool daemonFresh = false);
+ explicit StepCounterPlugin(QObject* parent = 0, int initInterval = 600000, bool daemonFresh = false);
virtual ~StepCounterPlugin() {};
void timeUpdate();
@@ -35,6 +35,8 @@ private:
int interval;
QTimer *recordIntervalTimer;
QStepCounterSensor *stepcounterSensor;
+ int m_stepsOffset;
+ QSettings *m_settings;
const QString sensorPathPrefix = "stepCounter";
};