#ifndef ACCELEROMETERSENSORDUMMY_H
#define ACCELEROMETERSENSORDUMMY_H

#include "../AccelerometerSensor.h"
#include "RandomSensor.h"
#include <random>

class AccelerometerSensorDummy : public RandomSensor<AccelerometerData, AccelerometerSensor> {

private:

	/** hidden ctor */
	AccelerometerSensorDummy() : RandomSensor(Timestamp::fromMS(10)) {
		;
	}

public:

	/** singleton access */
	static AccelerometerSensorDummy& get() {
		static AccelerometerSensorDummy acc;
		return acc;
	}

protected:

	std::minstd_rand gen;
	std::uniform_real_distribution<float> distNoise = std::uniform_real_distribution<float>(-0.5, +0.5);

	AccelerometerData getRandomEntry() override {

		const Timestamp ts = Timestamp::fromRunningTime();
		const float Hz = 1.6;
		const float intensity = 2.0;

		const float x = distNoise(gen);
		const float y = distNoise(gen);
		const float z = 9.81 + std::sin(ts.sec()*2*M_PI*Hz) * intensity + distNoise(gen);

		return AccelerometerData(x,y,z);

	}


};

#endif // ACCELEROMETERSENSORDUMMY_H
