diff --git a/pasada-lib/include/step_detector.h b/pasada-lib/include/step_detector.h index b8999e3..c1f0aca 100644 --- a/pasada-lib/include/step_detector.h +++ b/pasada-lib/include/step_detector.h @@ -12,8 +12,8 @@ class StepListener { public: - virtual ~StepListener() {} - virtual void playBeat() = 0; + virtual ~StepListener() = default; + virtual void playBeat(double t) = 0; }; /** mean-filter the gravity vector, then take acceleration downwards */ @@ -60,10 +60,14 @@ public: * @param debug collect debug buffers (used in unit tests) */ StepDetector(double fps, StepListener *listener, bool debug = false); - /** filter using raw accel samples (unevenly spaced and 3-dimensional) */ + /** + * Push raw accelerometer values (unevenly sampled and 3-dimensional). + * @param ts timestamp in ns + * @param values acceleration values for x,y,z + */ void filter(double ts, std::vector values); /** filter using scalar accel samples in \vec{e_g} direction */ - void filter_a(double s1); + void filter_a(double t, double s1); std::vector getBufSsd(); std::vector getBufSqi(); std::vector getBufOut(); @@ -75,4 +79,4 @@ public: double primeFilters(double fps, std::vector sig); }; -#endif //PASADASUPERPROJECT_STEP_DETECTOR_H \ No newline at end of file +#endif //PASADASUPERPROJECT_STEP_DETECTOR_H diff --git a/pasada-lib/step_detector.cpp b/pasada-lib/step_detector.cpp index dd4480a..5e823c4 100644 --- a/pasada-lib/step_detector.cpp +++ b/pasada-lib/step_detector.cpp @@ -65,11 +65,11 @@ void StepDetector::filter(double ts, std::vector values) { // gravity filtering double a = f_grav.filter(samp); // pass on accel sample - filter_a(a); + filter_a(ts, a); } } -void StepDetector::filter_a(double s2) { +void StepDetector::filter_a(double ts, double s2) { auto s3 = f_ssf.filter(s2); auto s4 = f_ssd.filter(s3); auto q5 = f_sqi.filter(s2, s3, s4); @@ -80,7 +80,7 @@ void StepDetector::filter_a(double s2) { } // is step, step quality is OK, and we have a listener? if(s4 > 0.0 && q5 > 0.0 && listener != nullptr) { - listener->playBeat(); + listener->playBeat(ts / 1e9); } }