aboutsummaryrefslogtreecommitdiff
path: root/gfx_1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx_1.cpp')
-rw-r--r--gfx_1.cpp210
1 files changed, 210 insertions, 0 deletions
diff --git a/gfx_1.cpp b/gfx_1.cpp
new file mode 100644
index 0000000..755ab04
--- /dev/null
+++ b/gfx_1.cpp
@@ -0,0 +1,210 @@
+#include "gfx_1.h"
+#include "datetimeHandler.h"
+#include "cpu.h"
+#include "Adafruit_GFX.h"
+#include <Adafruit_ILI9341.h>
+
+bool gfx1_refresh = true;
+static uint8_t s_time_tab[6] = {'0', '0', ':', '0', '0', 0};
+static uint8_t s_localHum = 0, s_localTemp = 0, s_cpuTemp = 255;
+static int16_t s_cpu_usage = 255;
+static uint32_t s_ram_free = 255, s_ram_max = 255;
+
+
+// 5px size
+static void gfx_update_toolbar();
+static void gfx_update_cpu();
+static void gfx_update_mem();
+
+static void writeArray(const char *buf)
+{
+ uint8_t c= 0;
+ while(buf[c] != 0)
+ tft.write(buf[c++]);
+}
+
+
+void gfx1_udpate()
+{
+ // if(!gfx1_refresh)
+ // return ;
+
+ gfx1_refresh = false;
+ gfx_update_toolbar();
+ gfx_update_cpu();
+ gfx_update_mem();
+}
+
+#define LINE_Y_REL 29
+#define TEXT_Y_REL 9
+#define FIRST_TEXT_Y_REL 40
+#define TEXT_ESPACE_Y 35
+#define TEXT_ESPACE_SHORT_Y 25
+
+char buf[20];
+
+void gfx1_layout()
+{
+ uint8_t c= 0;
+
+ tft.fillScreen(ILI9341_BLACK);
+ tft.drawLine(10, 18, 310, 18, ILI9341_YELLOW);
+ tft.setTextColor(ILI9341_YELLOW, ILI9341_BLACK);
+ tft.setCursor(35, 0);
+ tft.setTextSize(1);
+ tft.write('o');
+ tft.setTextSize(2);
+ tft.setCursor(35+8, 2);
+ tft.write('C');
+ //Humidity
+ tft.setCursor(300, 2);
+ tft.write('%');
+
+ // CPU rect
+ tft.setTextSize(2);
+ tft.drawRoundRect(5, 45, 150, 90, 10, ILI9341_DARKCYAN);
+ tft.drawLine(5, 45+LINE_Y_REL, 154, 45+LINE_Y_REL, ILI9341_DARKCYAN);
+ tft.setTextColor(ILI9341_DARKCYAN, ILI9341_BLACK);
+ tft.setCursor(60, 45+TEXT_Y_REL);
+ sprintf(buf, "CPU");
+ writeArray(buf);
+ tft.setCursor(15, 45+FIRST_TEXT_Y_REL);
+ sprintf(buf, "Usage:");
+ writeArray(buf);
+ tft.setCursor(15, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y);
+ sprintf(buf, "Temp:");
+ writeArray(buf);
+ tft.setCursor(15, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y *2);
+
+ // memory
+ tft.drawRoundRect(165, 45, 150, 90, 10, ILI9341_GREEN);
+ tft.drawLine(165, 45+LINE_Y_REL, 314, 45+LINE_Y_REL, ILI9341_GREEN);
+ tft.setTextColor(ILI9341_GREEN, ILI9341_BLACK);
+ tft.setCursor(205, 45+TEXT_Y_REL);
+ sprintf(buf, "MEMORY");
+ writeArray(buf);
+ tft.setCursor(175, 45+FIRST_TEXT_Y_REL);
+ sprintf(buf, "Max:");
+ writeArray(buf);
+ tft.setCursor(175, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y);
+ sprintf(buf, "Free:");
+ writeArray(buf);
+
+ gfx1_refresh = true;
+ gfx1_udpate();
+}
+
+void get_formated_space(int32_t valueMb)
+{
+ int8_t unity = 0;
+ if(valueMb > 999)
+ {
+ valueMb = valueMb / 1024;
+ unity = 1; // GB
+ }
+
+ if(valueMb > 9999)
+ {
+ valueMb = valueMb / 1024;
+ unity = 2; // TB
+ }
+
+ if(unity == 0)
+ sprintf(buf, "%4d MB", valueMb);
+ else if(unity == 1)
+ sprintf(buf, "%4d GB", valueMb);
+ else
+ sprintf(buf, "%4d TB", valueMb);
+}
+
+static void gfx_update_mem()
+{
+ tft.setTextColor(ILI9341_GREEN, ILI9341_BLACK);
+ if(s_ram_max != ramMax)
+ {
+ tft.setCursor(175 + 50, 45+FIRST_TEXT_Y_REL);
+ get_formated_space(ramMax);
+ writeArray(buf);
+ s_ram_free = ramMax;
+ }
+
+ if(s_ram_free != ramFree)
+ {
+ tft.setCursor(175 + 50, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y);
+ get_formated_space(ramFree);
+ writeArray(buf);
+ s_ram_free = ramFree;
+ }
+}
+
+//s_cpu_usage = 0;
+static void gfx_update_cpu()
+{
+ tft.setTextColor(ILI9341_DARKCYAN, ILI9341_BLACK);
+ if(cpuUsageGlobal != s_cpu_usage)
+ {
+ tft.setCursor(15+75, 45+FIRST_TEXT_Y_REL);
+ sprintf(buf, "%3d %%", cpuUsageGlobal);
+ writeArray(buf);
+ s_cpu_usage = cpuUsageGlobal;
+ }
+ if(s_cpuTemp != cpuTempGlobal)
+ {
+ tft.setCursor(15 + 75, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y);
+ sprintf(buf, "%3d ", cpuTempGlobal);
+ writeArray(buf);
+ tft.setCursor(15 + 115, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y - 2);
+ tft.setTextSize(1);
+ tft.write('o');
+ tft.setTextSize(2);
+ tft.setCursor(15 + 115 +8, 45+FIRST_TEXT_Y_REL + TEXT_ESPACE_SHORT_Y);
+ tft.write('C');
+ s_cpuTemp = cpuTempGlobal;
+ }
+}
+
+static void gfx_update_toolbar()
+{
+ uint8_t c= 0;
+ char buf[5];
+ tft.setTextColor(ILI9341_YELLOW, ILI9341_BLACK);
+ //time
+ if(s_time_tab[4] != time_tab[4] || s_time_tab[3] != time_tab[3]
+ || s_time_tab[1] != time_tab[1] || s_time_tab[0] != time_tab[0])
+ {
+ tft.setTextSize(2);
+ tft.setCursor(135, 2);
+
+ while(c < 5)
+ {
+ uint8_t car = time_tab[c];
+ s_time_tab[c] = car;
+ tft.write(car);
+ c++;
+ }
+ }
+
+ //temp
+ if(s_localTemp != localTemp)
+ {
+ tft.setCursor(10, 2);
+ if(localTemp != 255)
+ sprintf(buf, "%2d", localTemp);
+ else
+ sprintf(buf, "--");
+ writeArray(buf);
+ s_localTemp = localTemp;
+ }
+
+ // humidity
+ if(s_localHum != localHum)
+ {
+ tft.setCursor(275, 2);
+ if(localHum != 255)
+ sprintf(buf, "%2d", localHum);
+ else
+ sprintf(buf, "--");
+ writeArray(buf);
+ s_localHum = localHum;
+ }
+}