From 8c8b4fd831caf67f0f906925401293cb7274cb49 Mon Sep 17 00:00:00 2001 From: KemoNine Date: Tue, 8 Sep 2020 21:53:59 -0400 Subject: [PATCH] Convert UI to GUI Slice and cleanup some small stuff along the way --- .gitignore | 4 +- .vscode/settings.json | 15 + serial_debugger.ino | 170 +- serial_debugger.ino.beta | 203 + serial_debugger.ino.orig | 218 + serial_debugger.prj | Bin 0 -> 2487 bytes serial_debugger_GSLC.h | 172 + src/guislice/GUIslice.c | 5140 ++++++++++++++++++++ src/guislice/GUIslice.h | 3801 +++++++++++++++ src/guislice/GUIslice_config.h | 218 + src/guislice/GUIslice_config_ard.h | 526 ++ src/guislice/GUIslice_config_linux.h | 191 + src/guislice/GUIslice_drv.h | 66 + src/guislice/GUIslice_drv_adagfx.cpp | 3063 ++++++++++++ src/guislice/GUIslice_drv_adagfx.h | 757 +++ src/guislice/GUIslice_drv_m5stack.cpp | 1071 ++++ src/guislice/GUIslice_drv_m5stack.h | 656 +++ src/guislice/GUIslice_drv_sdl.c | 1470 ++++++ src/guislice/GUIslice_drv_sdl.h | 722 +++ src/guislice/GUIslice_drv_tft_espi.cpp | 2188 +++++++++ src/guislice/GUIslice_drv_tft_espi.h | 755 +++ src/guislice/GUIslice_drv_utft.cpp | 1361 ++++++ src/guislice/GUIslice_drv_utft.h | 672 +++ src/guislice/GUIslice_ex.h | 52 + src/guislice/GUIslice_th.cpp | 119 + src/guislice/GUIslice_th.h | 71 + src/guislice/GUIslice_th_XPT2046.h | 52 + src/guislice/GUIslice_version.h | 42 + src/guislice/NotoMono8pt7b.h | 185 + src/guislice/XCheckbox.c | 517 ++ src/guislice/XCheckbox.h | 290 ++ src/guislice/XGauge.c | 699 +++ src/guislice/XGauge.h | 394 ++ src/guislice/XGlowball.c | 348 ++ src/guislice/XGlowball.h | 136 + src/guislice/XGraph.c | 366 ++ src/guislice/XGraph.h | 186 + src/guislice/XKeyPad.c | 714 +++ src/guislice/XKeyPad.h | 409 ++ src/guislice/XKeyPad_Alpha.c | 204 + src/guislice/XKeyPad_Alpha.h | 100 + src/guislice/XKeyPad_Num.c | 206 + src/guislice/XKeyPad_Num.h | 100 + src/guislice/XListbox.c | 982 ++++ src/guislice/XListbox.h | 329 ++ src/guislice/XProgress.c | 365 ++ src/guislice/XProgress.h | 287 ++ src/guislice/XRadial.c | 363 ++ src/guislice/XRadial.h | 327 ++ src/guislice/XRamp.c | 300 ++ src/guislice/XRamp.h | 264 + src/guislice/XRingGauge.c | 413 ++ src/guislice/XRingGauge.h | 268 + src/guislice/XSeekbar.c | 530 ++ src/guislice/XSeekbar.h | 336 ++ src/guislice/XSelNum.c | 384 ++ src/guislice/XSelNum.h | 177 + src/guislice/XSlider.c | 478 ++ src/guislice/XSlider.h | 315 ++ src/guislice/XSpinner.c | 425 ++ src/guislice/XSpinner.h | 210 + src/guislice/XTemplate.c | 307 ++ src/guislice/XTemplate.h | 128 + src/guislice/XTextbox.c | 663 +++ src/guislice/XTextbox.h | 221 + src/guislice/XTogglebtn.c | 453 ++ src/guislice/XTogglebtn.h | 282 ++ src/guislice/ard-adagfx-ili9341-notouch.h | 207 + src/guislice/ard-adagfx-ili9341-stmpe610.h | 246 + 69 files changed, 37841 insertions(+), 48 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 serial_debugger.ino.beta create mode 100644 serial_debugger.ino.orig create mode 100644 serial_debugger.prj create mode 100644 serial_debugger_GSLC.h create mode 100644 src/guislice/GUIslice.c create mode 100644 src/guislice/GUIslice.h create mode 100644 src/guislice/GUIslice_config.h create mode 100644 src/guislice/GUIslice_config_ard.h create mode 100644 src/guislice/GUIslice_config_linux.h create mode 100644 src/guislice/GUIslice_drv.h create mode 100644 src/guislice/GUIslice_drv_adagfx.cpp create mode 100644 src/guislice/GUIslice_drv_adagfx.h create mode 100644 src/guislice/GUIslice_drv_m5stack.cpp create mode 100644 src/guislice/GUIslice_drv_m5stack.h create mode 100644 src/guislice/GUIslice_drv_sdl.c create mode 100644 src/guislice/GUIslice_drv_sdl.h create mode 100644 src/guislice/GUIslice_drv_tft_espi.cpp create mode 100644 src/guislice/GUIslice_drv_tft_espi.h create mode 100644 src/guislice/GUIslice_drv_utft.cpp create mode 100644 src/guislice/GUIslice_drv_utft.h create mode 100644 src/guislice/GUIslice_ex.h create mode 100644 src/guislice/GUIslice_th.cpp create mode 100644 src/guislice/GUIslice_th.h create mode 100644 src/guislice/GUIslice_th_XPT2046.h create mode 100644 src/guislice/GUIslice_version.h create mode 100644 src/guislice/NotoMono8pt7b.h create mode 100644 src/guislice/XCheckbox.c create mode 100644 src/guislice/XCheckbox.h create mode 100644 src/guislice/XGauge.c create mode 100644 src/guislice/XGauge.h create mode 100644 src/guislice/XGlowball.c create mode 100644 src/guislice/XGlowball.h create mode 100644 src/guislice/XGraph.c create mode 100644 src/guislice/XGraph.h create mode 100644 src/guislice/XKeyPad.c create mode 100644 src/guislice/XKeyPad.h create mode 100644 src/guislice/XKeyPad_Alpha.c create mode 100644 src/guislice/XKeyPad_Alpha.h create mode 100644 src/guislice/XKeyPad_Num.c create mode 100644 src/guislice/XKeyPad_Num.h create mode 100644 src/guislice/XListbox.c create mode 100644 src/guislice/XListbox.h create mode 100644 src/guislice/XProgress.c create mode 100644 src/guislice/XProgress.h create mode 100644 src/guislice/XRadial.c create mode 100644 src/guislice/XRadial.h create mode 100644 src/guislice/XRamp.c create mode 100644 src/guislice/XRamp.h create mode 100644 src/guislice/XRingGauge.c create mode 100644 src/guislice/XRingGauge.h create mode 100644 src/guislice/XSeekbar.c create mode 100644 src/guislice/XSeekbar.h create mode 100644 src/guislice/XSelNum.c create mode 100644 src/guislice/XSelNum.h create mode 100644 src/guislice/XSlider.c create mode 100644 src/guislice/XSlider.h create mode 100644 src/guislice/XSpinner.c create mode 100644 src/guislice/XSpinner.h create mode 100644 src/guislice/XTemplate.c create mode 100644 src/guislice/XTemplate.h create mode 100644 src/guislice/XTextbox.c create mode 100644 src/guislice/XTextbox.h create mode 100644 src/guislice/XTogglebtn.c create mode 100644 src/guislice/XTogglebtn.h create mode 100644 src/guislice/ard-adagfx-ili9341-notouch.h create mode 100644 src/guislice/ard-adagfx-ili9341-stmpe610.h diff --git a/.gitignore b/.gitignore index d163863..c326afe 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -build/ \ No newline at end of file +build/ +serial_debugger*.bak +gui_backup/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1f5cc00 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "files.associations": { + "xtemplate.h": "c", + "guislice_drv.h": "c", + "xradial.h": "c", + "*.tpp": "cpp", + "array": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "string_view": "cpp", + "initializer_list": "cpp" + } +} \ No newline at end of file diff --git a/serial_debugger.ino b/serial_debugger.ino index 1ed617c..3e7a71b 100644 --- a/serial_debugger.ino +++ b/serial_debugger.ino @@ -1,3 +1,18 @@ +// +// FILE: [serial_debugger.ino] +// Created by GUIslice Builder version: [0.15.b004] +// +// GUIslice Builder Generated File +// +// For the latest guides, updates and support view: +// https://github.com/ImpulseAdventure/GUIslice +// +// + +// ------------------------------------------------ +// Headers to include +// ------------------------------------------------ +// // Varous system includes #include @@ -8,22 +23,29 @@ #include #include -// Debugging via serial monitor (don't turn this on unless you're hacking on the firmware code) -#define DEBUG true +// Various local includes +#include "serial_debugger_GSLC.h" + +// + +// ------------------------------------------------ +// Program Globals +// ------------------------------------------------ // Battery level measurement #define VBATPIN A6 float measuredVBat; -float batteryPercent; +int batteryPercent; // TFT Setup #define TFT_CS 9 #define TFT_DC 10 Adafruit_ILI9341 tft(TFT_CS, TFT_DC); #include -#define CHARS_HORIZONTAL 28 -#define CHARS_ROWS 13 -CircularBuffer textBuffer; +#define CHARS_HORIZONTAL 29 +#define CHARS_ROWS 11 +#define CHARS_TOTAL CHARS_HORIZONTAL * CHARS_ROWS +CircularBuffer textBuffer; // Keyboard BBQ10Keyboard keyboard; @@ -44,20 +66,48 @@ BBQ10Keyboard keyboard; Adafruit_NeoPixel pixels_board(PIXELS_NUM_BOARD, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixels_wing(PIXELS_NUM_WING, PIXELS_WING_PIN, NEO_GRB + NEO_KHZ800); +// GUI state globals +bool textChanged = false; + // Various loop handlers void handlerKeyboard(); void handlerBatteryLevel(); +void processRingBuffer(); -// UI screens -void screenClear(); +// Save some element references for direct access +// +gslc_tsElemRef* m_pElemBatteryLevel= NULL; +gslc_tsElemRef* m_pElemStatusText = NULL; +gslc_tsElemRef* m_pElemText = NULL; +// -// Color conversion (RGB888 -> RGB565 used by Adafruit GFX) -uint16_t RGB565(uint8_t r, uint8_t g, uint8_t b) { - return ((r & 0b11111000) << 8) | ((g & 0b11111100) << 3) | (b >> 3); -} +// Define debug message function +static int16_t DebugOut(char ch) { if (ch == (char)'\n') Serial.println(""); else Serial.write(ch); return 0; } + +// ------------------------------------------------ +// Callback Methods +// ------------------------------------------------ +//