AlteriomPainlessMesh v2.1.1
Easy ESP32/ESP8266 mesh networking with Alteriom IoT extensions
Loading...
Searching...
No Matches
metrics.hpp
Go to the documentation of this file.
1#ifndef _PAINLESS_MESH_METRICS_HPP_
2#define _PAINLESS_MESH_METRICS_HPP_
3
11#include <algorithm>
12#include <string>
13#ifndef ARDUINO
14#include <chrono>
15#endif
17
18namespace painlessmesh {
19namespace metrics {
20
24class Timer {
25 public:
26 Timer() : start_time_(get_time()) {}
27
28 void reset() { start_time_ = get_time(); }
29
30 uint32_t elapsed_ms() const {
31 return static_cast<uint32_t>(get_time() - start_time_);
32 }
33
34 uint32_t elapsed_us() const {
35#ifdef ESP32
36 return static_cast<uint32_t>(esp_timer_get_time() - start_time_us_);
37#else
38 return elapsed_ms() * 1000; // Fallback to millisecond precision
39#endif
40 }
41
42 private:
43 uint32_t get_time() const {
44#ifdef ARDUINO
45 return millis();
46#else
47 auto now = std::chrono::steady_clock::now();
48 auto duration = now.time_since_epoch();
49 return std::chrono::duration_cast<std::chrono::milliseconds>(duration)
50 .count();
51#endif
52 }
53
54 uint32_t start_time_ = 0;
55#ifdef ESP32
56 int64_t start_time_us_ = esp_timer_get_time();
57#endif
58};
59
60} // namespace metrics
61} // namespace painlessmesh
62
63#endif // _PAINLESS_MESH_METRICS_HPP_
Definition metrics.hpp:24
Timer()
Definition metrics.hpp:26
uint32_t elapsed_us() const
Definition metrics.hpp:34
uint32_t elapsed_ms() const
Definition metrics.hpp:30
void reset()
Definition metrics.hpp:28
Definition wifi.hpp:34