summaryrefslogtreecommitdiff
path: root/src/utils/sysinfo.cpp
blob: cb3871da42e07e85e5c011eb34fc937317f9f262 (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
72
73
74
75
76
77
78
79
80
81
82
83
84
#include "../ui/display.h"
#include "buttons.h"
#include <Arduino.h>
#include <esp_chip_info.h>
#include <esp_heap_caps.h>

void runSystemInfoFeature() {
    esp_chip_info_t chip_info;

    esp_chip_info(&chip_info);

    while (true) {
        // u8g2.clearBuffer();

        // char buf[32];

        // sprintf(buf, "Cores: %d", chip_info.cores);
        // u8g2.drawStr(0, 14, buf);

        // sprintf(buf, "Heap: %d",
        //         heap_caps_get_free_size(MALLOC_CAP_DEFAULT));
        // u8g2.drawStr(0, 28, buf);

        // u8g2.drawStr(0, 60, "BACK to exit");

        // Get RAM info
        size_t freeHeap = heap_caps_get_free_size(MALLOC_CAP_DEFAULT);
        size_t totalHeap = heap_caps_get_total_size(MALLOC_CAP_DEFAULT);
        int ramUsage = 100 - ((freeHeap * 100) / totalHeap);

        // Get Flash info
        // uint32_t flashSize = spi_flash_get_chip_size();
        uint32_t flashSize = ESP.getFlashChipSize();
        uint32_t flashUsed = ESP.getSketchSize();
        int flashUsage = (flashUsed * 100) / flashSize;

        // Temperature (approx)
        uint8_t temperature = temperatureRead();

        // Chip info
        esp_chip_info_t chip_info;
        esp_chip_info(&chip_info);

        u8g2.clearBuffer();
        u8g2.setFont(u8g2_font_6x12_tr);

        char buf[32];

        // Box 1 - RAM
        u8g2.drawFrame(0, 0, 128, 12);
        sprintf(buf, "RAM: %d%% used", ramUsage);
        u8g2.drawStr(4, 9, buf);

        // Box 2 - Flash
        u8g2.drawFrame(0, 12, 128, 12);
        sprintf(buf, "Flash: %d%% used", flashUsage);
        u8g2.drawStr(4, 21, buf);

        // Box 3 - Temp (FULL WIDTH now)
        u8g2.drawFrame(0, 24, 128, 12);
        sprintf(buf, "Temp: %d C", temperature);
        u8g2.drawStr(4, 33, buf);

        // Box 4 - Chip info (FULL WIDTH)
        u8g2.drawFrame(0, 36, 128, 12);
        sprintf(buf, "Cores: %d Rev: %d", chip_info.cores, chip_info.revision);
        u8g2.drawStr(4, 45, buf);

        // Box 5 - PSRAM (KB)
        u8g2.drawFrame(0, 48, 128, 12);
        sprintf(buf, "PSRAM: %lu KB",
                heap_caps_get_free_size(MALLOC_CAP_SPIRAM) / 1024);
        u8g2.drawStr(4, 57, buf);

        u8g2.sendBuffer();

        if (btnBack()) {
            delay(200);
            return;
        }

        delay(100);
    }
}