summaryrefslogtreecommitdiff
path: root/sensors.cpp
diff options
context:
space:
mode:
authorArseniy-Movshev <dodoradio@outlook.com>2023-03-06 20:59:36 +0000
committerArseniy-Movshev <dodoradio@outlook.com>2023-03-07 21:44:42 +0000
commit222f776d9f9d1f362038d26f835c96918a7af5fe (patch)
treee1c5b01753d52603bc9d8e5cb91c1cf3287a8ba9 /sensors.cpp
parent31a0592f40ccbe0ed31abcd8bf39c2c00dab699a (diff)
Refactor sensors into separate files
- this should make things a lot easier to maintain. instead of having everything in the same file, each sensor provides a constructor that sets it up correctly etc. - this should also get the step counter running when the service starts, which is necessary, since the sensor won't count on most devices unless the service is running. - this also temporarily removes the gps module from the service. it's not implemented right now anyway.
Diffstat (limited to 'sensors.cpp')
-rw-r--r--sensors.cpp144
1 files changed, 0 insertions, 144 deletions
diff --git a/sensors.cpp b/sensors.cpp
deleted file mode 100644
index ac286c1..0000000
--- a/sensors.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-#include <QSettings>
-#include <QDBusInterface>
-#include <QDBusConnection>
-#include <QDateTime>
-#include <QFile>
-#include <QTextStream>
-#include <QTimer>
-#include <QtSensors/QStepCounterSensor>
-#include <QtSensors/QHrmSensor>
-#include <QDebug>
-
-#include "sensors.h"
-
-Logger::Logger(QObject *parent) :
- QObject(parent){
- m_iface = new QDBusInterface("com.nokia.mce","/com/nokia/mce/signal", "com.nokia.mce.signal", QDBusConnection::systemBus());
- QSettings settings;
- if (true) { //add check for HRM
- hrmInterval = settings.value("hrmInterval",60000).toInt();
-
- heartrateSensor = new QHrmSensor(this);
- connect(heartrateSensor,SIGNAL(readingChanged()),this,SLOT(recordHeartrate()));
-
- qDebug() << "heartrate sensor is enabled. interval is (ms) " << hrmInterval;
- hrmTimer = new QTimer(this);
- connect(hrmTimer,SIGNAL(timeout()),this,SLOT(setupRecordHeartrate()));
- hrmTimer->setSingleShot(true);
- hrmTimer->start(hrmInterval);
- hrmLastTime = QDateTime::currentDateTime();
- }
- if (true) { //add check for HRM
- stepsInterval = settings.value("stepsInterval",60000).toInt();
- qDebug() << "step counter sensor is enabled. interval is (ms) " << stepsInterval;
- stepsTimer = new QTimer(this);
- connect(stepsTimer,SIGNAL(timeout()),this,SLOT(recordStepcounter()));
- stepsTimer->setSingleShot(true);
- stepsTimer->start(stepsInterval);
- stepsLastTime = QDateTime::currentDateTime();
- }
- if(!m_iface->isValid()) {
- qDebug() << "interface is not valid";
- qDebug() << m_iface->lastError();
- }
- if(connect(m_iface, SIGNAL(display_status_ind(QString)), this, SLOT(displayOn(QString)))) { //this fires when the display turns on
- qDebug() << "healthd connected display_status signal to slot";
- }
- qDebug() << "healthd sensors logger initialised";
-}
-
-void Logger::displayOn(QString displayState) {
- if (displayState == "off")
- return;
- qDebug() << "display on detected";
- uint currTime = QDateTime::currentMSecsSinceEpoch();
- if (true) { //check for hrm
- uint elapsed = currTime - hrmLastTime.toMSecsSinceEpoch();
- qDebug() << "time until next hrm recording" << hrmTimer->remainingTime() << " elapsed = " << elapsed << " currTime " << currTime << " hrmLastTime" << hrmLastTime.toMSecsSinceEpoch();
- if (elapsed > hrmInterval) { //if too much time has passed, reset the timer and record heartrate
- recordHeartrate();
- hrmLastTime = QDateTime::currentDateTime();
- } else { //otherwise, restart the timer and compensate for time spent in suspend
- hrmTimer->start(hrmInterval - elapsed);
- }
- }
- if (true) { //check for stepcounter
- uint elapsed = currTime - stepsLastTime.toMSecsSinceEpoch();
- qDebug() << "time until next steps recording" << stepsTimer->remainingTime() << " elapsed = " << elapsed << " currTime " << currTime << " stepsLastTime" << stepsLastTime.toMSecsSinceEpoch();
- if (elapsed > stepsInterval) { //if too much time has passed, reset the timer and record heartrate
- recordStepcounter();
- stepsLastTime = QDateTime::currentDateTime();
- } else { //otherwise, restart the timer and compensate for time spent in suspend
- stepsTimer->start(stepsInterval - elapsed);
- }
- }
-}
-
-void Logger::setupRecordHeartrate() {
- qDebug() << "heartrate interval recording";
- hrmTimer->start(hrmInterval);
- heartrateSensor->start();
-}
-
-void Logger::recordHeartrate() {
- qDebug() << "bpm update received";
- int bpm = heartrateSensor->reading()->bpm();
- qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << " : " << bpm << heartrateSensor->status() << heartrateSensor->isActive();
- if ((bpm == 0) || (heartrateSensor->status() < 3)) {
- return;
- }
- QFile file("out.txt");
- if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
- qDebug() << "failed to open file";
- return;
- }
- file.seek(file.size());
- QTextStream out(&file);
- out << QDateTime::currentSecsSinceEpoch() << " : " << bpm << "\n";
- qDebug() << "wrote to file";
- heartrateSensor->stop();
- file.close();
-}
-
-void Logger::setupRecordGPS() {
- QTimer::singleShot(hrmInterval, this, SLOT(recordHeartrate()));
- QHrmSensor* heartrateSensor = new QHrmSensor(this); //ok GPS doesn't work like this, this gonna need a custom solution. QtLocation to the rescue, or something :/
- QFile file("out.txt");
- if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
- return;
-
- QTextStream out(&file);
- out << QDateTime::currentSecsSinceEpoch() << " : " << heartrateSensor->reading();
- file.close();
- //create the GPS location
- //open the file we're recording into
- //wait for the sensor to finish setting up
- //read location
- //format
- //save to file
-}
-
-void Logger::recordGPS() {
-}
-
-void Logger::setupRecordStepcounter() {
- qDebug() << "stepcounter interval recording";
- hrmTimer->start(hrmInterval);
- QFile file("out.txt");
- if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
- qDebug() << "failed to open file";
- return;
- }
- stepcounterSensor->start();
- QTextStream out(&file);
- while(/*stepcounterSensor->reading()->steps() == 0*/false) {
- qDebug() << "waiting for reading, currently " << stepcounterSensor->reading()->steps() << stepcounterSensor->isActive();
- }
- qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << " : " << stepcounterSensor->reading()->steps() << stepcounterSensor->isActive();
- out << QDateTime::currentSecsSinceEpoch() << " : " << stepcounterSensor->reading(); //reading() like this doesn't do anything useful. We need to wait for sensor to initialise and feed us back a reading
- stepcounterSensor->stop();
- file.close();
-}
-
-void Logger::recordStepcounter() {
-}