blob: 8baf4dbb30931f95b51e24f4de21fa35a1da1694 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#include "UI.h"
#include "cpuload.h"
#include "debug.h"
#include "log.h"
#include <algorithm>
#include <iostream>
#include <string>
#include <fmt/format.h>
using namespace std::chrono_literals;
UI::UI(): m_main_loops{}, m_main_loops_checkpoint{}, m_main_loops_timestamp{}
{
}
int UI::get_main_loops_per_second()
{
// calculate result
std::chrono::time_point<clock_type> now = clock_type::now();
uint64_t diff_ms = std::chrono::duration_cast<std::chrono::milliseconds>(now - m_main_loops_timestamp).count();
uint64_t loops_per_second = (diff_ms == 0 || m_main_loops_checkpoint == 0) ? 0 : ((m_main_loops - m_main_loops_checkpoint) * 1000 / diff_ms);
// update state
m_main_loops_timestamp = now;
m_main_loops_checkpoint = m_main_loops;
return loops_per_second;
}
void UI::draw()
{
std::vector<int> cpuloads = get_cpu_loads();
int main_loops_per_second = get_main_loops_per_second();
// clear screen
std::cout << "\x1B[2J\x1B[H";
std::cout << std::endl;
std::cout << "- -- BPM +" << std::endl;
std::cout << "Mode: Click __/__ (Clock Internal)" << std::endl;
std::cout << std::endl;
std::cout << "Status:" << std::endl;
std::cout << " Alive/not alive" << std::endl;
std::cout << " CPU:";
for (auto& i: cpuloads) {
std::cout << fmt::format(" {:2}%", i);
}
int max = *std::max_element(cpuloads.begin(), cpuloads.end());
std::cout << fmt::format(", max. {:2}%", max) << std::endl;
std::cout << " Notes/Channels: -- -- -- ... (Choose)" << std::endl;
std::cout << " Timestamp: ------" << std::endl;
std::cout << " Active sensing: ---" << std::endl;
std::cout << " Clock: ____ BPM" << std::endl;
std::cout << " Click: ____ BPM" << std::endl;
std::cout << fmt::format(" Main loops/s: {}", main_loops_per_second) << std::endl;
std::cout << "Log:" << std::endl;
std::cout << log_cout.get_log() << std::endl;
}
void UI::count_main_loops()
{
++m_main_loops;
debug_cout << "DEBUG:" << m_main_loops << std::endl;
}
|