From 3fefcf7e34f6414474e6f78dd806b25dc33afc57 Mon Sep 17 00:00:00 2001 From: KemoNine Date: Sun, 13 Sep 2020 00:35:41 -0400 Subject: [PATCH] Start work on dedicated sd card formatter program --- hardware/sd_card_formatter/.gitignore | 5 + hardware/sd_card_formatter/README.md | 7 + hardware/sd_card_formatter/build.ps1 | 1 + hardware/sd_card_formatter/make.ps1 | 8 + .../sd_card_formatter/sd_card_formatter.ino | 804 +++ .../sd_card_formatter/sd_card_formatter.prj | Bin 0 -> 6244 bytes .../sd_card_formatter_GSLC.h | 255 + .../sd_card_formatter/src/SdFat/BlockDriver.h | 40 + .../src/SdFat/FatLib/ArduinoFiles.h | 249 + .../src/SdFat/FatLib/ArduinoStream.h | 153 + .../src/SdFat/FatLib/BaseBlockDriver.h | 80 + .../src/SdFat/FatLib/FatApiConstants.h | 87 + .../src/SdFat/FatLib/FatFile.cpp | 1531 +++++ .../src/SdFat/FatLib/FatFile.h | 1032 ++++ .../src/SdFat/FatLib/FatFileLFN.cpp | 685 +++ .../src/SdFat/FatLib/FatFilePrint.cpp | 267 + .../src/SdFat/FatLib/FatFileSFN.cpp | 278 + .../src/SdFat/FatLib/FatFileSystem.h | 332 ++ .../src/SdFat/FatLib/FatLib.h | 36 + .../src/SdFat/FatLib/FatLibConfig.h | 146 + .../src/SdFat/FatLib/FatStructs.h | 882 +++ .../src/SdFat/FatLib/FatVolume.cpp | 625 ++ .../src/SdFat/FatLib/FatVolume.h | 396 ++ .../src/SdFat/FatLib/FmtNumber.cpp | 460 ++ .../src/SdFat/FatLib/FmtNumber.h | 43 + .../src/SdFat/FatLib/StdioStream.cpp | 508 ++ .../src/SdFat/FatLib/StdioStream.h | 667 +++ .../src/SdFat/FatLib/bufstream.h | 172 + .../src/SdFat/FatLib/fstream.cpp | 172 + .../src/SdFat/FatLib/fstream.h | 320 + .../sd_card_formatter/src/SdFat/FatLib/ios.h | 423 ++ .../src/SdFat/FatLib/iostream.h | 158 + .../src/SdFat/FatLib/istream.cpp | 396 ++ .../src/SdFat/FatLib/istream.h | 384 ++ .../src/SdFat/FatLib/ostream.cpp | 196 + .../src/SdFat/FatLib/ostream.h | 276 + .../sd_card_formatter/src/SdFat/FreeStack.h | 61 + .../src/SdFat/MinimumSerial.cpp | 71 + .../src/SdFat/MinimumSerial.h | 67 + .../src/SdFat/SdCard/SdInfo.h | 485 ++ .../src/SdFat/SdCard/SdSpiCard.cpp | 802 +++ .../src/SdFat/SdCard/SdSpiCard.h | 379 ++ .../src/SdFat/SdCard/SdSpiCardEX.cpp | 94 + .../src/SdFat/SdCard/SdioCard.h | 303 + .../src/SdFat/SdCard/SdioCardEX.cpp | 108 + .../src/SdFat/SdCard/SdioTeensy.cpp | 800 +++ hardware/sd_card_formatter/src/SdFat/SdFat.h | 512 ++ .../sd_card_formatter/src/SdFat/SdFatConfig.h | 231 + .../src/SdFat/SpiDriver/DigitalPin.h | 386 ++ .../src/SdFat/SpiDriver/SdSpiBaseDriver.h | 79 + .../src/SdFat/SpiDriver/SdSpiDriver.h | 438 ++ .../src/SdFat/SpiDriver/SdSpiESP8266.cpp | 104 + .../src/SdFat/SpiDriver/SdSpiParticle.cpp | 102 + .../src/SdFat/SpiDriver/SdSpiSAM3X.cpp | 218 + .../src/SdFat/SpiDriver/SdSpiSTM32.cpp | 105 + .../src/SdFat/SpiDriver/SdSpiTeensy3.cpp | 233 + .../src/SdFat/SpiDriver/SoftSPI.h | 167 + .../boards/AvrDevelopersGpioPinMap.h | 37 + .../SpiDriver/boards/BobuinoGpioPinMap.h | 37 + .../src/SdFat/SpiDriver/boards/GpioPinMap.h | 45 + .../SpiDriver/boards/LeonardoGpioPinMap.h | 35 + .../SdFat/SpiDriver/boards/MegaGpioPinMap.h | 75 + .../boards/SleepingBeautyGpioPinMap.h | 37 + .../SpiDriver/boards/Standard1284GpioPinMap.h | 37 + .../SpiDriver/boards/Teensy2GpioPinMap.h | 30 + .../SpiDriver/boards/Teensy2ppGpioPinMap.h | 51 + .../SdFat/SpiDriver/boards/UnoGpioPinMap.h | 25 + .../sd_card_formatter/src/SdFat/SysCall.h | 88 + hardware/sd_card_formatter/src/SdFat/sdios.h | 33 + .../sd_card_formatter/src/guislice/GUIslice.c | 5140 +++++++++++++++++ .../sd_card_formatter/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 | 3059 ++++++++++ .../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/NotoMono10pt7b.h | 219 + .../src/guislice/NotoMono12pt7b.h | 265 + .../src/guislice/NotoMono16pt7b.h | 382 ++ .../src/guislice/NotoMono8pt7b.h | 185 + .../src/guislice/XCheckbox.c | 517 ++ .../src/guislice/XCheckbox.h | 290 + .../sd_card_formatter/src/guislice/XGauge.c | 699 +++ .../sd_card_formatter/src/guislice/XGauge.h | 394 ++ .../src/guislice/XGlowball.c | 348 ++ .../src/guislice/XGlowball.h | 136 + .../sd_card_formatter/src/guislice/XGraph.c | 366 ++ .../sd_card_formatter/src/guislice/XGraph.h | 186 + .../sd_card_formatter/src/guislice/XKeyPad.c | 714 +++ .../sd_card_formatter/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 + .../sd_card_formatter/src/guislice/XListbox.c | 982 ++++ .../sd_card_formatter/src/guislice/XListbox.h | 329 ++ .../src/guislice/XProgress.c | 365 ++ .../src/guislice/XProgress.h | 287 + .../sd_card_formatter/src/guislice/XRadial.c | 363 ++ .../sd_card_formatter/src/guislice/XRadial.h | 327 ++ .../sd_card_formatter/src/guislice/XRamp.c | 300 + .../sd_card_formatter/src/guislice/XRamp.h | 264 + .../src/guislice/XRingGauge.c | 413 ++ .../src/guislice/XRingGauge.h | 268 + .../sd_card_formatter/src/guislice/XSeekbar.c | 530 ++ .../sd_card_formatter/src/guislice/XSeekbar.h | 336 ++ .../sd_card_formatter/src/guislice/XSelNum.c | 384 ++ .../sd_card_formatter/src/guislice/XSelNum.h | 177 + .../sd_card_formatter/src/guislice/XSlider.c | 478 ++ .../sd_card_formatter/src/guislice/XSlider.h | 315 + .../sd_card_formatter/src/guislice/XSpinner.c | 425 ++ .../sd_card_formatter/src/guislice/XSpinner.h | 210 + .../src/guislice/XTemplate.c | 307 + .../src/guislice/XTemplate.h | 128 + .../sd_card_formatter/src/guislice/XTextbox.c | 663 +++ .../sd_card_formatter/src/guislice/XTextbox.h | 221 + .../src/guislice/XTogglebtn.c | 453 ++ .../src/guislice/XTogglebtn.h | 282 + .../src/guislice/ard-adagfx-ili9341-notouch.h | 207 + .../guislice/ard-adagfx-ili9341-stmpe610.h | 246 + hardware/sd_card_formatter/upload.ps1 | 4 + 135 files changed, 56322 insertions(+) create mode 100644 hardware/sd_card_formatter/.gitignore create mode 100644 hardware/sd_card_formatter/README.md create mode 100644 hardware/sd_card_formatter/build.ps1 create mode 100644 hardware/sd_card_formatter/make.ps1 create mode 100644 hardware/sd_card_formatter/sd_card_formatter.ino create mode 100644 hardware/sd_card_formatter/sd_card_formatter.prj create mode 100644 hardware/sd_card_formatter/sd_card_formatter_GSLC.h create mode 100644 hardware/sd_card_formatter/src/SdFat/BlockDriver.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/ArduinoFiles.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/ArduinoStream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/BaseBlockDriver.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatApiConstants.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatFile.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatFile.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatFileLFN.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatFilePrint.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatFileSFN.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatFileSystem.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatLib.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatLibConfig.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatStructs.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatVolume.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FatVolume.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FmtNumber.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/FmtNumber.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/StdioStream.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/StdioStream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/bufstream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/fstream.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/fstream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/ios.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/iostream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/istream.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/istream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/ostream.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/FatLib/ostream.h create mode 100644 hardware/sd_card_formatter/src/SdFat/FreeStack.h create mode 100644 hardware/sd_card_formatter/src/SdFat/MinimumSerial.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/MinimumSerial.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdInfo.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdSpiCard.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdSpiCard.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdSpiCardEX.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdioCard.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdioCardEX.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SdCard/SdioTeensy.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SdFat.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SdFatConfig.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/DigitalPin.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiBaseDriver.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiDriver.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiESP8266.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiParticle.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiSAM3X.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiSTM32.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SdSpiTeensy3.cpp create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/SoftSPI.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/AvrDevelopersGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/BobuinoGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/GpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/LeonardoGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/MegaGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/SleepingBeautyGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/Standard1284GpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/Teensy2GpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/Teensy2ppGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SpiDriver/boards/UnoGpioPinMap.h create mode 100644 hardware/sd_card_formatter/src/SdFat/SysCall.h create mode 100644 hardware/sd_card_formatter/src/SdFat/sdios.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice.c create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_config.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_config_ard.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_config_linux.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_adagfx.cpp create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_adagfx.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_m5stack.cpp create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_m5stack.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_sdl.c create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_sdl.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_tft_espi.cpp create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_tft_espi.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_utft.cpp create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_drv_utft.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_ex.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_th.cpp create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_th.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_th_XPT2046.h create mode 100644 hardware/sd_card_formatter/src/guislice/GUIslice_version.h create mode 100644 hardware/sd_card_formatter/src/guislice/NotoMono10pt7b.h create mode 100644 hardware/sd_card_formatter/src/guislice/NotoMono12pt7b.h create mode 100644 hardware/sd_card_formatter/src/guislice/NotoMono16pt7b.h create mode 100644 hardware/sd_card_formatter/src/guislice/NotoMono8pt7b.h create mode 100644 hardware/sd_card_formatter/src/guislice/XCheckbox.c create mode 100644 hardware/sd_card_formatter/src/guislice/XCheckbox.h create mode 100644 hardware/sd_card_formatter/src/guislice/XGauge.c create mode 100644 hardware/sd_card_formatter/src/guislice/XGauge.h create mode 100644 hardware/sd_card_formatter/src/guislice/XGlowball.c create mode 100644 hardware/sd_card_formatter/src/guislice/XGlowball.h create mode 100644 hardware/sd_card_formatter/src/guislice/XGraph.c create mode 100644 hardware/sd_card_formatter/src/guislice/XGraph.h create mode 100644 hardware/sd_card_formatter/src/guislice/XKeyPad.c create mode 100644 hardware/sd_card_formatter/src/guislice/XKeyPad.h create mode 100644 hardware/sd_card_formatter/src/guislice/XKeyPad_Alpha.c create mode 100644 hardware/sd_card_formatter/src/guislice/XKeyPad_Alpha.h create mode 100644 hardware/sd_card_formatter/src/guislice/XKeyPad_Num.c create mode 100644 hardware/sd_card_formatter/src/guislice/XKeyPad_Num.h create mode 100644 hardware/sd_card_formatter/src/guislice/XListbox.c create mode 100644 hardware/sd_card_formatter/src/guislice/XListbox.h create mode 100644 hardware/sd_card_formatter/src/guislice/XProgress.c create mode 100644 hardware/sd_card_formatter/src/guislice/XProgress.h create mode 100644 hardware/sd_card_formatter/src/guislice/XRadial.c create mode 100644 hardware/sd_card_formatter/src/guislice/XRadial.h create mode 100644 hardware/sd_card_formatter/src/guislice/XRamp.c create mode 100644 hardware/sd_card_formatter/src/guislice/XRamp.h create mode 100644 hardware/sd_card_formatter/src/guislice/XRingGauge.c create mode 100644 hardware/sd_card_formatter/src/guislice/XRingGauge.h create mode 100644 hardware/sd_card_formatter/src/guislice/XSeekbar.c create mode 100644 hardware/sd_card_formatter/src/guislice/XSeekbar.h create mode 100644 hardware/sd_card_formatter/src/guislice/XSelNum.c create mode 100644 hardware/sd_card_formatter/src/guislice/XSelNum.h create mode 100644 hardware/sd_card_formatter/src/guislice/XSlider.c create mode 100644 hardware/sd_card_formatter/src/guislice/XSlider.h create mode 100644 hardware/sd_card_formatter/src/guislice/XSpinner.c create mode 100644 hardware/sd_card_formatter/src/guislice/XSpinner.h create mode 100644 hardware/sd_card_formatter/src/guislice/XTemplate.c create mode 100644 hardware/sd_card_formatter/src/guislice/XTemplate.h create mode 100644 hardware/sd_card_formatter/src/guislice/XTextbox.c create mode 100644 hardware/sd_card_formatter/src/guislice/XTextbox.h create mode 100644 hardware/sd_card_formatter/src/guislice/XTogglebtn.c create mode 100644 hardware/sd_card_formatter/src/guislice/XTogglebtn.h create mode 100644 hardware/sd_card_formatter/src/guislice/ard-adagfx-ili9341-notouch.h create mode 100644 hardware/sd_card_formatter/src/guislice/ard-adagfx-ili9341-stmpe610.h create mode 100644 hardware/sd_card_formatter/upload.ps1 diff --git a/hardware/sd_card_formatter/.gitignore b/hardware/sd_card_formatter/.gitignore new file mode 100644 index 0000000..aed9464 --- /dev/null +++ b/hardware/sd_card_formatter/.gitignore @@ -0,0 +1,5 @@ +build/ +sd_card_formatter*.bak +gui_backup/ +sd_card_formatter.ino.beta +sd_card_formatter.ino.orig \ No newline at end of file diff --git a/hardware/sd_card_formatter/README.md b/hardware/sd_card_formatter/README.md new file mode 100644 index 0000000..092e6a9 --- /dev/null +++ b/hardware/sd_card_formatter/README.md @@ -0,0 +1,7 @@ +# SD Card Formatter + +A simple utility that will **FORMAT** the inserted SD Card. + +**YOU MUST USE THIS TOOL TO INITIALIZE AN SD CARD 100% SAFELY** + +*This utility is designed to be run from the ```_controller``` build!* diff --git a/hardware/sd_card_formatter/build.ps1 b/hardware/sd_card_formatter/build.ps1 new file mode 100644 index 0000000..8ad4cb6 --- /dev/null +++ b/hardware/sd_card_formatter/build.ps1 @@ -0,0 +1 @@ +arduino-cli compile --log-level=warn --fqbn adafruit:nrf52:feather52840 sd_card_formatter.ino diff --git a/hardware/sd_card_formatter/make.ps1 b/hardware/sd_card_formatter/make.ps1 new file mode 100644 index 0000000..fc2a375 --- /dev/null +++ b/hardware/sd_card_formatter/make.ps1 @@ -0,0 +1,8 @@ +# Ensure this script fails if either build or upload fails +$ErrorActionPreference = "Stop" + +# Ensure we actually build before upload (common mistake) +& .\build.ps1 + +# Upload to board +& .\upload.ps1 diff --git a/hardware/sd_card_formatter/sd_card_formatter.ino b/hardware/sd_card_formatter/sd_card_formatter.ino new file mode 100644 index 0000000..210df58 --- /dev/null +++ b/hardware/sd_card_formatter/sd_card_formatter.ino @@ -0,0 +1,804 @@ +// +// FILE: [sd_card_formatter.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 + +// Various library includes +#include +#include +#include +#include +#include + +// Various local includes +#include "sd_card_formatter_GSLC.h" + +// + +// ------------------------------------------------ +// Program Globals +// ------------------------------------------------ + +// Battery level measurement +#define VBATPIN A6 +float measuredVBat; +int batteryPercent; + +// TFT Setup +#define TFT_CS 9 +#define TFT_DC 10 +Adafruit_ILI9341 tft(TFT_CS, TFT_DC); + +// Keyboard +BBQ10Keyboard keyboard; +#define KBD_BTN_1 0x06 +#define KBD_BTN_2 0x11 +#define KBD_BTN_3 0x07 +#define KBD_BTN_4 0x12 +#define KBD_SW_UP 0x01 +#define KBD_SW_DN 0x02 +#define KBD_SW_LF 0x03 +#define KBD_SW_RT 0x04 +#define KBD_SW_OK 0x05 +CircularBuffer uiKeyBuffer; + +// NeoPixels +#define PIXELS_NUM_BOARD 1 +#define PIXELS_NUM_WING 1 +#define PIXELS_WING_PIN 11 +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 popupOnScreen = false; + +// Various loop handlers +void handlerKeyboard(); +void handlerBatteryLevel(); +void eraseAndFormatCard(); + +// Save some element references for direct access +// +gslc_tsElemRef* m_pElemBatteryLevel= NULL; +gslc_tsElemRef* m_pElemBtSDNo = NULL; +gslc_tsElemRef* m_pElemBtSDYes = NULL; +gslc_tsElemRef* m_pElemSDInfo = NULL; +gslc_tsElemRef* m_pElemStatusText = NULL; +// + +// Keyboard map related +#define MAX_INPUT_MAP 5 +gslc_tsInputMap m_asInputMap[MAX_INPUT_MAP]; + +// Define debug message function +static int16_t DebugOut(char ch) { if (ch == (char)'\n') Serial.println(""); else Serial.write(ch); return 0; } + +// ------------------------------------------------ +// Callback Methods +// ------------------------------------------------ +// Common Button callback +bool CbBtnCommon(void* pvGui,void *pvElemRef,gslc_teTouch eTouch,int16_t nX,int16_t nY) +{ + // Typecast the parameters to match the GUI and element types + gslc_tsGui* pGui = (gslc_tsGui*)(pvGui); + gslc_tsElemRef* pElemRef = (gslc_tsElemRef*)(pvElemRef); + gslc_tsElem* pElem = gslc_GetElemFromRef(pGui,pElemRef); + + if ( eTouch == GSLC_TOUCH_UP_IN ) { + // From the element's ID we can determine which button was pressed. + switch (pElem->nId) { +//