New micros clock
This commit is contained in:
@ -14,8 +14,10 @@ namespace {
|
|||||||
constexpr const char * const TAG = "ESPCPPUTILS";
|
constexpr const char * const TAG = "ESPCPPUTILS";
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
SchedulerTask::SchedulerTask(const char *name, void (&setupCallback)(), void (&loopCallback)(), std::chrono::milliseconds loopInterval, bool intervalImportant, std::string (*perfInfo)()) :
|
SchedulerTask::SchedulerTask(const char *name, void (&setupCallback)(), void (&loopCallback)(), espchrono::millis_clock::duration loopInterval,
|
||||||
m_name{name}, m_setupCallback{setupCallback}, m_loopCallback{loopCallback}, m_loopInterval{loopInterval}, m_intervalImportant{intervalImportant}, m_perfInfo{perfInfo}
|
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)
|
if (m_lastElapsed < 100ms)
|
||||||
ESP_LOGV(TAG, "task %s hang for %lldms (heap8=%zd)",
|
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<std::chrono::milliseconds>(m_lastElapsed).count(), heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT));
|
||||||
else
|
else
|
||||||
ESP_LOGW(TAG, "task %s hang for %lldms (heap8=%zd) %s",
|
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<std::chrono::milliseconds>(m_lastElapsed).count(), heap_caps_get_free_size(MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT),
|
||||||
m_perfInfo ? m_perfInfo().c_str() : "");
|
m_perfInfo ? m_perfInfo().c_str() : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +66,7 @@ void SchedulerTask::pushStats(bool printTask)
|
|||||||
{
|
{
|
||||||
m_callCount = m_callCountTemp;
|
m_callCount = m_callCountTemp;
|
||||||
m_totalElapsed = m_totalElapsedTemp;
|
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_maxElapsed = m_maxElapsedTemp;
|
||||||
|
|
||||||
m_callCountTemp = 0;
|
m_callCountTemp = 0;
|
||||||
@ -74,9 +76,9 @@ void SchedulerTask::pushStats(bool printTask)
|
|||||||
if (printTask)
|
if (printTask)
|
||||||
ESP_LOGI(TAG, "name=%s, count=%i, last=%lldms, total=%lldms, max=%lldms",
|
ESP_LOGI(TAG, "name=%s, count=%i, last=%lldms, total=%lldms, max=%lldms",
|
||||||
m_name, m_callCount,
|
m_name, m_callCount,
|
||||||
std::chrono::milliseconds{m_lastElapsed}.count(),
|
std::chrono::floor<std::chrono::milliseconds>(m_lastElapsed).count(),
|
||||||
std::chrono::milliseconds{m_totalElapsed}.count(),
|
std::chrono::floor<std::chrono::milliseconds>(m_totalElapsed).count(),
|
||||||
std::chrono::milliseconds{m_maxElapsed}.count()
|
std::chrono::floor<std::chrono::milliseconds>(m_maxElapsed).count()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,13 +14,13 @@ class SchedulerTask
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SchedulerTask(const char *name, void (&setupCallback)(), void (&loopCallback)(),
|
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);
|
std::string (*perfInfo)() = nullptr);
|
||||||
|
|
||||||
const char *name() const { return m_name; }
|
const char *name() const { return m_name; }
|
||||||
const std::chrono::milliseconds &lastElapsed() const { return m_lastElapsed; }
|
const espchrono::millis_clock::duration&lastElapsed() const { return m_lastElapsed; }
|
||||||
const std::chrono::milliseconds &averageElapsed() const { return m_averageElapsed; }
|
const espchrono::millis_clock::duration&averageElapsed() const { return m_averageElapsed; }
|
||||||
const std::chrono::milliseconds &maxElapsed() const { return m_maxElapsed; }
|
const espchrono::millis_clock::duration&maxElapsed() const { return m_maxElapsed; }
|
||||||
int callCount() const { return m_callCount; }
|
int callCount() const { return m_callCount; }
|
||||||
|
|
||||||
void setup() const { m_setupCallback(); }
|
void setup() const { m_setupCallback(); }
|
||||||
@ -31,21 +31,21 @@ private:
|
|||||||
const char * const m_name;
|
const char * const m_name;
|
||||||
void (&m_setupCallback)();
|
void (&m_setupCallback)();
|
||||||
void (&m_loopCallback)();
|
void (&m_loopCallback)();
|
||||||
const std::chrono::milliseconds m_loopInterval;
|
const espchrono::millis_clock::duration m_loopInterval;
|
||||||
const bool m_intervalImportant;
|
const bool m_intervalImportant;
|
||||||
std::string (* const m_perfInfo)();
|
std::string (* const m_perfInfo)();
|
||||||
|
|
||||||
std::optional<espchrono::millis_clock::time_point> m_lastUpdate;
|
std::optional<espchrono::millis_clock::time_point> m_lastUpdate;
|
||||||
|
|
||||||
std::chrono::milliseconds m_lastElapsed;
|
espchrono::millis_clock::duration m_lastElapsed;
|
||||||
|
|
||||||
std::chrono::milliseconds m_totalElapsed;
|
espchrono::millis_clock::duration m_totalElapsed;
|
||||||
std::chrono::milliseconds m_averageElapsed;
|
espchrono::millis_clock::duration m_averageElapsed;
|
||||||
std::chrono::milliseconds m_maxElapsed;
|
espchrono::millis_clock::duration m_maxElapsed;
|
||||||
int m_callCount{};
|
int m_callCount{};
|
||||||
|
|
||||||
std::chrono::milliseconds m_totalElapsedTemp;
|
espchrono::millis_clock::duration m_totalElapsedTemp;
|
||||||
std::chrono::milliseconds m_maxElapsedTemp;
|
espchrono::millis_clock::duration m_maxElapsedTemp;
|
||||||
int m_callCountTemp{};
|
int m_callCountTemp{};
|
||||||
};
|
};
|
||||||
} // namespace espcpputils
|
} // namespace espcpputils
|
||||||
|
Reference in New Issue
Block a user