diff options
Diffstat (limited to 'src/components/motion/MotionController.h')
| -rw-r--r-- | src/components/motion/MotionController.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/components/motion/MotionController.h b/src/components/motion/MotionController.h index ad95f31f..ed6cbbd1 100644 --- a/src/components/motion/MotionController.h +++ b/src/components/motion/MotionController.h @@ -18,6 +18,15 @@ namespace Pinetime { BMA425, }; + enum class Days : uint8_t { + Today = 0, + Yesterday, + }; + + static constexpr size_t stepHistorySize = 2; // Store this many day's step counter + + void AdvanceDay(); + void Update(int16_t x, int16_t y, int16_t z, uint32_t nbSteps); int16_t X() const { @@ -32,8 +41,8 @@ namespace Pinetime { return zHistory[0]; } - uint32_t NbSteps() const { - return nbSteps; + uint32_t NbSteps(Days day = Days::Today) const { + return nbSteps[static_cast<std::underlying_type_t<Days>>(day)]; } void ResetTrip() { @@ -66,9 +75,13 @@ namespace Pinetime { } private: - uint32_t nbSteps = 0; + Utility::CircularBuffer<uint32_t, stepHistorySize> nbSteps = {0}; uint32_t currentTripSteps = 0; + void SetSteps(Days day, uint32_t steps) { + nbSteps[static_cast<std::underlying_type_t<Days>>(day)] = steps; + } + TickType_t lastTime = 0; TickType_t time = 0; |
