From 81e2c31dd3573baddd79f6a6afdb27cb08ec03ba Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 30 Mar 2021 11:26:34 +0200 Subject: [PATCH] use native esp32 64bit timer for uptime --- lib/uuid-common/src/get_uptime_ms.cpp | 32 +++++---------------------- lib/uuid-common/src/loop.cpp | 1 - 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/lib/uuid-common/src/get_uptime_ms.cpp b/lib/uuid-common/src/get_uptime_ms.cpp index ee55a29f2..cea202a98 100644 --- a/lib/uuid-common/src/get_uptime_ms.cpp +++ b/lib/uuid-common/src/get_uptime_ms.cpp @@ -22,44 +22,24 @@ namespace uuid { -#define UPTIME_OVERFLOW 4294967295 // Uptime overflow value +// added by proddy, modified +static uint64_t now_millis = 0; // returns system uptime in seconds uint32_t get_uptime_sec() { - static uint32_t last_uptime = 0; - static uint8_t uptime_overflows = 0; - - if (millis() < last_uptime) { - ++uptime_overflows; - } - last_uptime = millis(); - uint32_t uptime_seconds = uptime_overflows * (UPTIME_OVERFLOW / 1000) + (last_uptime / 1000); - - return uptime_seconds; + return (uint32_t)(now_millis / 1000ULL); } uint64_t get_uptime_ms() { - static uint32_t high_millis = 0; - static uint32_t low_millis = 0; - - if (get_uptime() < low_millis) { - high_millis++; - } - - low_millis = get_uptime(); - - return ((uint64_t)high_millis << 32) | low_millis; + return now_millis;; } -// added by proddy -static uint32_t now_millis; - void set_uptime() { - now_millis = ::millis(); + now_millis = esp_timer_get_time() / 1000ULL; } uint32_t get_uptime() { - return now_millis; + return (uint32_t)now_millis; } } // namespace uuid diff --git a/lib/uuid-common/src/loop.cpp b/lib/uuid-common/src/loop.cpp index 184dc5626..389c52350 100644 --- a/lib/uuid-common/src/loop.cpp +++ b/lib/uuid-common/src/loop.cpp @@ -22,7 +22,6 @@ namespace uuid { void loop() { set_uptime(); // added by proddy - get_uptime_ms(); } } // namespace uuid