From 247f89af97cd5178b69d2716d7d9ee1a6b1d2701 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Wed, 19 Jan 2022 18:21:02 +0100 Subject: [PATCH] New micros clock --- src/schedulertask.cpp | 18 ++++++++++-------- src/schedulertask.h | 22 +++++++++++----------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/schedulertask.cpp b/src/schedulertask.cpp index f35244f..7ba111e 100644 --- a/src/schedulertask.cpp +++ b/src/schedulertask.cpp @@ -14,8 +14,10 @@ namespace { constexpr const char * const TAG = "ESPCPPUTILS"; } // namespace -SchedulerTask::SchedulerTask(const char *name, void (&setupCallback)(), void (&loopCallback)(), std::chrono::milliseconds loopInterval, bool intervalImportant, std::string (*perfInfo)()) : - m_name{name}, m_setupCallback{setupCallback}, m_loopCallback{loopCallback}, m_loopInterval{loopInterval}, m_intervalImportant{intervalImportant}, m_perfInfo{perfInfo} +SchedulerTask::SchedulerTask(const char *name, void (&setupCallback)(), void (&loopCallback)(), espchrono::millis_clock::duration loopInterval, + bool intervalImportant, std::string (*perfInfo)()) : + m_name{name}, m_setupCallback{setupCallback}, m_loopCallback{loopCallback}, m_loopInterval{loopInterval}, + m_intervalImportant{intervalImportant}, m_perfInfo{perfInfo} { } @@ -53,10 +55,10 @@ trotzdem: if (m_lastElapsed < 100ms) ESP_LOGV(TAG, "task %s hang for %lldms (heap8=%zd)", - m_name, std::chrono::milliseconds{m_lastElapsed}.count(), heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT)); + m_name, std::chrono::floor(m_lastElapsed).count(), heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT)); else ESP_LOGW(TAG, "task %s hang for %lldms (heap8=%zd) %s", - m_name, std::chrono::milliseconds{m_lastElapsed}.count(), heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT), + m_name, std::chrono::floor(m_lastElapsed).count(), heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT), m_perfInfo ? m_perfInfo().c_str() : ""); } @@ -64,7 +66,7 @@ void SchedulerTask::pushStats(bool printTask) { m_callCount = m_callCountTemp; m_totalElapsed = m_totalElapsedTemp; - m_averageElapsed = m_callCount > 0 ? (m_totalElapsed / m_callCount) : std::chrono::milliseconds{}; + m_averageElapsed = m_callCount > 0 ? (m_totalElapsed / m_callCount) : espchrono::millis_clock::duration{}; m_maxElapsed = m_maxElapsedTemp; m_callCountTemp = 0; @@ -74,9 +76,9 @@ void SchedulerTask::pushStats(bool printTask) if (printTask) ESP_LOGI(TAG, "name=%s, count=%i, last=%lldms, total=%lldms, max=%lldms", m_name, m_callCount, - std::chrono::milliseconds{m_lastElapsed}.count(), - std::chrono::milliseconds{m_totalElapsed}.count(), - std::chrono::milliseconds{m_maxElapsed}.count() + std::chrono::floor(m_lastElapsed).count(), + std::chrono::floor(m_totalElapsed).count(), + std::chrono::floor(m_maxElapsed).count() ); } diff --git a/src/schedulertask.h b/src/schedulertask.h index 00c61fd..b057a1c 100644 --- a/src/schedulertask.h +++ b/src/schedulertask.h @@ -14,13 +14,13 @@ class SchedulerTask { public: SchedulerTask(const char *name, void (&setupCallback)(), void (&loopCallback)(), - std::chrono::milliseconds loopInterval, bool intervalImportant = false, + espchrono::millis_clock::duration loopInterval, bool intervalImportant = false, std::string (*perfInfo)() = nullptr); const char *name() const { return m_name; } - const std::chrono::milliseconds &lastElapsed() const { return m_lastElapsed; } - const std::chrono::milliseconds &averageElapsed() const { return m_averageElapsed; } - const std::chrono::milliseconds &maxElapsed() const { return m_maxElapsed; } + const espchrono::millis_clock::duration&lastElapsed() const { return m_lastElapsed; } + const espchrono::millis_clock::duration&averageElapsed() const { return m_averageElapsed; } + const espchrono::millis_clock::duration&maxElapsed() const { return m_maxElapsed; } int callCount() const { return m_callCount; } void setup() const { m_setupCallback(); } @@ -31,21 +31,21 @@ private: const char * const m_name; void (&m_setupCallback)(); void (&m_loopCallback)(); - const std::chrono::milliseconds m_loopInterval; + const espchrono::millis_clock::duration m_loopInterval; const bool m_intervalImportant; std::string (* const m_perfInfo)(); std::optional m_lastUpdate; - std::chrono::milliseconds m_lastElapsed; + espchrono::millis_clock::duration m_lastElapsed; - std::chrono::milliseconds m_totalElapsed; - std::chrono::milliseconds m_averageElapsed; - std::chrono::milliseconds m_maxElapsed; + espchrono::millis_clock::duration m_totalElapsed; + espchrono::millis_clock::duration m_averageElapsed; + espchrono::millis_clock::duration m_maxElapsed; int m_callCount{}; - std::chrono::milliseconds m_totalElapsedTemp; - std::chrono::milliseconds m_maxElapsedTemp; + espchrono::millis_clock::duration m_totalElapsedTemp; + espchrono::millis_clock::duration m_maxElapsedTemp; int m_callCountTemp{}; }; } // namespace espcpputils