REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
counters.h
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
4
5#pragma once
6
7#include <Arduino.h> // uint32_t
8#include "ArduinoJson.h"
9#include "utils/singleton.h"
10
11#include "mode/mode.h"
12
13namespace mode {
14
21class PerformanceCounter : public utils::HeapSingleton<PerformanceCounter> {
22 elapsedMicros op, ic, halt; // Counters
23 mode::Mode cur_mode;
24
26 total_op_time_us,
27 total_ic_time_us,
28 total_halt_time_us,
29 total_number_of_runs;
30
31public:
33 void reset();
34
35 void to(mode::Mode new_mode);
36 void add(mode::Mode some_mode, uint32_t usec);
37
38 void increase_run();
39
40 void to_json(JsonObject target);
41};
42
43
44}
This class provides a simple way of doing some metrics about the device usage since startup.
Definition counters.h:21
void to(mode::Mode new_mode)
Manual Mode tracking.
Definition counters.cpp:11
void add(mode::Mode some_mode, uint32_t usec)
Definition counters.cpp:23
void to_json(JsonObject target)
Definition counters.cpp:35
Define singletons which are not static-space allocated (and thus consume valuable ICTM space).
Definition singleton.h:46
uint32_t
Definition flasher.cpp:195
Mode
Definition mode.h:40