diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-04-07 19:09:09 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-04-08 14:49:01 (GMT) |
| commit | 461b4f9f53aa713cdd494f290612c2bff005a10a (patch) | |
| tree | bcc20221c9ff3aee25e56939a146893b4edff7f4 | |
| parent | 82df6f6a41b38f12999e02cde1f4d5456f4e31f1 (diff) | |
Don't keep subsecond ticks
| -rw-r--r-- | src/components/datetime/DateTimeController.cpp | 14 | ||||
| -rw-r--r-- | src/components/datetime/DateTimeController.h | 1 |
2 files changed, 3 insertions, 12 deletions
diff --git a/src/components/datetime/DateTimeController.cpp b/src/components/datetime/DateTimeController.cpp index c297aa1..0dd5347 100644 --- a/src/components/datetime/DateTimeController.cpp +++ b/src/components/datetime/DateTimeController.cpp @@ -45,17 +45,9 @@ void DateTime::SetTime( void DateTime::UpdateTime(uint32_t systickCounter) { // Handle systick counter overflow - uint32_t systickDelta = (systickCounter - previousSystickCounter) & 0xffffff; - previousSystickCounter = systickCounter; - - /* - * 1000 ms = 1024 ticks - */ - // auto newSeconds = systickDelta >> 10; - // auto rest = systickDelta & ((1 << 10)-1); - subsecondTicks += systickDelta & ((1 << 10)-1); - systickDelta = (systickDelta >> 10) + (subsecondTicks >> 10); - subsecondTicks &= ((1 << 10)-1); + uint32_t systickDelta = ( systickCounter - previousSystickCounter ) & 0xffffff; + previousSystickCounter = ( systickCounter - (systickDelta & ((1<<10)-1)) ) & 0xffffff; + systickDelta >>= 10; currentDateTime += std::chrono::seconds(systickDelta); uptime += std::chrono::seconds(systickDelta); diff --git a/src/components/datetime/DateTimeController.h b/src/components/datetime/DateTimeController.h index cf9d52c..4518c01 100644 --- a/src/components/datetime/DateTimeController.h +++ b/src/components/datetime/DateTimeController.h @@ -84,7 +84,6 @@ namespace Pinetime { uint8_t hour = 0; uint8_t minute = 0; uint8_t second = 0; - uint16_t subsecondTicks = 0; uint32_t previousSystickCounter = 0; // FIXME: This could probably be 16 bits? std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds> currentDateTime; |
