diff --git a/3Dfiles/ESP32 Marauder V6 Backplate_external.stl b/3Dfiles/ESP32 Marauder V6 Backplate_external.stl new file mode 100644 index 0000000..7d9daab Binary files /dev/null and b/3Dfiles/ESP32 Marauder V6 Backplate_external.stl differ diff --git a/3Dfiles/ESP32 Marauder V6 Backplate_internal.stl b/3Dfiles/ESP32 Marauder V6 Backplate_internal.stl new file mode 100644 index 0000000..16040df Binary files /dev/null and b/3Dfiles/ESP32 Marauder V6 Backplate_internal.stl differ diff --git a/esp32_marauder/Assets.h b/esp32_marauder/Assets.h index 1de52be..16c2a9a 100644 --- a/esp32_marauder/Assets.h +++ b/esp32_marauder/Assets.h @@ -135,7 +135,13 @@ PROGMEM static const unsigned char menu_icons[][66] = { 0xFF, 0xCF, 0x3D, 0xFF, 0xE7, 0x3F, 0xFF, 0xF3, 0x3F, 0xCF, 0xF9, 0x3F, 0xB7, 0xFC, 0x3F, 0x77, 0xFE, 0x3F, 0xF7, 0xFE, 0x3F, 0xEF, 0xFD, 0x3F, 0xDF, 0xFB, 0x3F, 0xBF, 0xFB, 0x3F, 0x7F, 0xFC, 0x3F, 0xFF, 0xFF, 0x3F, - 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F} + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F}, + {0xFF, 0xFF, 0x3F, 0xFC, 0x9F, 0xF9, 0xDF, 0xFB, 0xDF, 0xFB, 0x1F, 0xF8, // Battery: 22 + 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, + 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF0, 0x07, 0xE0, // SD: 23 + 0x67, 0xE7, 0x97, 0xE9, 0x17, 0xE9, 0x67, 0xE9, 0x87, 0xE9, 0x97, 0xE9, + 0x67, 0xE7, 0x07, 0xE0, 0x07, 0xE0, 0xFF, 0xFF} }; diff --git a/esp32_marauder/Display.cpp b/esp32_marauder/Display.cpp index b679b20..2407a39 100644 --- a/esp32_marauder/Display.cpp +++ b/esp32_marauder/Display.cpp @@ -646,12 +646,12 @@ void Display::updateBanner(String msg) this->buildBanner(msg, current_banner_pos); - this->img.pushSprite(0, 0); + this->img.pushSprite(0, STATUS_BAR_WIDTH); current_banner_pos--; if (current_banner_pos <= 0) - current_banner_pos = SCREEN_WIDTH; + current_banner_pos = SCREEN_WIDTH + 2; } diff --git a/esp32_marauder/Display.h b/esp32_marauder/Display.h index 1eaa900..9d4003f 100644 --- a/esp32_marauder/Display.h +++ b/esp32_marauder/Display.h @@ -13,8 +13,8 @@ #include -//#define TFT_SHIELD -#define TFT_DIY +#define TFT_SHIELD +//#define TFT_DIY #define SCREEN_WIDTH 240 #define SCREEN_HEIGHT 320 @@ -32,6 +32,9 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_ARRAY_LEN 7 +#define STATUS_BAR_WIDTH 16 + +#define STATUSBAR_COLOR 0x4A49 class Display @@ -56,7 +59,7 @@ class Display TFT_eSPI tft = TFT_eSPI(); TFT_eSprite img = TFT_eSprite(&tft); TFT_eSPI_Button key[BUTTON_ARRAY_LEN]; - String version_number = "v0.6.4"; + String version_number = "v0.6.5"; bool printing = false; bool loading = false; diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 6dc46f5..4b1965b 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -17,6 +17,10 @@ void MenuFunctions::main() this->orientDisplay(); wifi_scan_obj.orient_display = false; } + if ((display_obj.current_banner_pos <= 0) || (display_obj.current_banner_pos == SCREEN_WIDTH)) + { + this->drawStatusBar(); + } display_obj.updateBanner(current_menu->name); } @@ -143,6 +147,45 @@ void MenuFunctions::main() y = -1; } +void MenuFunctions::drawStatusBar() +{ + display_obj.tft.fillRect(0, 0, 240, STATUS_BAR_WIDTH, STATUSBAR_COLOR); + //display_obj.tft.fillRect(0, STATUS_BAR_WIDTH + 1, 240, 1, TFT_DARKGREY); + display_obj.tft.setTextColor(TFT_WHITE, STATUSBAR_COLOR); + //display_obj.tft.setTextSize(2); + + uint16_t the_color; + + if ((String)battery_obj.battery_level != "25") + the_color = TFT_GREEN; + else + the_color = TFT_RED; + + display_obj.tft.setCursor(0, 1); + display_obj.tft.drawXBitmap(186, + 0, + menu_icons[STATUS_BAT], + 16, + 16, + STATUSBAR_COLOR, + the_color); + display_obj.tft.drawString((String)battery_obj.battery_level + "%", 200, 1, 2); + + if (sd_obj.supported) + the_color = TFT_GREEN; + else + the_color = TFT_RED; + + display_obj.tft.drawXBitmap(170, + 0, + menu_icons[STATUS_SD], + 16, + 16, + STATUSBAR_COLOR, + the_color); + //display_obj.tft.print((String)battery_obj.battery_level + "%"); +} + void MenuFunctions::orientDisplay() { display_obj.tft.init(); @@ -382,6 +425,7 @@ void MenuFunctions::displayCurrentMenu() Serial.println("Displaying current menu..."); display_obj.clearScreen(); display_obj.tft.setTextColor(TFT_LIGHTGREY, TFT_DARKGREY); + this->drawStatusBar(); //display_obj.tft.fillRect(0,0,240,16, TFT_DARKGREY); //display_obj.tft.drawCentreString(" ESP32 Marauder ",120,0,2); //Serial.println("Getting size..."); diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index d96d103..bdde05a 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -3,11 +3,15 @@ #include "WiFiScan.h" #include "Display.h" +#include "BatteryInterface.h" +#include "SDInterface.h" #include "Web.h" extern Display display_obj; extern WiFiScan wifi_scan_obj; extern Web web_obj; +extern SDInterface sd_obj; +extern BatteryInterface battery_obj; // Keypad start position, key sizes and spacing #define KEY_X 120 // Centre of key @@ -47,6 +51,8 @@ extern Web web_obj; #define SD_UPDATE 19 #define WEB_UPDATE 20 #define EAPOL 21 +#define STATUS_BAT 22 +#define STATUS_SD 23 struct Menu; @@ -107,6 +113,7 @@ class MenuFunctions //TFT_eSPI_Button key[BUTTON_ARRAY_LEN]; void addNodes(Menu* menu, String name, uint16_t color, Menu* child, int place, std::function callable); + void drawStatusBar(); void showMenuList(Menu* menu, int layer); void orientDisplay(); diff --git a/pictures/icons/battery_16.bmp b/pictures/icons/battery_16.bmp new file mode 100644 index 0000000..4444851 Binary files /dev/null and b/pictures/icons/battery_16.bmp differ diff --git a/pictures/icons/sd_16.bmp b/pictures/icons/sd_16.bmp new file mode 100644 index 0000000..7b982a4 Binary files /dev/null and b/pictures/icons/sd_16.bmp differ diff --git a/pictures/xbm/battery_16.XBM b/pictures/xbm/battery_16.XBM new file mode 100644 index 0000000..7542646 --- /dev/null +++ b/pictures/xbm/battery_16.XBM @@ -0,0 +1,6 @@ +#define 1589480361777_width 16 +#define 1589480361777_height 16 +static char 1589480361777_bits[] = { + 0xFF, 0xFF, 0x3F, 0xFC, 0x9F, 0xF9, 0xDF, 0xFB, 0xDF, 0xFB, 0x1F, 0xF8, + 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, + 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, }; diff --git a/pictures/xbm/sd_16.XBM b/pictures/xbm/sd_16.XBM new file mode 100644 index 0000000..f375079 --- /dev/null +++ b/pictures/xbm/sd_16.XBM @@ -0,0 +1,6 @@ +#define 1589480446253_width 16 +#define 1589480446253_height 16 +static char 1589480446253_bits[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF0, 0x07, 0xE0, + 0x67, 0xE7, 0x97, 0xE9, 0x17, 0xE9, 0x67, 0xE9, 0x87, 0xE9, 0x97, 0xE9, + 0x67, 0xE7, 0x07, 0xE0, 0x07, 0xE0, 0xFF, 0xFF, };