some fixes [multithreading,..]

needed interface changes [new options]
logger for android
wifi-ap-optimization
new test-cases
This commit is contained in:
2016-09-28 12:19:14 +02:00
parent 91e3367372
commit 4f511d907e
62 changed files with 1418 additions and 175 deletions

View File

@@ -12,6 +12,7 @@
#include "../radio/WiFiMeasurements.h"
#include "../imu/AccelerometerData.h"
#include "../imu/GyroscopeData.h"
#include "../pressure/BarometerData.h"
template <typename SensorData> struct OfflineEntry {
@@ -41,6 +42,7 @@ public:
virtual void onAccelerometer(const Timestamp ts, const AccelerometerData data) = 0;
virtual void onGravity(const Timestamp ts, const AccelerometerData data) = 0;
virtual void onWiFi(const Timestamp ts, const WiFiMeasurements data) = 0;
virtual void onBarometer(const Timestamp ts, const BarometerData data) = 0;
};
/** read recorded android sensor data files */
@@ -56,6 +58,8 @@ private:
std::vector<OfflineEntry<AccelerometerData>> accel;
std::vector<OfflineEntry<AccelerometerData>> gravity;
std::vector<OfflineEntry<BarometerData>> barometer;
WalkedPath walkedPath;
const char* name = "OfflineData";
@@ -82,6 +86,9 @@ public:
/** get all gravity readings */
const std::vector<OfflineEntry<AccelerometerData>>& getGravity() const {return gravity;}
/** get all barometer readings */
const std::vector<OfflineEntry<BarometerData>>& getBarometer() const {return barometer;}
/** get the walked path */
const WalkedPath& getWalkedPath() const {return walkedPath;}
@@ -171,8 +178,15 @@ private:
break;
}
case 5: {
const BarometerData data = parseBarometer(sensorData);
barometer.push_back(OfflineEntry<BarometerData>(ts, data));
if (listener) {listener->onBarometer(ts, data);}
break;
}
case 8: {
const WiFiMeasurements data = parseWiFi(sensorData);
const WiFiMeasurements data = parseWiFi(ts, sensorData);
wifi.push_back(OfflineEntry<WiFiMeasurements>(ts, data));
if (listener) {listener->onWiFi(ts, data);}
break;
@@ -196,7 +210,7 @@ private:
/** parse the given WiFiObservation string "MAC;freq;RSSI;MAC;freq;RSSI;...." */
static inline WiFiMeasurements parseWiFi(std::string data) {
static inline WiFiMeasurements parseWiFi(const Timestamp ts, std::string data) {
WiFiMeasurements obs;
@@ -219,7 +233,7 @@ private:
Assert::isTrue(data[0] == ';', "unexpected character");
data = data.substr(1);
const WiFiMeasurement e(mac, std::stof(rssi));
const WiFiMeasurement e(mac, std::stof(rssi), ts);
obs.entries.push_back(e);
}
@@ -265,6 +279,16 @@ private:
}
/** parse the given Barometer entry */
static inline BarometerData parseBarometer(const std::string& data) {
BarometerData baro;
const int pos = data.find(';');
baro.hPa = std::stof(data.substr(0, pos));
return baro;
}
/** parse the given GroundTruth entry */
static inline GroundTruthID parseGroundTruthTick(const std::string& data) {