From ade2425fbd9818e80af6ec737d31717482d73cde Mon Sep 17 00:00:00 2001 From: k-a-z-u Date: Wed, 6 Dec 2017 17:09:54 +0100 Subject: [PATCH] minor code changes --- math/distribution/Normal.h | 5 ++++ sensors/offline/FilePlayer.h | 58 +++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/math/distribution/Normal.h b/math/distribution/Normal.h index b40ce67..f822319 100644 --- a/math/distribution/Normal.h +++ b/math/distribution/Normal.h @@ -26,8 +26,13 @@ namespace Distribution { Normal(const T mu, const T sigma) : mu(mu), sigma(sigma), _a(1.0 / (sigma * std::sqrt(2.0 * M_PI))), gen(RANDOM_SEED), dist(mu,sigma) { +#warning "analyze issue when coping an existing distribution and using draw() afterwards. this seems to yield issues" + } + /** do not allow copy. this will not work as expected for std::normal_distribution when using draw() ?! */ + //Normal(const Normal& o) = delete; + /** get probability for the given value */ T getProbability(const T val) const { const T b = -0.5 * ((val-mu)/sigma) * ((val-mu)/sigma); diff --git a/sensors/offline/FilePlayer.h b/sensors/offline/FilePlayer.h index b257b42..b74ef22 100644 --- a/sensors/offline/FilePlayer.h +++ b/sensors/offline/FilePlayer.h @@ -75,13 +75,25 @@ namespace Offline { thread.join(); } + + /** manual ticking */ + int tickPos = 0; + void tick() { + const std::vector& events = reader->getEntries(); + const Entry& e = events[tickPos]; + trigger(Timestamp::fromMS(e.ts), e); + ++tickPos; + } + private: + + /** background loop */ void loop() { // get all sensor events from the offline file - const std::vector events = reader->getEntries(); + const std::vector& events = reader->getEntries(); // reference time (system vs. first-event) Timestamp tsRef1 = Timestamp::fromMS(events.front().ts); @@ -104,23 +116,7 @@ namespace Offline { if (diff.ms() > 0) {std::this_thread::sleep_for(std::chrono::milliseconds(diff.ms()));} } - // event index - const size_t idx = e.idx; - -#warning "some sensors todo:" - switch(e.type) { - case Sensor::ACC: listener->onAccelerometer(ts, reader->getAccelerometer()[idx].data); break; - case Sensor::BARO: listener->onBarometer(ts, reader->getBarometer()[idx].data); break; - case Sensor::BEACON: break;//listener->onBe(ts, reader->getBarometer()[idx].data); break; - case Sensor::COMPASS: listener->onCompass(ts, reader->getCompass()[idx].data); break; - case Sensor::MAGNETOMETER: listener->onMagnetometer(ts, reader->getMagnetometer()[idx].data); break; - case Sensor::GPS: listener->onGPS(ts, reader->getGPS()[idx].data); break; - case Sensor::GRAVITY: listener->onGravity(ts, reader->getGravity()[idx].data); break; - case Sensor::GYRO: listener->onGyroscope(ts, reader->getGyroscope()[idx].data); break; - case Sensor::LIN_ACC: break;//listener->on(ts, reader->getBarometer()[idx].data); break; - case Sensor::WIFI: listener->onWiFi(ts, reader->getWiFiGroupedByTime()[idx].data); break; - default: throw Exception("code error. found not-yet-implemented sensor"); - } + trigger(ts, e); } @@ -129,8 +125,34 @@ namespace Offline { } + + + void trigger(const Timestamp ts, const Entry& e) { + + const int idx = e.idx; + + #warning "some sensors todo:" + switch(e.type) { + case Sensor::ACC: listener->onAccelerometer(ts, reader->getAccelerometer()[idx].data); break; + case Sensor::BARO: listener->onBarometer(ts, reader->getBarometer()[idx].data); break; + case Sensor::BEACON: break;//listener->onBe(ts, reader->getBarometer()[idx].data); break; + case Sensor::COMPASS: listener->onCompass(ts, reader->getCompass()[idx].data); break; + case Sensor::MAGNETOMETER: listener->onMagnetometer(ts, reader->getMagnetometer()[idx].data); break; + case Sensor::GPS: listener->onGPS(ts, reader->getGPS()[idx].data); break; + case Sensor::GRAVITY: listener->onGravity(ts, reader->getGravity()[idx].data); break; + case Sensor::GYRO: listener->onGyroscope(ts, reader->getGyroscope()[idx].data); break; + case Sensor::LIN_ACC: break;//listener->on(ts, reader->getBarometer()[idx].data); break; + case Sensor::WIFI: listener->onWiFi(ts, reader->getWiFiGroupedByTime()[idx].data); break; + default: throw Exception("code error. found not-yet-implemented sensor"); + } + + } + + }; + + } #endif // FILEPLAYER_H