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/SensorWriter.h
k-a-z-u bb974d3871 added c++11 fixes
removed old components
disabled activity (for compiling reasons)
added wifi 2.4ghz hack
2018-07-11 13:23:18 +02:00

102 lines
2.6 KiB
C++

#ifndef SENSORWRITER_H
#define SENSORWRITER_H
#include "AccelerometerSensor.h"
#include "GyroscopeSensor.h"
#include "BarometerSensor.h"
#include "StepSensor.h"
#include "TurnSensor.h"
#include "WiFiSensor.h"
//#include "ActivitySensor.h"
#include "GPSSensor.h"
#include "CompassSensor.h"
#include "SensorFactory.h"
#include <Indoor/sensors/offline/FileWriter.h>
/**
* receives live sensor data
* writes it to a file
*/
class SensorWriter :
public SensorListener<AccelerometerData>,
public SensorListener<GyroscopeData>,
public SensorListener<BarometerData>,
// public SensorListener<ActivityData>,
// public SensorListener<StepData>,
// public SensorListener<TurnData>,
public SensorListener<WiFiMeasurements>,
public SensorListener<GPSData>,
public SensorListener<CompassData> {
private:
Offline::FileWriter writer;
bool active = false;
public:
/** empty ctor */
SensorWriter() {
// attach as listener to all sensors we want to store
SensorFactory::get().getAccelerometer().addListener(this);
SensorFactory::get().getGyroscope().addListener(this);
SensorFactory::get().getBarometer().addListener(this);
// SensorFactory::get().getActivity().addListener(this);
// SensorFactory::get().getSteps().addListener(this);
// SensorFactory::get().getTurns().addListener(this);
SensorFactory::get().getWiFi().addListener(this);
SensorFactory::get().getCompass().addListener(this);
SensorFactory::get().getGPS().addListener(this);
}
void start(const std::string& file) {
writer.open(file);
active = true;
}
void stop() {
active = false;
writer.close();
}
public:
virtual void onSensorData(Sensor<AccelerometerData>* , const Timestamp ts, const AccelerometerData& data) override {
if (!active) {return;}
writer.add(ts, data);
}
virtual void onSensorData(Sensor<GyroscopeData>* , const Timestamp ts, const GyroscopeData& data) override {
if (!active) {return;}
writer.add(ts, data);
}
virtual void onSensorData(Sensor<BarometerData>* , const Timestamp ts, const BarometerData& data) override {
if (!active) {return;}
writer.add(ts, data);
}
virtual void onSensorData(Sensor<WiFiMeasurements>* , const Timestamp ts, const WiFiMeasurements& data) override {
if (!active) {return;}
writer.add(ts, data);
}
virtual void onSensorData(Sensor<GPSData>* , const Timestamp ts, const GPSData& data) override {
if (!active) {return;}
writer.add(ts, data);
}
virtual void onSensorData(Sensor<CompassData>* , const Timestamp ts, const CompassData& data) override {
if (!active) {return;}
writer.add(ts, data);
}
};
#endif // SENSORWRITER_H