summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichele Bini <michele.bini@gmail.com>2022-04-07 19:09:09 (GMT)
committerMichele Bini <michele.bini@gmail.com>2022-04-08 14:49:01 (GMT)
commit461b4f9f53aa713cdd494f290612c2bff005a10a (patch)
treebcc20221c9ff3aee25e56939a146893b4edff7f4
parent82df6f6a41b38f12999e02cde1f4d5456f4e31f1 (diff)
Don't keep subsecond ticks
-rw-r--r--src/components/datetime/DateTimeController.cpp14
-rw-r--r--src/components/datetime/DateTimeController.h1
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;