diff --git a/common/speedometer.cpp b/common/speedometer.cpp index 19ba566..c68b20a 100644 --- a/common/speedometer.cpp +++ b/common/speedometer.cpp @@ -109,7 +109,7 @@ void Speedometer::computeSpeed() { // TODO : done //Distance run with one pedal turn = tray size / rear gear size * circumference of the wheel - float ms_in_hour = static_cast(3600 * 1000); + constexpr float ms_in_hour = static_cast(3600 * 1000); float pedal_rotation_per_hour = ms_in_hour / static_cast(_pedalRotationTime.count()); float gear_ratio = static_cast(kTraySize) / static_cast(this->_gearSize); float wheel_dist_km = static_cast(this->kWheelCircumference) / 1000.0; @@ -128,11 +128,17 @@ void Speedometer::computeDistance() { // TODO : done Speedometer::computeSpeed(); // compute distance - float last_time_in_hour = static_cast(std::chrono::duration_cast(this->_lastTime).count()); - float traveled_dist = this->_currentSpeed * last_time_in_hour; + + const std::chrono::microseconds timeNow = _timer.elapsed_time(); + const std::chrono::microseconds timeDiff = timeNow - _lastTime; + constexpr float ms_in_hour = static_cast(3600 * 1000); + float traveled_dist = _currentSpeed * timeDiff.count() / (ms_in_hour*1000.0/*μs*/); + this->_totalDistanceMutex.lock(); this->_totalDistance += traveled_dist; this->_totalDistanceMutex.unlock(); + + _lastTime = _timer.elapsed_time(); } } // namespace bike_computer \ No newline at end of file