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/TurnSensor.h
mail@toni-fetzer.de 20ae2f5c2a started to add ble functions
added ble as sensor to java and c++
added sensorlistener for ble
added ble to observation and onDataSensor in filter
started to work on ble fingerprints for optimization
2019-06-05 18:04:31 +02:00

67 lines
1.5 KiB
C++

#ifndef TURNSENSOR_H
#define TURNSENSOR_H
#include <Indoor/sensors/imu/PoseDetection.h>
#include <Indoor/sensors/imu/TurnDetection.h>
#include "AccelerometerSensor.h"
#include "GyroscopeSensor.h"
struct TurnData {
float radSinceLastEvent;
float radSinceStart;
TurnData() : radSinceLastEvent(0), radSinceStart(0) {;}
};
class TurnSensor :
public SensorListener<AccelerometerData>, // << takes
public SensorListener<GyroscopeData>, // << takes
public Sensor<TurnData> { // << provides
private:
PoseDetection pose;
TurnDetection turn;
TurnData data;
AccelerometerSensor& acc;
GyroscopeSensor& gyro;
public:
/** ctor */
TurnSensor(AccelerometerSensor& acc, GyroscopeSensor& gyro) : acc(acc), gyro(gyro), turn(&pose) {
acc.addListener(this);
gyro.addListener(this);
}
void start() override {
//
}
void stop() override {
//
}
bool isRunning() const override {
return acc.isRunning() && gyro.isRunning();
}
virtual void onSensorData(Sensor<AccelerometerData>* sensor, const Timestamp ts, const AccelerometerData& data) override {
(void) sensor;
//turn.addAccelerometer(ts, data);
pose.addAccelerometer(ts, data);
}
virtual void onSensorData(Sensor<GyroscopeData>* sensor, const Timestamp ts, const GyroscopeData& data) override {
(void) sensor;
const float rad = turn.addGyroscope(ts, data);
this->data.radSinceLastEvent = rad;
this->data.radSinceStart += rad;
informListeners(ts, this->data);
}
};
#endif // TURNSENSOR_H