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/StepSensor.h
2016-07-15 15:00:49 +02:00

67 lines
1005 B
C++

#ifndef STEPSENSOR_H
#define STEPSENSOR_H
#include "../misc/fixc11.h"
#include "AccelerometerSensor.h"
#include "Sensor.h"
struct StepData {
;
};
class StepSensor : public Sensor<StepData>, public SensorListener<AccelerometerData> {
private:
AccelerometerSensor& acc;
public:
/** hidden ctor. use singleton */
StepSensor(AccelerometerSensor& acc) : acc(acc) {
;
}
void start() override {
acc.addListener(this);
acc.start();
}
void stop() override {
throw "todo";
}
virtual void onSensorData(const AccelerometerData& data) override {
parse(data);
}
protected:
const float threshold = 11.0;
const int blockTime = 25;
int block = 0;
void parse(const AccelerometerData& data) {
const float x = data.x;
const float y = data.y;
const float z = data.z;
const float mag = std::sqrt( (x*x) + (y*y) + (z*z) );
if (block > 0) {
--block;
} else if (mag > threshold) {
informListeners(StepData());
block = blockTime;
}
}
};
#endif // STEPSENSOR_H