diff options
Diffstat (limited to 'gfx_1.cpp')
| -rw-r--r-- | gfx_1.cpp | 210 | 
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; +  } +} |