This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
YASMIN/sensors/ActivitySensor.h
toni 625f5fe04d updated sensors and filter to current code version
removed KLib stuff
added new activity
filter is uncommand!
at the moment, the app is not able to load new maps and breaks using old maps
2018-07-12 18:39:27 +02:00

78 lines
1.7 KiB
C++

#ifndef BAROMETERACTIVITYSENSOR_H
#define BAROMETERACTIVITYSENSOR_H
#include <Indoor/sensors/activity/ActivityDetector.h>
#include <Indoor/misc/Debug.h>
#include "BarometerSensor.h"
#include "AccelerometerSensor.h"
#include <iostream>
struct ActivityData {
Activity curActivity;
ActivityData(const Activity act) : curActivity(act) {;}
ActivityData() : curActivity(Activity::STANDING) {;}
};
/**
* step-sensor detects steps from the accelerometer
*/
class ActivitySensor :
public SensorListener<BarometerData>, // << takes
public SensorListener<AccelerometerData>, // << takes
public Sensor<ActivityData> { // << provides
private:
ActivityDetector act;
ActivityData data;
BarometerSensor& baro;
AccelerometerSensor& acc;
int waitCnt = 0;
public:
ActivitySensor(BarometerSensor& baro, AccelerometerSensor& acc) : baro(baro), acc(acc) {
baro.addListener(this);
acc.addListener(this);
}
virtual void start() override {
// not needed
waitCnt = 400; //sec
}
virtual void stop() override {
// not needed
}
bool isRunning() const override {
return acc.isRunning() && baro.isRunning();
}
virtual void onSensorData(Sensor<BarometerData>* sensor, const Timestamp ts, const BarometerData& data) override {
(void) sensor;
//ignore the first 10sec of barometer
if(waitCnt > 0){
--waitCnt;
return;
}
act.add(ts, data);
this->data.curActivity = act.get();
informListeners(ts, this->data);
}
virtual void onSensorData(Sensor<AccelerometerData>* sensor, const Timestamp ts, const AccelerometerData& data) override {
(void) sensor;
act.add(ts, data);
}
};
#endif // BAROMETERACTIVITYSENSOR_H