#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 /** * receives live sensor data * writes it to a file */ class SensorWriter : public SensorListener, public SensorListener, public SensorListener, // public SensorListener, // public SensorListener, // public SensorListener, public SensorListener, public SensorListener, public SensorListener { 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* , const Timestamp ts, const AccelerometerData& data) override { if (!active) {return;} writer.add(ts, data); } virtual void onSensorData(Sensor* , const Timestamp ts, const GyroscopeData& data) override { if (!active) {return;} writer.add(ts, data); } virtual void onSensorData(Sensor* , const Timestamp ts, const BarometerData& data) override { if (!active) {return;} writer.add(ts, data); } virtual void onSensorData(Sensor* , const Timestamp ts, const WiFiMeasurements& data) override { if (!active) {return;} writer.add(ts, data); } virtual void onSensorData(Sensor* , const Timestamp ts, const GPSData& data) override { if (!active) {return;} writer.add(ts, data); } virtual void onSensorData(Sensor* , const Timestamp ts, const CompassData& data) override { if (!active) {return;} writer.add(ts, data); } }; #endif // SENSORWRITER_H