From ccdb844fc2fd89e95f04b9292f5ccb227f23b53a Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 17:28:49 -0400 Subject: [PATCH 01/10] Update .gitmodules fix gitmodule sources, for some reason did not want to properly clone submodules... --- .gitmodules | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index ce11f59..729d628 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,24 +1,24 @@ [submodule "esp32_marauder/libraries/lv_arduino"] path = esp32_marauder/libraries/lv_arduino - url = git@github.com:lvgl/lv_arduino.git + url = https://github.com/lvgl/lv_arduino.git [submodule "esp32_marauder/libraries/LinkedList"] path = esp32_marauder/libraries/LinkedList - url = git@github.com:ivanseidel/LinkedList.git + url = https://github.com/ivanseidel/LinkedList.git [submodule "esp32_marauder/libraries/TFT_eSPI"] path = esp32_marauder/libraries/TFT_eSPI - url = git@github.com:justcallmekoko/TFT_eSPI.git + url = https://github.com/justcallmekoko/TFT_eSPI.git [submodule "esp32_marauder/libraries/JPEGDecoder"] path = esp32_marauder/libraries/JPEGDecoder - url = git@github.com:Bodmer/JPEGDecoder.git + url = https://github.com/Bodmer/JPEGDecoder.git [submodule "esp32_marauder/libraries/NimBLE-Arduino"] path = esp32_marauder/libraries/NimBLE-Arduino - url = git@github.com:h2zero/NimBLE-Arduino.git + url = https://github.com/h2zero/NimBLE-Arduino.git [submodule "esp32_marauder/libraries/Adafruit_NeoPixel"] path = esp32_marauder/libraries/Adafruit_NeoPixel - url = git@github.com:adafruit/Adafruit_NeoPixel.git + url = https://github.com/adafruit/Adafruit_NeoPixel.git [submodule "esp32_marauder/libraries/ArduinoJson"] path = esp32_marauder/libraries/ArduinoJson - url = git@github.com:bblanchon/ArduinoJson.git + url = https://github.com/bblanchon/ArduinoJson.git [submodule "esp32_marauder/libraries/SwitchLib"] path = esp32_marauder/libraries/SwitchLib - url = git@github.com:justcallmekoko/SwitchLib.git + url = https://github.com/justcallmekoko/SwitchLib.git From a98e455fb5c6e4260b54eb59e5b4f1ffc12d9e47 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 17:31:50 -0400 Subject: [PATCH 02/10] Update .gitignore ignore vscode settings.json --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4698ba5..7a69792 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .vscode/arduino.json .vscode/c_cpp_properties.json +.vscode/settings.json esp32_marauder/.vscode/settings.json From 8934160316ed925670a555dc3bb22c82119d88ce Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 18:50:56 -0400 Subject: [PATCH 03/10] Add XIAO-ESP32-S3 Board Support (WIP) looking to cleanup certain things with config to allow easier customization of the build when used with the flipper zero --- esp32_marauder/BatteryInterface.cpp | 6 ++-- esp32_marauder/BatteryInterface.h | 2 +- esp32_marauder/TemperatureInterface.cpp | 2 +- esp32_marauder/configs.h | 12 +++++++ esp32_marauder/esp32_marauder.ino | 18 ++++++---- esp32_marauder/xiaoLED.cpp | 47 +++++++++++++++++++++++++ esp32_marauder/xiaoLED.h | 24 +++++++++++++ 7 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 esp32_marauder/xiaoLED.cpp create mode 100644 esp32_marauder/xiaoLED.h diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index 6de23ad..bdd33ae 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -5,7 +5,7 @@ BatteryInterface::BatteryInterface() { } void BatteryInterface::main(uint32_t currentTime) { - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 if (currentTime != 0) { if (currentTime - initTime >= 3000) { //Serial.println("Checking Battery Level"); @@ -22,14 +22,14 @@ void BatteryInterface::main(uint32_t currentTime) { } void BatteryInterface::RunSetup() { - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 Wire.begin(I2C_SDA, I2C_SCL); this->initTime = millis(); #endif } int8_t BatteryInterface::getBatteryLevel() { - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 Wire.beginTransmission(IP5306_ADDR); Wire.write(0x78); if (Wire.endTransmission(false) == 0 && diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index 40586fd..bae704f 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -5,7 +5,7 @@ #include "configs.h" -#ifndef MARAUDER_FLIPPER +#ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 #include #endif diff --git a/esp32_marauder/TemperatureInterface.cpp b/esp32_marauder/TemperatureInterface.cpp index 441e376..b84d59a 100644 --- a/esp32_marauder/TemperatureInterface.cpp +++ b/esp32_marauder/TemperatureInterface.cpp @@ -19,7 +19,7 @@ void TemperatureInterface::RunSetup() { } uint8_t TemperatureInterface::getCurrentTemp() { - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 return ((temprature_sens_read() - 32) / 1.8); #endif return 0; diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index e92bdf0..7d219cf 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -17,6 +17,7 @@ #define MARAUDER_FLIPPER //#define ESP32_LDDB //#define MARAUDER_DEV_BOARD_PRO + //#define XIAO_ESP32_S3 #define MARAUDER_VERSION "v0.10.7" @@ -478,6 +479,13 @@ #ifdef MARAUDER_DEV_BOARD_PRO #define SD_CS 4 #endif + + #ifdef XIAO_ESP32_S3 + #define SD_CS 3 + // Override RX1+TX1 pins + #define XIAO_RX1 1 + #define XIAO_TX1 2 + #endif //// END SD DEFINITIONS //// SCREEN STUFF @@ -513,6 +521,10 @@ #define HAS_BT #endif + #ifdef XIAO_ESP32_S3 + #define HAS_BT + #endif + #ifndef HAS_SCREEN #define TFT_WHITE 0 #define TFT_CYAN 0 diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index 1a81137..fc1a4f4 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -35,6 +35,7 @@ https://www.online-utility.org/image/convert/to/XBM #include "CommandLine.h" #include "lang_var.h" #include "flipperLED.h" +#include "xiaoLED.h" #ifdef HAS_SCREEN #include "Display.h" @@ -74,6 +75,7 @@ EspInterface esp_obj; Settings settings_obj; CommandLine cli_obj; flipperLED flipper_led; +xiaoLED xiao_led; #ifdef HAS_SCREEN Display display_obj; @@ -214,6 +216,10 @@ void setup() flipper_led.RunSetup(); #endif + #ifdef XIAO_ESP32_S3 + xiao_led.runSetup(); + #endif + //Serial.println("This is a test Channel: " + (String)settings_obj.loadSetting("Channel")); //if (settings_obj.loadSetting( "Force PMKID")) // Serial.println("This is a test Force PMKID: true"); @@ -253,7 +259,7 @@ void setup() #endif // Temperature stuff - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 temp_obj.RunSetup(); #endif @@ -261,7 +267,7 @@ void setup() display_obj.tft.println(F(text_table0[6])); #endif - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 battery_obj.battery_level = battery_obj.getBatteryLevel(); // if (battery_obj.i2c_supported) { @@ -272,7 +278,7 @@ void setup() #endif // Do some LED stuff - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 led_obj.RunSetup(); #endif @@ -335,7 +341,7 @@ void loop() sd_obj.main(); #endif - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 battery_obj.main(currentTime); temp_obj.main(currentTime); #endif @@ -347,7 +353,7 @@ void loop() #endif //cli_obj.main(currentTime); } - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 led_obj.main(currentTime); #endif if (wifi_scan_obj.currentScanMode == OTA_UPDATE) @@ -370,7 +376,7 @@ void loop() display_obj.main(wifi_scan_obj.currentScanMode); menu_function_obj.main(currentTime); #endif - #ifndef MARAUDER_FLIPPER + #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 led_obj.main(currentTime); #endif //cli_obj.main(currentTime); diff --git a/esp32_marauder/xiaoLED.cpp b/esp32_marauder/xiaoLED.cpp new file mode 100644 index 0000000..f2ef4ab --- /dev/null +++ b/esp32_marauder/xiaoLED.cpp @@ -0,0 +1,47 @@ +#include "xiaoLED.h" + +void xiaoLED::RunSetup() { + pinMode(XIAO_LED_PIN, OUTPUT); + +if (!settings_obj.loadSetting("EnableLED")) { + digitalWrite(XIAO_LED_PIN, HIGH); + return; +} + +delay(50); + + digitalWrite(XIAO_LED_PIN, LOW); + delay(500); + digitalWrite(XIAO_LED_PIN, HIGH); + digitalWrite(XIAO_LED_PIN, LOW); + delay(500); + digitalWrite(XIAO_LED_PIN, HIGH); + digitalWrite(XIAO_LED_PIN, LOW); + delay(500); + digitalWrite(XIAO_LED_PIN, HIGH); +} + +void xiaoLED::attackLED() { + if (!settings_obj.loadSetting("EnableLED")) + return; + + digitalWrite(XIAO_LED_PIN, HIGH); + delay(10); + digitalWrite(XIAO_LED_PIN, LOW); +} + +void xiaoLED::sniffLED() { + if (!settings_obj.loadSetting("EnableLED")) + return; + + digitalWrite(XIAO_LED_PIN, HIGH); + delay(10); + digitalWrite(XIAO_LED_PIN, LOW); +} + +void xiaoLED::offLED() { + if (!settings_obj.loadSetting("EnableLED")) + return; + + digitalWrite(XIAO_LED_PIN, HIGH); +} \ No newline at end of file diff --git a/esp32_marauder/xiaoLED.h b/esp32_marauder/xiaoLED.h new file mode 100644 index 0000000..7801585 --- /dev/null +++ b/esp32_marauder/xiaoLED.h @@ -0,0 +1,24 @@ +#ifndef xiaoLED_H +#define xiaoLED_H + +#include "configs.h" +#include "settings.h" + +#include + +#ifdef XIAO_ESP32_S3 + #define XIAO_LED_PIN 21 +#endif + +extern Settings settings_obj; + +class xiaoLED { + + public: + void RunSetup(); + void attackLED(); + void sniffLED(); + void offLED(); +}; + +#endif /* xiaoLED_H */ \ No newline at end of file From 3dcce51f18b8d80a97ab1bbf7984c684838e8d06 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 19:04:56 -0400 Subject: [PATCH 04/10] fix typo for XiaoLED --- esp32_marauder/esp32_marauder.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index fc1a4f4..ff6718b 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -217,7 +217,7 @@ void setup() #endif #ifdef XIAO_ESP32_S3 - xiao_led.runSetup(); + xiao_led.RunSetup(); #endif //Serial.println("This is a test Channel: " + (String)settings_obj.loadSetting("Channel")); From 462f248d432ae596f9dabfc63f65260bed871617 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 19:11:01 -0400 Subject: [PATCH 05/10] Update xiaoLED.h --- esp32_marauder/xiaoLED.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/esp32_marauder/xiaoLED.h b/esp32_marauder/xiaoLED.h index 7801585..4f46449 100644 --- a/esp32_marauder/xiaoLED.h +++ b/esp32_marauder/xiaoLED.h @@ -6,9 +6,7 @@ #include -#ifdef XIAO_ESP32_S3 - #define XIAO_LED_PIN 21 -#endif +#define XIAO_LED_PIN 21 extern Settings settings_obj; From bf0288f493f314a61db0238b441cef2fc2f1d38c Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 22:35:56 -0400 Subject: [PATCH 06/10] Refactor Code + XIAO-ESP32-S3 Support Refactoring / pre-processor optimizations to only include files if specified in the `configs.h` file. Also adds support for the XIAO-ESP32-S3 small board from Seeed Studio. --- esp32_marauder/BatteryInterface.cpp | 58 +- esp32_marauder/BatteryInterface.h | 4 +- esp32_marauder/CommandLine.cpp | 15 +- esp32_marauder/CommandLine.h | 9 +- esp32_marauder/LedInterface.cpp | 8 +- esp32_marauder/SDInterface.cpp | 436 ++++++------ esp32_marauder/TemperatureInterface.cpp | 5 +- esp32_marauder/WiFiScan.cpp | 55 +- esp32_marauder/WiFiScan.h | 44 +- esp32_marauder/configs.h | 869 ++++++++++++++---------- esp32_marauder/esp32_marauder.ino | 124 ++-- esp32_marauder/flipperLED.cpp | 4 + esp32_marauder/flipperLED.h | 1 + esp32_marauder/xiaoLED.cpp | 10 +- esp32_marauder/xiaoLED.h | 1 + 15 files changed, 941 insertions(+), 702 deletions(-) diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index bdd33ae..f279886 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -5,45 +5,39 @@ BatteryInterface::BatteryInterface() { } void BatteryInterface::main(uint32_t currentTime) { - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 - if (currentTime != 0) { - if (currentTime - initTime >= 3000) { - //Serial.println("Checking Battery Level"); - this->initTime = millis(); - int8_t new_level = this->getBatteryLevel(); - //this->battery_level = this->getBatteryLevel(); - if (this->battery_level != new_level) { - Serial.println(text00 + (String)new_level); - this->battery_level = new_level; - } + if (currentTime != 0) { + if (currentTime - initTime >= 3000) { + //Serial.println("Checking Battery Level"); + this->initTime = millis(); + int8_t new_level = this->getBatteryLevel(); + //this->battery_level = this->getBatteryLevel(); + if (this->battery_level != new_level) { + Serial.println(text00 + (String)new_level); + this->battery_level = new_level; } } - #endif + } } void BatteryInterface::RunSetup() { - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 - Wire.begin(I2C_SDA, I2C_SCL); - this->initTime = millis(); - #endif + Wire.begin(I2C_SDA, I2C_SCL); + this->initTime = millis(); } int8_t BatteryInterface::getBatteryLevel() { - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 - Wire.beginTransmission(IP5306_ADDR); - Wire.write(0x78); - if (Wire.endTransmission(false) == 0 && - Wire.requestFrom(0x75, 1)) { - this->i2c_supported = true; - switch (Wire.read() & 0xF0) { - case 0xE0: return 25; - case 0xC0: return 50; - case 0x80: return 75; - case 0x00: return 100; - default: return 0; - } + Wire.beginTransmission(IP5306_ADDR); + Wire.write(0x78); + if (Wire.endTransmission(false) == 0 && + Wire.requestFrom(0x75, 1)) { + this->i2c_supported = true; + switch (Wire.read() & 0xF0) { + case 0xE0: return 25; + case 0xC0: return 50; + case 0x80: return 75; + case 0x00: return 100; + default: return 0; } - this->i2c_supported = false; - return -1; - #endif + } + this->i2c_supported = false; + return -1; } diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index bae704f..10983a4 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -5,9 +5,7 @@ #include "configs.h" -#ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 - #include -#endif +#include #define I2C_SDA 33 #define I2C_SCL 22 diff --git a/esp32_marauder/CommandLine.cpp b/esp32_marauder/CommandLine.cpp index 58347b0..767c333 100644 --- a/esp32_marauder/CommandLine.cpp +++ b/esp32_marauder/CommandLine.cpp @@ -270,12 +270,15 @@ void CommandLine::runCommand(String input) { #endif } // ls command - else if (cmd_args.get(0) == LS_CMD) { - if (cmd_args.size() > 1) - sd_obj.listDir(cmd_args.get(1)); - else - Serial.println("You did not provide a dir to list"); - } + #ifdef HAS_SD + else if (cmd_args.get(0) == LS_CMD) { + if (cmd_args.size() > 1) + sd_obj.listDir(cmd_args.get(1)); + else + Serial.println("You did not provide a dir to list"); + } + #endif + // Channel command else if (cmd_args.get(0) == CH_CMD) { // Search for channel set arg diff --git a/esp32_marauder/CommandLine.h b/esp32_marauder/CommandLine.h index c083294..3dde2c8 100644 --- a/esp32_marauder/CommandLine.h +++ b/esp32_marauder/CommandLine.h @@ -10,7 +10,9 @@ #include "WiFiScan.h" #include "Web.h" -#include "SDInterface.h" +#ifdef HAS_SD + #include "SDInterface.h" +#endif #include "settings.h" #ifdef HAS_SCREEN @@ -20,12 +22,15 @@ extern WiFiScan wifi_scan_obj; extern Web web_obj; -extern SDInterface sd_obj; +#ifdef HAS_SD + extern SDInterface sd_obj; +#endif extern Settings settings_obj; extern LinkedList* access_points; extern LinkedList* ssids; extern LinkedList* stations; extern const String PROGMEM version_number; +extern const String PROGMEM board_target; //// Commands diff --git a/esp32_marauder/LedInterface.cpp b/esp32_marauder/LedInterface.cpp index 072d8e6..63ff7b2 100644 --- a/esp32_marauder/LedInterface.cpp +++ b/esp32_marauder/LedInterface.cpp @@ -1,7 +1,7 @@ #include "LedInterface.h" LedInterface::LedInterface() { - + } void LedInterface::RunSetup() { @@ -61,10 +61,10 @@ void LedInterface::ledOff() { strip.show(); } -void LedInterface::rainbow() { + void LedInterface::rainbow() { strip.setPixelColor(0, this->Wheel((0 * 256 / 100 + this->wheel_pos) % 256)); strip.show(); - + this->current_fade_itter++; this->wheel_pos = this->wheel_pos - this->wheel_speed; @@ -83,4 +83,4 @@ uint32_t LedInterface::Wheel(byte WheelPos) { } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); -} +} \ No newline at end of file diff --git a/esp32_marauder/SDInterface.cpp b/esp32_marauder/SDInterface.cpp index 5c34b0c..2d3d1f0 100644 --- a/esp32_marauder/SDInterface.cpp +++ b/esp32_marauder/SDInterface.cpp @@ -1,254 +1,258 @@ -#include "SDInterface.h" -#include "lang_var.h" +#ifdef HAS_SD -bool SDInterface::initSD() { - String display_string = ""; - - #ifdef KIT - pinMode(SD_DET, INPUT); - if (digitalRead(SD_DET) == LOW) { - Serial.println(F("SD Card Detect Pin Detected")); - } - else { - Serial.println(F("SD Card Detect Pin Not Detected")); + #include "SDInterface.h" + #include "lang_var.h" + + bool SDInterface::initSD() { + String display_string = ""; + + #ifdef KIT + pinMode(SD_DET, INPUT); + if (digitalRead(SD_DET) == LOW) { + Serial.println(F("SD Card Detect Pin Detected")); + } + else { + Serial.println(F("SD Card Detect Pin Not Detected")); + this->supported = false; + return false; + } + #endif + + pinMode(SD_CS, OUTPUT); + + delay(10); + + if (!SD.begin(SD_CS)) { + Serial.println(F("Failed to mount SD Card")); this->supported = false; return false; } - #endif - - pinMode(SD_CS, OUTPUT); - - delay(10); + else { + this->supported = true; + this->cardType = SD.cardType(); + //if (cardType == CARD_MMC) + // Serial.println(F("SD: MMC Mounted")); + //else if(cardType == CARD_SD) + // Serial.println(F("SD: SDSC Mounted")); + //else if(cardType == CARD_SDHC) + // Serial.println(F("SD: SDHC Mounted")); + //else + // Serial.println(F("SD: UNKNOWN Card Mounted")); - if (!SD.begin(SD_CS)) { - Serial.println(F("Failed to mount SD Card")); - this->supported = false; - return false; - } - else { - this->supported = true; - this->cardType = SD.cardType(); - //if (cardType == CARD_MMC) - // Serial.println(F("SD: MMC Mounted")); - //else if(cardType == CARD_SD) - // Serial.println(F("SD: SDSC Mounted")); - //else if(cardType == CARD_SDHC) - // Serial.println(F("SD: SDHC Mounted")); - //else - // Serial.println(F("SD: UNKNOWN Card Mounted")); - - this->cardSizeMB = SD.cardSize() / (1024 * 1024); + this->cardSizeMB = SD.cardSize() / (1024 * 1024); + + //Serial.printf("SD Card Size: %lluMB\n", this->cardSizeMB); + + if (this->supported) { + const int NUM_DIGITS = log10(this->cardSizeMB) + 1; + + char sz[NUM_DIGITS + 1]; + + sz[NUM_DIGITS] = 0; + for ( size_t i = NUM_DIGITS; i--; this->cardSizeMB /= 10) + { + sz[i] = '0' + (this->cardSizeMB % 10); + display_string.concat((String)sz[i]); + } - //Serial.printf("SD Card Size: %lluMB\n", this->cardSizeMB); - + this->card_sz = sz; + } + + buffer_obj = Buffer(); + + if (!SD.exists("/SCRIPTS")) { + Serial.println("/SCRIPTS does not exist. Creating..."); + + SD.mkdir("/SCRIPTS"); + Serial.println("/SCRIPTS created"); + } + + return true; + } + } + + void SDInterface::listDir(String str_dir){ if (this->supported) { - const int NUM_DIGITS = log10(this->cardSizeMB) + 1; - - char sz[NUM_DIGITS + 1]; - - sz[NUM_DIGITS] = 0; - for ( size_t i = NUM_DIGITS; i--; this->cardSizeMB /= 10) + File dir = SD.open(str_dir); + while (true) { - sz[i] = '0' + (this->cardSizeMB % 10); - display_string.concat((String)sz[i]); + File entry = dir.openNextFile(); + if (! entry) + { + break; + } + //for (uint8_t i = 0; i < numTabs; i++) + //{ + // Serial.print('\t'); + //} + Serial.print(entry.name()); + Serial.print("\t"); + Serial.println(entry.size()); + entry.close(); } + } + } - this->card_sz = sz; - } - - buffer_obj = Buffer(); - - if (!SD.exists("/SCRIPTS")) { - Serial.println("/SCRIPTS does not exist. Creating..."); - - SD.mkdir("/SCRIPTS"); - Serial.println("/SCRIPTS created"); - } - - return true; - } -} - -void SDInterface::listDir(String str_dir){ - if (this->supported) { - File dir = SD.open(str_dir); - while (true) - { - File entry = dir.openNextFile(); - if (! entry) - { - break; - } - //for (uint8_t i = 0; i < numTabs; i++) - //{ - // Serial.print('\t'); - //} - Serial.print(entry.name()); - Serial.print("\t"); - Serial.println(entry.size()); - entry.close(); + void SDInterface::addPacket(uint8_t* buf, uint32_t len) { + if ((this->supported) && (this->do_save)) { + buffer_obj.addPacket(buf, len); } } -} - -void SDInterface::addPacket(uint8_t* buf, uint32_t len) { - if ((this->supported) && (this->do_save)) { - buffer_obj.addPacket(buf, len); - } -} - -void SDInterface::openCapture(String file_name) { - bool save_pcap = settings_obj.loadSetting("SavePCAP"); - if ((this->supported) && (save_pcap)) { - buffer_obj.createPcapFile(&SD, file_name); - buffer_obj.open(); - } -} - -void SDInterface::runUpdate() { - #ifdef HAS_SCREEN - display_obj.tft.setTextWrap(false); - display_obj.tft.setFreeFont(NULL); - display_obj.tft.setCursor(0, 100); - display_obj.tft.setTextSize(1); - display_obj.tft.setTextColor(TFT_WHITE); - display_obj.tft.println(F(text15)); - #endif - File updateBin = SD.open("/update.bin"); - if (updateBin) { - if(updateBin.isDirectory()){ - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(F(text_table2[0])); - #endif - Serial.println(F("Error, could not find \"update.bin\"")); - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_WHITE); - #endif - updateBin.close(); - return; + void SDInterface::openCapture(String file_name) { + bool save_pcap = settings_obj.loadSetting("SavePCAP"); + if ((this->supported) && (save_pcap)) { + buffer_obj.createPcapFile(&SD, file_name); + buffer_obj.open(); } - - size_t updateSize = updateBin.size(); - - if (updateSize > 0) { - #ifdef HAS_SCREEN - display_obj.tft.println(F(text_table2[1])); - #endif - Serial.println(F("Starting update over SD. Please wait...")); - this->performUpdate(updateBin, updateSize); - } - else { - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(F(text_table2[2])); - #endif - Serial.println(F("Error, file is empty")); - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_WHITE); - #endif - return; - } - - updateBin.close(); - - // whe finished remove the binary from sd card to indicate end of the process - #ifdef HAS_SCREEN - display_obj.tft.println(F(text_table2[3])); - #endif - Serial.println(F("rebooting...")); - //SD.remove("/update.bin"); - delay(1000); - ESP.restart(); } - else { - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(F(text_table2[4])); - #endif - Serial.println(F("Could not load update.bin from sd root")); + + void SDInterface::runUpdate() { #ifdef HAS_SCREEN + display_obj.tft.setTextWrap(false); + display_obj.tft.setFreeFont(NULL); + display_obj.tft.setCursor(0, 100); + display_obj.tft.setTextSize(1); display_obj.tft.setTextColor(TFT_WHITE); + + display_obj.tft.println(F(text15)); #endif - } -} - -void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { - if (Update.begin(updateSize)) { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[5] + String(updateSize)); - display_obj.tft.println(F(text_table2[6])); - #endif - size_t written = Update.writeStream(updateSource); - if (written == updateSize) { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[7] + String(written) + text_table2[10]); - #endif - Serial.println("Written : " + String(written) + " successfully"); - } - else { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[8] + String(written) + "/" + String(updateSize) + text_table2[9]); - #endif - Serial.println("Written only : " + String(written) + "/" + String(updateSize) + ". Retry?"); - } - if (Update.end()) { - Serial.println("OTA done!"); - if (Update.isFinished()) { + File updateBin = SD.open("/update.bin"); + if (updateBin) { + if(updateBin.isDirectory()){ #ifdef HAS_SCREEN - display_obj.tft.println(F(text_table2[11])); + display_obj.tft.setTextColor(TFT_RED); + display_obj.tft.println(F(text_table2[0])); #endif - Serial.println(F("Update successfully completed. Rebooting.")); + Serial.println(F("Error, could not find \"update.bin\"")); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_WHITE); + #endif + updateBin.close(); + return; + } + + size_t updateSize = updateBin.size(); + + if (updateSize > 0) { + #ifdef HAS_SCREEN + display_obj.tft.println(F(text_table2[1])); + #endif + Serial.println(F("Starting update over SD. Please wait...")); + this->performUpdate(updateBin, updateSize); } else { #ifdef HAS_SCREEN display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(text_table2[12]); + display_obj.tft.println(F(text_table2[2])); #endif - Serial.println("Update not finished? Something went wrong!"); + Serial.println(F("Error, file is empty")); #ifdef HAS_SCREEN display_obj.tft.setTextColor(TFT_WHITE); #endif + return; } + + updateBin.close(); + + // whe finished remove the binary from sd card to indicate end of the process + #ifdef HAS_SCREEN + display_obj.tft.println(F(text_table2[3])); + #endif + Serial.println(F("rebooting...")); + //SD.remove("/update.bin"); + delay(1000); + ESP.restart(); } else { #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[13] + String(Update.getError())); + display_obj.tft.setTextColor(TFT_RED); + display_obj.tft.println(F(text_table2[4])); + #endif + Serial.println(F("Could not load update.bin from sd root")); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_WHITE); #endif - Serial.println("Error Occurred. Error #: " + String(Update.getError())); } - } - else - { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[14]); - #endif - Serial.println("Not enough space to begin OTA"); - } -} - -bool SDInterface::checkDetectPin() { - #ifdef KIT - if (digitalRead(SD_DET) == LOW) - return true; + + void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { + if (Update.begin(updateSize)) { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[5] + String(updateSize)); + display_obj.tft.println(F(text_table2[6])); + #endif + size_t written = Update.writeStream(updateSource); + if (written == updateSize) { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[7] + String(written) + text_table2[10]); + #endif + Serial.println("Written : " + String(written) + " successfully"); + } + else { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[8] + String(written) + "/" + String(updateSize) + text_table2[9]); + #endif + Serial.println("Written only : " + String(written) + "/" + String(updateSize) + ". Retry?"); + } + if (Update.end()) { + Serial.println("OTA done!"); + if (Update.isFinished()) { + #ifdef HAS_SCREEN + display_obj.tft.println(F(text_table2[11])); + #endif + Serial.println(F("Update successfully completed. Rebooting.")); + } + else { + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_RED); + display_obj.tft.println(text_table2[12]); + #endif + Serial.println("Update not finished? Something went wrong!"); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_WHITE); + #endif + } + } + else { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[13] + String(Update.getError())); + #endif + Serial.println("Error Occurred. Error #: " + String(Update.getError())); + } + + } else - return false; - #endif - - return false; -} - -void SDInterface::main() { - if ((this->supported) && (this->do_save)) { - //Serial.println("Saving packet..."); - buffer_obj.forceSave(&SD); - } - else if (!this->supported) { - if (checkDetectPin()) { - delay(100); - this->initSD(); + { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[14]); + #endif + Serial.println("Not enough space to begin OTA"); } } -} + + bool SDInterface::checkDetectPin() { + #ifdef KIT + if (digitalRead(SD_DET) == LOW) + return true; + else + return false; + #endif + + return false; + } + + void SDInterface::main() { + if ((this->supported) && (this->do_save)) { + //Serial.println("Saving packet..."); + buffer_obj.forceSave(&SD); + } + else if (!this->supported) { + if (checkDetectPin()) { + delay(100); + this->initSD(); + } + } + } + +#endif \ No newline at end of file diff --git a/esp32_marauder/TemperatureInterface.cpp b/esp32_marauder/TemperatureInterface.cpp index b84d59a..e2b2b9a 100644 --- a/esp32_marauder/TemperatureInterface.cpp +++ b/esp32_marauder/TemperatureInterface.cpp @@ -19,10 +19,7 @@ void TemperatureInterface::RunSetup() { } uint8_t TemperatureInterface::getCurrentTemp() { - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 - return ((temprature_sens_read() - 32) / 1.8); - #endif - return 0; + return ((temprature_sens_read() - 32) / 1.8); } void TemperatureInterface::main(uint32_t currentTime) { diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index b62a36d..2ca7228 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -404,6 +404,8 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_ this->wifi_initialized = true; #ifdef MARAUDER_FLIPPER flipper_led.attackLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.attackLED(); #else led_obj.setMode(MODE_ATTACK); #endif @@ -425,6 +427,8 @@ bool WiFiScan::shutdownWiFi() { #ifdef MARAUDER_FLIPPER flipper_led.offLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.offLED(); #else led_obj.setMode(MODE_OFF); #endif @@ -447,6 +451,8 @@ bool WiFiScan::shutdownBLE() { #ifdef MARAUDER_FLIPPER flipper_led.offLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.offLED(); #else led_obj.setMode(MODE_OFF); #endif @@ -580,6 +586,8 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -817,20 +825,21 @@ void WiFiScan::RunInfo() } #endif - - battery_obj.battery_level = battery_obj.getBatteryLevel(); - if (battery_obj.i2c_supported) { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table4[32]); - display_obj.tft.println(text_table4[33] + (String)battery_obj.battery_level + "%"); - #endif - } - else { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table4[34]); - #endif - } - + #ifdef HAS_BATTERY + battery_obj.battery_level = battery_obj.getBatteryLevel(); + if (battery_obj.i2c_supported) { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table4[32]); + display_obj.tft.println(text_table4[33] + (String)battery_obj.battery_level + "%"); + #endif + } + else { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table4[34]); + #endif + } + #endif + #ifdef HAS_SCREEN display_obj.tft.println(text_table4[35] + (String)temp_obj.current_temp + " C"); #endif @@ -845,6 +854,8 @@ void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) { #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -882,6 +893,8 @@ void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color) { #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -961,6 +974,8 @@ void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color) { #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -1110,6 +1125,8 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -1154,6 +1171,8 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -1197,6 +1216,8 @@ void WiFiScan::RunStationScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -1241,6 +1262,8 @@ void WiFiScan::RunRawScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -1287,6 +1310,8 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif @@ -1332,6 +1357,8 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color) #ifdef MARAUDER_FLIPPER flipper_led.sniffLED(); + #elif defined(XIAO_ESP32_S3) + xiao_led.sniffLED(); #else led_obj.setMode(MODE_SNIFF); #endif diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index 2b0258e..c4076b2 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -24,14 +24,27 @@ #ifdef HAS_SCREEN #include "Display.h" #endif -#include "SDInterface.h" +#ifdef HAS_SD + #include "SDInterface.h" +#endif #include "Buffer.h" -#include "BatteryInterface.h" -#include "TemperatureInterface.h" +#ifdef HAS_BATTERY + #include "BatteryInterface.h" +#endif +#ifdef HAS_TEMP_SENSOR + #include "TemperatureInterface.h" +#endif #include "settings.h" #include "Assets.h" -#include "flipperLED.h" -#include "LedInterface.h" +#ifdef MARAUDER_FLIPPER + #include "flipperLED.h" +#endif +#ifdef XIAO_ESP32_S3 + #include "xiaoLED.h" +#endif +#ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + #include "LedInterface.h" +#endif //#include "MenuFunctions.h" #define bad_list_length 3 @@ -77,13 +90,24 @@ #ifdef HAS_SCREEN extern Display display_obj; #endif -extern SDInterface sd_obj; +#ifdef HAS_SD + extern SDInterface sd_obj; +#endif extern Buffer buffer_obj; -extern BatteryInterface battery_obj; -extern TemperatureInterface temp_obj; +#ifdef HAS_BATTERY + extern BatteryInterface battery_obj; +#endif +#ifdef HAS_TEMP_SENSOR + extern TemperatureInterface temp_obj; +#endif extern Settings settings_obj; -extern flipperLED flipper_led; -extern LedInterface led_obj; +#ifdef MARAUDER_FLIPPER + extern flipperLED flipper_led; +#elif defined(XIAO_ESP32_S3) + extern xiaoLED xiao_led; +#else + extern LedInterface led_obj; +#endif esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq); //int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 7d219cf..c991a36 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -8,347 +8,488 @@ //If not defined, will write packages to SD card if supported //#define WRITE_PACKETS_SERIAL + //// BOARD TARGETS //#define MARAUDER_M5STICKC //#define MARAUDER_MINI //#define MARAUDER_V4 //#define MARAUDER_V6 //#define MARAUDER_KIT //#define GENERIC_ESP32 - #define MARAUDER_FLIPPER + //#define MARAUDER_FLIPPER //#define ESP32_LDDB //#define MARAUDER_DEV_BOARD_PRO //#define XIAO_ESP32_S3 + //// END BOARD TARGETS #define MARAUDER_VERSION "v0.10.7" - //// POWER MANAGEMENT + //// BOARD FEATURES #ifdef MARAUDER_M5STICKC - #include "AXP192.h" - #endif - - //// BUTTON DEFINITIONS - #ifdef MARAUDER_MINI + //#define FLIPPER_ZERO_HAT + #define HAS_BATTERY #define HAS_BUTTONS - - #define L_BTN 13 - #define C_BTN 34 - #define U_BTN 36 - #define R_BTN 39 - #define D_BTN 35 + //#define HAS_NEOPIXEL_LED + #define HAS_PWR_MGMT + #define HAS_SCREEN + #define HAS_SD + #define HAS_TEMP_SENSOR #endif - #ifdef MARAUDER_M5STICKC + #ifdef MARAUDER_MINI + //#define FLIPPER_ZERO_HAT + #define HAS_BATTERY + #define HAS_BT #define HAS_BUTTONS - - #define L_BTN -1 - #define C_BTN 37 - #define U_BTN -1 - #define R_BTN -1 - #define D_BTN 39 - #endif + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + #define HAS_SCREEN + #define HAS_SD + #define HAS_TEMP_SENSOR + #endif #ifdef MARAUDER_V4 + //#define FLIPPER_ZERO_HAT + #define HAS_BATTERY + #define HAS_BT + #define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + #define HAS_SCREEN + #define HAS_SD + #define HAS_TEMP_SENSOR + #endif + + #ifdef MARAUDER_V6 + //#define FLIPPER_ZERO_HAT + #define HAS_BATTERY + #define HAS_BT + #define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + #define HAS_SCREEN + #define HAS_SD + #define HAS_TEMP_SENSOR + #endif + + #ifdef MARAUDER_KIT + //#define FLIPPER_ZERO_HAT + #define HAS_BATTERY + #define HAS_BT + #define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + #define HAS_SCREEN + #define HAS_SD + #define HAS_TEMP_SENSOR + #endif + + #ifdef GENERIC_ESP32 + //#define FLIPPER_ZERO_HAT + //#define HAS_BATTERY + #define HAS_BT + //#define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + //#define HAS_SCREEN + //#define HAS_SD + //#define HAS_TEMP_SENSOR + #endif + + #ifdef MARAUDER_FLIPPER + #define FLIPPER_ZERO_HAT + //#define HAS_BATTERY + //#define HAS_BT + //#define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + //#define HAS_SCREEN + //#define HAS_SD + //#define HAS_TEMP_SENSOR + #endif + + #ifdef ESP32_LDDB + //#define FLIPPER_ZERO_HAT + //#define HAS_BATTERY + //#define HAS_BT + //#define HAS_BUTTONS + #define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + //#define HAS_SCREEN + #define HAS_SD + //#define HAS_TEMP_SENSOR + #endif + + #ifdef MARAUDER_DEV_BOARD_PRO + //#define FLIPPER_ZERO_HAT + //#define HAS_BATTERY + #define HAS_BT + //#define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + //#define HAS_SCREEN + #define HAS_SD + //#define HAS_TEMP_SENSOR + #endif + + #ifdef XIAO_ESP32_S3 + #define FLIPPER_ZERO_HAT + //#define HAS_BATTERY + #define HAS_BT + //#define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + //#define HAS_SCREEN + //#define HAS_SD + //#define HAS_TEMP_SENSOR + #endif + //// END BOARD FEATURES + + //// FLIPPER ZERO HAT SETTINGS + #ifdef FLIPPER_ZERO_HAT + + #ifdef MARAUDER_FLIPPER + #define USE_FLIPPER_SD + #endif + + #ifdef XIAO_ESP32_S3 + #define USE_FLIPPER_SD + #endif + + #endif + //// END FLIPPER ZERO HAT SETTINGS + + //// POWER MANAGEMENT + #ifdef HAS_PWR_MGMT + #ifdef MARAUDER_M5STICKC + #include "AXP192.h" + #endif + #endif + //// END POWER MANAGEMENT + + //// BUTTON DEFINITIONS + #ifdef HAS_BUTTONS + + #ifdef MARAUDER_MINI + #define L_BTN 13 + #define C_BTN 34 + #define U_BTN 36 + #define R_BTN 39 + #define D_BTN 35 + #endif + + #ifdef MARAUDER_M5STICKC + #define L_BTN -1 + #define C_BTN 37 + #define U_BTN -1 + #define R_BTN -1 + #define D_BTN 39 + #endif + #endif //// END BUTTON DEFINITIONS //// DISPLAY DEFINITIONS - #ifdef MARAUDER_M5STICKC - //#define TFT_MISO 19 - #define TFT_MOSI 15 - #define TFT_SCLK 13 - #define TFT_CS 5 - #define TFT_DC 23 - #define TFT_RST 18 - #define TFT_BL 10 - #define TOUCH_CS 10 - //#define SD_CS 1 + #ifdef HAS_SCREEN - #define SCREEN_BUFFER + #ifdef MARAUDER_M5STICKC + //#define TFT_MISO 19 + #define TFT_MOSI 15 + #define TFT_SCLK 13 + #define TFT_CS 5 + #define TFT_DC 23 + #define TFT_RST 18 + #define TFT_BL 10 + #define TOUCH_CS 10 + //#define SD_CS 1 - #define MAX_SCREEN_BUFFER 9 + #define SCREEN_BUFFER - #define BANNER_TEXT_SIZE 1 + #define MAX_SCREEN_BUFFER 9 + + #define BANNER_TEXT_SIZE 1 + + #ifndef TFT_WIDTH + #define TFT_WIDTH 135 + #endif + + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 240 + #endif + + #define CHAR_WIDTH 6 + #define SCREEN_WIDTH TFT_HEIGHT // Originally 240 + #define SCREEN_HEIGHT TFT_WIDTH // Originally 320 + #define HEIGHT_1 TFT_WIDTH + #define WIDTH_1 TFT_WIDTH + #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font + #define TEXT_HEIGHT (TFT_HEIGHT/10) // Height of text to be printed and scrolled + #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) + #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) + #define YMAX TFT_HEIGHT // Bottom of screen area + #define minimum(a,b) (((a) < (b)) ? (a) : (b)) + //#define MENU_FONT NULL + #define MENU_FONT &FreeMono9pt7b // Winner + //#define MENU_FONT &FreeMonoBold9pt7b + //#define MENU_FONT &FreeSans9pt7b + //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_ARRAY_LEN 11 + #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) + #define LVGL_TICK_PERIOD 6 + + #define FRAME_X 100 + #define FRAME_Y 64 + #define FRAME_W 120 + #define FRAME_H 50 + + // Red zone size + #define REDBUTTON_X FRAME_X + #define REDBUTTON_Y FRAME_Y + #define REDBUTTON_W (FRAME_W/2) + #define REDBUTTON_H FRAME_H + + // Green zone size + #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) + #define GREENBUTTON_Y FRAME_Y + #define GREENBUTTON_W (FRAME_W/2) + #define GREENBUTTON_H FRAME_H + + #define STATUSBAR_COLOR 0x4A49 - #ifndef TFT_WIDTH - #define TFT_WIDTH 135 #endif - #ifndef TFT_HEIGHT - #define TFT_HEIGHT 240 + #ifdef MARAUDER_V4 + #define HAS_ILI9341 + #define BANNER_TEXT_SIZE 2 + + #ifndef TFT_WIDTH + #define TFT_WIDTH 240 + #endif + + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 320 + #endif + + #define TFT_SHIELD + + #define SCREEN_WIDTH TFT_WIDTH + #define SCREEN_HEIGHT TFT_HEIGHT + #define HEIGHT_1 TFT_WIDTH + #define WIDTH_1 TFT_HEIGHT + #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font + #define TEXT_HEIGHT 16 // Height of text to be printed and scrolled + #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) + #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) + #define YMAX 320 // Bottom of screen area + #define minimum(a,b) (((a) < (b)) ? (a) : (b)) + //#define MENU_FONT NULL + #define MENU_FONT &FreeMono9pt7b // Winner + //#define MENU_FONT &FreeMonoBold9pt7b + //#define MENU_FONT &FreeSans9pt7b + //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_ARRAY_LEN 11 + #define STATUS_BAR_WIDTH 16 + #define LVGL_TICK_PERIOD 6 + + #define FRAME_X 100 + #define FRAME_Y 64 + #define FRAME_W 120 + #define FRAME_H 50 + + // Red zone size + #define REDBUTTON_X FRAME_X + #define REDBUTTON_Y FRAME_Y + #define REDBUTTON_W (FRAME_W/2) + #define REDBUTTON_H FRAME_H + + // Green zone size + #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) + #define GREENBUTTON_Y FRAME_Y + #define GREENBUTTON_W (FRAME_W/2) + #define GREENBUTTON_H FRAME_H + + #define STATUSBAR_COLOR 0x4A49 + + #define KIT_LED_BUILTIN 13 #endif - #define CHAR_WIDTH 6 - #define SCREEN_WIDTH TFT_HEIGHT // Originally 240 - #define SCREEN_HEIGHT TFT_WIDTH // Originally 320 - #define HEIGHT_1 TFT_WIDTH - #define WIDTH_1 TFT_WIDTH - #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font - #define TEXT_HEIGHT (TFT_HEIGHT/10) // Height of text to be printed and scrolled - #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) - #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) - #define YMAX TFT_HEIGHT // Bottom of screen area - #define minimum(a,b) (((a) < (b)) ? (a) : (b)) - //#define MENU_FONT NULL - #define MENU_FONT &FreeMono9pt7b // Winner - //#define MENU_FONT &FreeMonoBold9pt7b - //#define MENU_FONT &FreeSans9pt7b - //#define MENU_FONT &FreeSansBold9pt7b - #define BUTTON_ARRAY_LEN 11 - #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) - #define LVGL_TICK_PERIOD 6 + #ifdef MARAUDER_V6 + #define HAS_ILI9341 - #define FRAME_X 100 - #define FRAME_Y 64 - #define FRAME_W 120 - #define FRAME_H 50 - - // Red zone size - #define REDBUTTON_X FRAME_X - #define REDBUTTON_Y FRAME_Y - #define REDBUTTON_W (FRAME_W/2) - #define REDBUTTON_H FRAME_H - - // Green zone size - #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) - #define GREENBUTTON_Y FRAME_Y - #define GREENBUTTON_W (FRAME_W/2) - #define GREENBUTTON_H FRAME_H - - #define STATUSBAR_COLOR 0x4A49 + #define BANNER_TEXT_SIZE 2 - #endif + #ifndef TFT_WIDTH + #define TFT_WIDTH 240 + #endif - #ifdef MARAUDER_V4 - #define HAS_ILI9341 - #define BANNER_TEXT_SIZE 2 + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 320 + #endif - #ifndef TFT_WIDTH - #define TFT_WIDTH 240 + #define TFT_DIY + + #define SCREEN_WIDTH TFT_WIDTH + #define SCREEN_HEIGHT TFT_HEIGHT + #define HEIGHT_1 TFT_WIDTH + #define WIDTH_1 TFT_HEIGHT + #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font + #define TEXT_HEIGHT 16 // Height of text to be printed and scrolled + #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) + #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) + #define YMAX 320 // Bottom of screen area + #define minimum(a,b) (((a) < (b)) ? (a) : (b)) + //#define MENU_FONT NULL + #define MENU_FONT &FreeMono9pt7b // Winner + //#define MENU_FONT &FreeMonoBold9pt7b + //#define MENU_FONT &FreeSans9pt7b + //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_ARRAY_LEN 11 + #define STATUS_BAR_WIDTH 16 + #define LVGL_TICK_PERIOD 6 + + #define FRAME_X 100 + #define FRAME_Y 64 + #define FRAME_W 120 + #define FRAME_H 50 + + // Red zone size + #define REDBUTTON_X FRAME_X + #define REDBUTTON_Y FRAME_Y + #define REDBUTTON_W (FRAME_W/2) + #define REDBUTTON_H FRAME_H + + // Green zone size + #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) + #define GREENBUTTON_Y FRAME_Y + #define GREENBUTTON_W (FRAME_W/2) + #define GREENBUTTON_H FRAME_H + + #define STATUSBAR_COLOR 0x4A49 + + #define KIT_LED_BUILTIN 13 + #endif + + #ifdef MARAUDER_KIT + #define HAS_ILI9341 + + #define BANNER_TEXT_SIZE 2 + + #ifndef TFT_WIDTH + #define TFT_WIDTH 240 + #endif + + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 320 + #endif + + #define TFT_DIY + #define KIT + + #define SCREEN_WIDTH TFT_WIDTH + #define SCREEN_HEIGHT TFT_HEIGHT + #define HEIGHT_1 TFT_WIDTH + #define WIDTH_1 TFT_HEIGHT + #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font + #define TEXT_HEIGHT 16 // Height of text to be printed and scrolled + #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) + #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) + #define YMAX 320 // Bottom of screen area + #define minimum(a,b) (((a) < (b)) ? (a) : (b)) + //#define MENU_FONT NULL + #define MENU_FONT &FreeMono9pt7b // Winner + //#define MENU_FONT &FreeMonoBold9pt7b + //#define MENU_FONT &FreeSans9pt7b + //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_ARRAY_LEN 11 + #define STATUS_BAR_WIDTH 16 + #define LVGL_TICK_PERIOD 6 + + #define FRAME_X 100 + #define FRAME_Y 64 + #define FRAME_W 120 + #define FRAME_H 50 + + // Red zone size + #define REDBUTTON_X FRAME_X + #define REDBUTTON_Y FRAME_Y + #define REDBUTTON_W (FRAME_W/2) + #define REDBUTTON_H FRAME_H + + // Green zone size + #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) + #define GREENBUTTON_Y FRAME_Y + #define GREENBUTTON_W (FRAME_W/2) + #define GREENBUTTON_H FRAME_H + + #define STATUSBAR_COLOR 0x4A49 + + #define KIT_LED_BUILTIN 13 #endif - - #ifndef TFT_HEIGHT - #define TFT_HEIGHT 320 - #endif - - #define TFT_SHIELD - - #define SCREEN_WIDTH TFT_WIDTH - #define SCREEN_HEIGHT TFT_HEIGHT - #define HEIGHT_1 TFT_WIDTH - #define WIDTH_1 TFT_HEIGHT - #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font - #define TEXT_HEIGHT 16 // Height of text to be printed and scrolled - #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) - #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) - #define YMAX 320 // Bottom of screen area - #define minimum(a,b) (((a) < (b)) ? (a) : (b)) - //#define MENU_FONT NULL - #define MENU_FONT &FreeMono9pt7b // Winner - //#define MENU_FONT &FreeMonoBold9pt7b - //#define MENU_FONT &FreeSans9pt7b - //#define MENU_FONT &FreeSansBold9pt7b - #define BUTTON_ARRAY_LEN 11 - #define STATUS_BAR_WIDTH 16 - #define LVGL_TICK_PERIOD 6 - - #define FRAME_X 100 - #define FRAME_Y 64 - #define FRAME_W 120 - #define FRAME_H 50 - - // Red zone size - #define REDBUTTON_X FRAME_X - #define REDBUTTON_Y FRAME_Y - #define REDBUTTON_W (FRAME_W/2) - #define REDBUTTON_H FRAME_H - - // Green zone size - #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) - #define GREENBUTTON_Y FRAME_Y - #define GREENBUTTON_W (FRAME_W/2) - #define GREENBUTTON_H FRAME_H - - #define STATUSBAR_COLOR 0x4A49 - - #define KIT_LED_BUILTIN 13 - #endif - - #ifdef MARAUDER_V6 - #define HAS_ILI9341 - - #define BANNER_TEXT_SIZE 2 - - #ifndef TFT_WIDTH - #define TFT_WIDTH 240 - #endif - - #ifndef TFT_HEIGHT - #define TFT_HEIGHT 320 - #endif - - #define TFT_DIY - - #define SCREEN_WIDTH TFT_WIDTH - #define SCREEN_HEIGHT TFT_HEIGHT - #define HEIGHT_1 TFT_WIDTH - #define WIDTH_1 TFT_HEIGHT - #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font - #define TEXT_HEIGHT 16 // Height of text to be printed and scrolled - #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) - #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) - #define YMAX 320 // Bottom of screen area - #define minimum(a,b) (((a) < (b)) ? (a) : (b)) - //#define MENU_FONT NULL - #define MENU_FONT &FreeMono9pt7b // Winner - //#define MENU_FONT &FreeMonoBold9pt7b - //#define MENU_FONT &FreeSans9pt7b - //#define MENU_FONT &FreeSansBold9pt7b - #define BUTTON_ARRAY_LEN 11 - #define STATUS_BAR_WIDTH 16 - #define LVGL_TICK_PERIOD 6 - - #define FRAME_X 100 - #define FRAME_Y 64 - #define FRAME_W 120 - #define FRAME_H 50 - - // Red zone size - #define REDBUTTON_X FRAME_X - #define REDBUTTON_Y FRAME_Y - #define REDBUTTON_W (FRAME_W/2) - #define REDBUTTON_H FRAME_H - - // Green zone size - #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) - #define GREENBUTTON_Y FRAME_Y - #define GREENBUTTON_W (FRAME_W/2) - #define GREENBUTTON_H FRAME_H - - #define STATUSBAR_COLOR 0x4A49 - - #define KIT_LED_BUILTIN 13 - #endif - - #ifdef MARAUDER_KIT - #define HAS_ILI9341 - - #define BANNER_TEXT_SIZE 2 - - #ifndef TFT_WIDTH - #define TFT_WIDTH 240 - #endif - - #ifndef TFT_HEIGHT - #define TFT_HEIGHT 320 - #endif - - #define TFT_DIY - #define KIT - - #define SCREEN_WIDTH TFT_WIDTH - #define SCREEN_HEIGHT TFT_HEIGHT - #define HEIGHT_1 TFT_WIDTH - #define WIDTH_1 TFT_HEIGHT - #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font - #define TEXT_HEIGHT 16 // Height of text to be printed and scrolled - #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) - #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) - #define YMAX 320 // Bottom of screen area - #define minimum(a,b) (((a) < (b)) ? (a) : (b)) - //#define MENU_FONT NULL - #define MENU_FONT &FreeMono9pt7b // Winner - //#define MENU_FONT &FreeMonoBold9pt7b - //#define MENU_FONT &FreeSans9pt7b - //#define MENU_FONT &FreeSansBold9pt7b - #define BUTTON_ARRAY_LEN 11 - #define STATUS_BAR_WIDTH 16 - #define LVGL_TICK_PERIOD 6 - - #define FRAME_X 100 - #define FRAME_Y 64 - #define FRAME_W 120 - #define FRAME_H 50 - - // Red zone size - #define REDBUTTON_X FRAME_X - #define REDBUTTON_Y FRAME_Y - #define REDBUTTON_W (FRAME_W/2) - #define REDBUTTON_H FRAME_H - - // Green zone size - #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) - #define GREENBUTTON_Y FRAME_Y - #define GREENBUTTON_W (FRAME_W/2) - #define GREENBUTTON_H FRAME_H - - #define STATUSBAR_COLOR 0x4A49 - - #define KIT_LED_BUILTIN 13 - #endif - #ifdef MARAUDER_MINI - #define TFT_MISO 19 - #define TFT_MOSI 23 - #define TFT_SCLK 18 - #define TFT_CS 27 - #define TFT_DC 26 - #define TFT_RST 5 - #define TFT_BL 32 - #define TOUCH_CS 21 - #define SD_CS 4 + #ifdef MARAUDER_MINI + #define TFT_MISO 19 + #define TFT_MOSI 23 + #define TFT_SCLK 18 + #define TFT_CS 27 + #define TFT_DC 26 + #define TFT_RST 5 + #define TFT_BL 32 + #define TOUCH_CS 21 + #define SD_CS 4 - #define SCREEN_BUFFER + #define SCREEN_BUFFER - #define MAX_SCREEN_BUFFER 9 + #define MAX_SCREEN_BUFFER 9 - #define BANNER_TEXT_SIZE 1 + #define BANNER_TEXT_SIZE 1 - #ifndef TFT_WIDTH - #define TFT_WIDTH 128 + #ifndef TFT_WIDTH + #define TFT_WIDTH 128 + #endif + + #ifndef TFT_HEIGHT + #define TFT_HEIGHT 128 + #endif + + #define CHAR_WIDTH 6 + #define SCREEN_WIDTH TFT_WIDTH // Originally 240 + #define SCREEN_HEIGHT TFT_HEIGHT // Originally 320 + #define HEIGHT_1 TFT_WIDTH + #define WIDTH_1 TFT_WIDTH + #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font + #define TEXT_HEIGHT (TFT_HEIGHT/10) // Height of text to be printed and scrolled + #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) + #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) + #define YMAX TFT_HEIGHT // Bottom of screen area + #define minimum(a,b) (((a) < (b)) ? (a) : (b)) + //#define MENU_FONT NULL + #define MENU_FONT &FreeMono9pt7b // Winner + //#define MENU_FONT &FreeMonoBold9pt7b + //#define MENU_FONT &FreeSans9pt7b + //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_ARRAY_LEN 11 + #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) + #define LVGL_TICK_PERIOD 6 + + #define FRAME_X 100 + #define FRAME_Y 64 + #define FRAME_W 120 + #define FRAME_H 50 + + // Red zone size + #define REDBUTTON_X FRAME_X + #define REDBUTTON_Y FRAME_Y + #define REDBUTTON_W (FRAME_W/2) + #define REDBUTTON_H FRAME_H + + // Green zone size + #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) + #define GREENBUTTON_Y FRAME_Y + #define GREENBUTTON_W (FRAME_W/2) + #define GREENBUTTON_H FRAME_H + + #define STATUSBAR_COLOR 0x4A49 #endif - #ifndef TFT_HEIGHT - #define TFT_HEIGHT 128 - #endif - - #define CHAR_WIDTH 6 - #define SCREEN_WIDTH TFT_WIDTH // Originally 240 - #define SCREEN_HEIGHT TFT_HEIGHT // Originally 320 - #define HEIGHT_1 TFT_WIDTH - #define WIDTH_1 TFT_WIDTH - #define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font - #define TEXT_HEIGHT (TFT_HEIGHT/10) // Height of text to be printed and scrolled - #define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen) - #define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen) - #define YMAX TFT_HEIGHT // Bottom of screen area - #define minimum(a,b) (((a) < (b)) ? (a) : (b)) - //#define MENU_FONT NULL - #define MENU_FONT &FreeMono9pt7b // Winner - //#define MENU_FONT &FreeMonoBold9pt7b - //#define MENU_FONT &FreeSans9pt7b - //#define MENU_FONT &FreeSansBold9pt7b - #define BUTTON_ARRAY_LEN 11 - #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) - #define LVGL_TICK_PERIOD 6 - - #define FRAME_X 100 - #define FRAME_Y 64 - #define FRAME_W 120 - #define FRAME_H 50 - - // Red zone size - #define REDBUTTON_X FRAME_X - #define REDBUTTON_Y FRAME_Y - #define REDBUTTON_W (FRAME_W/2) - #define REDBUTTON_H FRAME_H - - // Green zone size - #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) - #define GREENBUTTON_Y FRAME_Y - #define GREENBUTTON_W (FRAME_W/2) - #define GREENBUTTON_H FRAME_H - - #define STATUSBAR_COLOR 0x4A49 #endif //// END DISPLAY DEFINITIONS @@ -448,84 +589,56 @@ //// END MENU DEFINITIONS //// SD DEFINITIONS - #ifdef MARAUDER_V4 - #define SD_CS 12 - #endif + #ifdef FLIPPER_ZERO_HAT - #ifdef MARAUDER_V6 - #define SD_CS 12 - #endif + #ifdef USE_FLIPPER_SD + #define WRITE_PACKETS_SERIAL + #endif - #ifdef MARAUDER_KIT - #define SD_CS 12 - #endif + #elif defined(USE_SD) - #ifdef MARAUDER_MINI - #define SD_CS 4 - #endif + #ifdef MARAUDER_V4 + #define SD_CS 12 + #endif - #ifdef MARAUDER_M5STICKC - #define SD_CS 10 - #endif + #ifdef MARAUDER_V6 + #define SD_CS 12 + #endif - #ifdef MARAUDER_FLIPPER - #define SD_CS 10 - #endif + #ifdef MARAUDER_KIT + #define SD_CS 12 + #endif - #ifdef ESP32_LDDB - #define SD_CS 4 - #endif + #ifdef MARAUDER_MINI + #define SD_CS 4 + #endif - #ifdef MARAUDER_DEV_BOARD_PRO - #define SD_CS 4 - #endif + #ifdef MARAUDER_M5STICKC + #define SD_CS 10 + #endif + + #ifdef MARAUDER_FLIPPER + #define SD_CS 10 + #endif + + #ifdef ESP32_LDDB + #define SD_CS 4 + #endif + + #ifdef MARAUDER_DEV_BOARD_PRO + #define SD_CS 4 + #endif + + #ifdef XIAO_ESP32_S3 + #define SD_CS 3 + #endif - #ifdef XIAO_ESP32_S3 - #define SD_CS 3 - // Override RX1+TX1 pins - #define XIAO_RX1 1 - #define XIAO_TX1 2 #endif //// END SD DEFINITIONS //// SCREEN STUFF - #ifdef MARAUDER_DEV_BOARD_PRO - #define HAS_BT - #endif - - #ifdef MARAUDER_MINI - #define HAS_SCREEN - #define HAS_BT - #endif - - #ifdef MARAUDER_M5STICKC - #define HAS_SCREEN - #endif - - #ifdef MARAUDER_V4 - #define HAS_SCREEN - #define HAS_BT - #endif - - #ifdef MARAUDER_V6 - #define HAS_SCREEN - #define HAS_BT - #endif - - #ifdef MARAUDER_KIT - #define HAS_SCREEN - #define HAS_BT - #endif - - #ifdef GENERIC_ESP32 - #define HAS_BT - #endif - - #ifdef XIAO_ESP32_S3 - #define HAS_BT - #endif - #ifndef HAS_SCREEN + #define TFT_WHITE 0 #define TFT_CYAN 0 #define TFT_BLUE 0 @@ -545,17 +658,31 @@ #include #include "SPIFFS.h" #include "Assets.h" + #endif //// END SCREEN STUFF //// NEOPIXEL STUFF - #if defined(ESP32_LDDB) - #define PIN 17 - #elif defined(MARAUDER_DEV_BOARD_PRO) - #define PIN 16 - #else - #define PIN 25 - #endif + #ifdef HAS_NEOPIXEL_LED + + #if defined(ESP32_LDDB) + #define PIN 17 + #elif defined(MARAUDER_DEV_BOARD_PRO) + #define PIN 16 + #else + #define PIN 25 + #endif + #endif + //// END NEOPIXEL STUFF -#endif + //// BOARD PIN OVERRIDES + #ifdef XIAO_ESP32_S3 + #ifdef USE_FLIPPER_SD + #define XIAO_RX1 1 + #define XIAO_TX1 2 + #endif + #endif + //// END BOARD PIN OVERRIDES + +#endif \ No newline at end of file diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index ff6718b..f541400 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -24,18 +24,32 @@ https://www.online-utility.org/image/convert/to/XBM #include "Assets.h" #include "WiFiScan.h" -#include "SDInterface.h" +#ifdef HAS_SD + #include "SDInterface.h" +#endif #include "Web.h" #include "Buffer.h" -#include "BatteryInterface.h" -#include "TemperatureInterface.h" -#include "LedInterface.h" + +#ifdef MARAUDER_FLIPPER + #include "flipperLED.h" +#elif defined(XIAO_ESP32_S3) + #include "xiaoLED.h" +#else + #include "LedInterface.h" +#endif + #include "esp_interface.h" #include "settings.h" #include "CommandLine.h" #include "lang_var.h" -#include "flipperLED.h" -#include "xiaoLED.h" + +#ifdef HAS_BATTERY + #include "BatteryInterface.h" +#endif + +#ifdef HAS_TEMP_SENSOR + #include "TemperatureInterface.h" +#endif #ifdef HAS_SCREEN #include "Display.h" @@ -65,17 +79,19 @@ https://www.online-utility.org/image/convert/to/XBM #endif WiFiScan wifi_scan_obj; -SDInterface sd_obj; Web web_obj; Buffer buffer_obj; -BatteryInterface battery_obj; -TemperatureInterface temp_obj; -LedInterface led_obj; EspInterface esp_obj; Settings settings_obj; CommandLine cli_obj; -flipperLED flipper_led; -xiaoLED xiao_led; + +#ifdef HAS_BATTERY + BatteryInterface battery_obj; +#endif + +#ifdef HAS_TEMP_SENSOR + TemperatureInterface temp_obj; +#endif #ifdef HAS_SCREEN Display display_obj; @@ -83,13 +99,28 @@ xiaoLED xiao_led; A32u4Interface a32u4_obj; #endif +#ifdef HAS_SD + SDInterface sd_obj; +#endif + #ifdef MARAUDER_M5STICKC AXP192 axp192_obj; #endif -const String PROGMEM version_number = MARAUDER_VERSION; +#ifdef MARAUDER_FLIPPER + flipperLED flipper_led; +#elif defined(XIAO_ESP32_S3) + xiaoLED xiao_led; +#else + LedInterface led_obj; +#endif -Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels, PIN, NEO_GRB + NEO_KHZ800); +const String PROGMEM version_number = MARAUDER_VERSION; +const String PROGMEM board_target = MARAUDER_TARGET; + +#ifdef HAS_NEOPIXEL_LED + Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels, PIN, NEO_GRB + NEO_KHZ800); +#endif uint32_t currentTime = 0; @@ -141,20 +172,28 @@ void setup() #ifdef HAS_SCREEN digitalWrite(TFT_CS, HIGH); #endif - - pinMode(SD_CS, OUTPUT); - - delay(10); - digitalWrite(SD_CS, HIGH); + #ifdef HAS_SD + pinMode(SD_CS, OUTPUT); - delay(10); + delay(10); + + digitalWrite(SD_CS, HIGH); + + delay(10); + #endif Serial.begin(115200); + // Starts a second serial channel to stream the captured packets #ifdef WRITE_PACKETS_SERIAL - // Starts a second serial channel to stream the captured packets - Serial1.begin(115200); + + #ifdef XIAO_ESP32_S3 + Serial1.begin(115200, SERIAL_8N1, XIAO_RX1, XIAO_TX1); + #else + Serial1.begin(115200); + #endif + #endif //Serial.println("\n\nHello, World!\n"); @@ -212,14 +251,6 @@ void setup() settings_obj.begin(); - #ifdef MARAUDER_FLIPPER - flipper_led.RunSetup(); - #endif - - #ifdef XIAO_ESP32_S3 - xiao_led.RunSetup(); - #endif - //Serial.println("This is a test Channel: " + (String)settings_obj.loadSetting("Channel")); //if (settings_obj.loadSetting( "Force PMKID")) // Serial.println("This is a test Force PMKID: true"); @@ -252,14 +283,16 @@ void setup() } #endif - battery_obj.RunSetup(); - + #ifdef HAS_BATTERY + battery_obj.RunSetup(); + #endif + #ifdef HAS_SCREEN display_obj.tft.println(F(text_table0[5])); #endif // Temperature stuff - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + #ifdef HAS_TEMP_SENSOR temp_obj.RunSetup(); #endif @@ -267,7 +300,7 @@ void setup() display_obj.tft.println(F(text_table0[6])); #endif - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + #ifdef HAS_BATTERY battery_obj.battery_level = battery_obj.getBatteryLevel(); // if (battery_obj.i2c_supported) { @@ -278,7 +311,11 @@ void setup() #endif // Do some LED stuff - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + #ifdef MARAUDER_FLIPPER + flipper_led.RunSetup(); + #elif defined(XIAO_ESP32_S3) + xiao_led.RunSetup(); + #else led_obj.RunSetup(); #endif @@ -341,7 +378,7 @@ void loop() sd_obj.main(); #endif - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + #ifdef HAS_BATTERY battery_obj.main(currentTime); temp_obj.main(currentTime); #endif @@ -353,9 +390,14 @@ void loop() #endif //cli_obj.main(currentTime); } - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + #ifdef MARAUDER_FLIPPER + flipper_led.main(); + #elif defined(XIAO_ESP32_S3) + xiao_led.main(); + #else led_obj.main(currentTime); #endif + if (wifi_scan_obj.currentScanMode == OTA_UPDATE) web_obj.main(); #ifdef HAS_SCREEN @@ -376,9 +418,15 @@ void loop() display_obj.main(wifi_scan_obj.currentScanMode); menu_function_obj.main(currentTime); #endif - #ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 + + #ifdef MARAUDER_FLIPPER + flipper_led.main(); + #elif defined(XIAO_ESP32_S3) + xiao_led.main(); + #else led_obj.main(currentTime); #endif + //cli_obj.main(currentTime); delay(1); } diff --git a/esp32_marauder/flipperLED.cpp b/esp32_marauder/flipperLED.cpp index b3eb1d5..1df21c3 100644 --- a/esp32_marauder/flipperLED.cpp +++ b/esp32_marauder/flipperLED.cpp @@ -55,3 +55,7 @@ void flipperLED::offLED() { digitalWrite(G_PIN, HIGH); digitalWrite(R_PIN, HIGH); } + +void flipperLED::main() { + // do nothing +} \ No newline at end of file diff --git a/esp32_marauder/flipperLED.h b/esp32_marauder/flipperLED.h index 3c67e66..fca4181 100644 --- a/esp32_marauder/flipperLED.h +++ b/esp32_marauder/flipperLED.h @@ -16,6 +16,7 @@ class flipperLED { public: void RunSetup(); + void main(); void attackLED(); void sniffLED(); void offLED(); diff --git a/esp32_marauder/xiaoLED.cpp b/esp32_marauder/xiaoLED.cpp index f2ef4ab..4670158 100644 --- a/esp32_marauder/xiaoLED.cpp +++ b/esp32_marauder/xiaoLED.cpp @@ -13,9 +13,11 @@ delay(50); digitalWrite(XIAO_LED_PIN, LOW); delay(500); digitalWrite(XIAO_LED_PIN, HIGH); + delay(250); digitalWrite(XIAO_LED_PIN, LOW); delay(500); digitalWrite(XIAO_LED_PIN, HIGH); + delay(250); digitalWrite(XIAO_LED_PIN, LOW); delay(500); digitalWrite(XIAO_LED_PIN, HIGH); @@ -26,7 +28,7 @@ void xiaoLED::attackLED() { return; digitalWrite(XIAO_LED_PIN, HIGH); - delay(10); + delay(300); digitalWrite(XIAO_LED_PIN, LOW); } @@ -35,7 +37,7 @@ void xiaoLED::sniffLED() { return; digitalWrite(XIAO_LED_PIN, HIGH); - delay(10); + delay(300); digitalWrite(XIAO_LED_PIN, LOW); } @@ -44,4 +46,8 @@ void xiaoLED::offLED() { return; digitalWrite(XIAO_LED_PIN, HIGH); +} + +void xiaoLED::main() { + // do nothing } \ No newline at end of file diff --git a/esp32_marauder/xiaoLED.h b/esp32_marauder/xiaoLED.h index 4f46449..9402ee2 100644 --- a/esp32_marauder/xiaoLED.h +++ b/esp32_marauder/xiaoLED.h @@ -14,6 +14,7 @@ class xiaoLED { public: void RunSetup(); + void main(); void attackLED(); void sniffLED(); void offLED(); From 355b1591281b89d0af6be901e2a2e223fb7550fb Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 23:10:21 -0400 Subject: [PATCH 07/10] fixup preprocessor directives --- esp32_marauder/CommandLine.cpp | 40 +-- esp32_marauder/SDInterface.cpp | 388 +++++++++++++++--------------- esp32_marauder/WiFiScan.cpp | 48 +++- esp32_marauder/WiFiScan.h | 6 +- esp32_marauder/esp32_marauder.ino | 9 +- 5 files changed, 263 insertions(+), 228 deletions(-) diff --git a/esp32_marauder/CommandLine.cpp b/esp32_marauder/CommandLine.cpp index 767c333..cdab132 100644 --- a/esp32_marauder/CommandLine.cpp +++ b/esp32_marauder/CommandLine.cpp @@ -270,13 +270,16 @@ void CommandLine::runCommand(String input) { #endif } // ls command - #ifdef HAS_SD else if (cmd_args.get(0) == LS_CMD) { - if (cmd_args.size() > 1) - sd_obj.listDir(cmd_args.get(1)); - else - Serial.println("You did not provide a dir to list"); - } + #ifdef HAS_SD + if (cmd_args.size() > 1) + sd_obj.listDir(cmd_args.get(1)); + else + Serial.println("You did not provide a dir to list"); + #else + Serial.println("SD support disabled, cannot use command"); + return; + } #endif // Channel command @@ -666,16 +669,21 @@ void CommandLine::runCommand(String input) { } // Update via SD else if (sd_sw != -1) { - #ifndef WRITE_PACKETS_SERIAL - if (!sd_obj.supported) { - Serial.println("SD card is not connected. Cannot perform SD Update"); - return; - } - wifi_scan_obj.currentScanMode = OTA_UPDATE; - sd_obj.runUpdate(); - #else - Serial.println("SD card not initialized. Cannot perform SD Update"); - #endif + #ifdef HAS_SD + #ifndef WRITE_PACKETS_SERIAL + if (!sd_obj.supported) { + Serial.println("SD card is not connected. Cannot perform SD Update"); + return; + } + wifi_scan_obj.currentScanMode = OTA_UPDATE; + sd_obj.runUpdate(); + #else + Serial.println("SD card not initialized. Cannot perform SD Update"); + #endif + #else + Serial.println("SD card support disabled. Cannot perform SD Update"); + return; + #endif } } } diff --git a/esp32_marauder/SDInterface.cpp b/esp32_marauder/SDInterface.cpp index 2d3d1f0..135dedb 100644 --- a/esp32_marauder/SDInterface.cpp +++ b/esp32_marauder/SDInterface.cpp @@ -1,11 +1,10 @@ -#ifdef HAS_SD +#include "SDInterface.h" +#include "lang_var.h" - #include "SDInterface.h" - #include "lang_var.h" - - bool SDInterface::initSD() { +bool SDInterface::initSD() { + #ifdef HAS_SD String display_string = ""; - + #ifdef KIT pinMode(SD_DET, INPUT); if (digitalRead(SD_DET) == LOW) { @@ -17,11 +16,11 @@ return false; } #endif - + pinMode(SD_CS, OUTPUT); - + delay(10); - + if (!SD.begin(SD_CS)) { Serial.println(F("Failed to mount SD Card")); this->supported = false; @@ -38,221 +37,224 @@ // Serial.println(F("SD: SDHC Mounted")); //else // Serial.println(F("SD: UNKNOWN Card Mounted")); - + this->cardSizeMB = SD.cardSize() / (1024 * 1024); - + //Serial.printf("SD Card Size: %lluMB\n", this->cardSizeMB); - + if (this->supported) { const int NUM_DIGITS = log10(this->cardSizeMB) + 1; - + char sz[NUM_DIGITS + 1]; - + sz[NUM_DIGITS] = 0; for ( size_t i = NUM_DIGITS; i--; this->cardSizeMB /= 10) { sz[i] = '0' + (this->cardSizeMB % 10); display_string.concat((String)sz[i]); } - + this->card_sz = sz; } - + buffer_obj = Buffer(); - + if (!SD.exists("/SCRIPTS")) { Serial.println("/SCRIPTS does not exist. Creating..."); - + SD.mkdir("/SCRIPTS"); Serial.println("/SCRIPTS created"); } - - return true; - } - } - - void SDInterface::listDir(String str_dir){ - if (this->supported) { - File dir = SD.open(str_dir); - while (true) - { - File entry = dir.openNextFile(); - if (! entry) - { - break; - } - //for (uint8_t i = 0; i < numTabs; i++) - //{ - // Serial.print('\t'); - //} - Serial.print(entry.name()); - Serial.print("\t"); - Serial.println(entry.size()); - entry.close(); - } - } - } - - void SDInterface::addPacket(uint8_t* buf, uint32_t len) { - if ((this->supported) && (this->do_save)) { - buffer_obj.addPacket(buf, len); - } - } - - void SDInterface::openCapture(String file_name) { - bool save_pcap = settings_obj.loadSetting("SavePCAP"); - if ((this->supported) && (save_pcap)) { - buffer_obj.createPcapFile(&SD, file_name); - buffer_obj.open(); - } - } - - void SDInterface::runUpdate() { - #ifdef HAS_SCREEN - display_obj.tft.setTextWrap(false); - display_obj.tft.setFreeFont(NULL); - display_obj.tft.setCursor(0, 100); - display_obj.tft.setTextSize(1); - display_obj.tft.setTextColor(TFT_WHITE); - display_obj.tft.println(F(text15)); - #endif - File updateBin = SD.open("/update.bin"); - if (updateBin) { - if(updateBin.isDirectory()){ - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(F(text_table2[0])); - #endif - Serial.println(F("Error, could not find \"update.bin\"")); - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_WHITE); - #endif - updateBin.close(); - return; + return true; + } + + #else + Serial.println("SD support disabled, skipping init"); + return false; + #endif +} + +void SDInterface::listDir(String str_dir){ + if (this->supported) { + File dir = SD.open(str_dir); + while (true) + { + File entry = dir.openNextFile(); + if (! entry) + { + break; } + //for (uint8_t i = 0; i < numTabs; i++) + //{ + // Serial.print('\t'); + //} + Serial.print(entry.name()); + Serial.print("\t"); + Serial.println(entry.size()); + entry.close(); + } + } +} + +void SDInterface::addPacket(uint8_t* buf, uint32_t len) { + if ((this->supported) && (this->do_save)) { + buffer_obj.addPacket(buf, len); + } +} + +void SDInterface::openCapture(String file_name) { + bool save_pcap = settings_obj.loadSetting("SavePCAP"); + if ((this->supported) && (save_pcap)) { + buffer_obj.createPcapFile(&SD, file_name); + buffer_obj.open(); + } +} + +void SDInterface::runUpdate() { + #ifdef HAS_SCREEN + display_obj.tft.setTextWrap(false); + display_obj.tft.setFreeFont(NULL); + display_obj.tft.setCursor(0, 100); + display_obj.tft.setTextSize(1); + display_obj.tft.setTextColor(TFT_WHITE); - size_t updateSize = updateBin.size(); - - if (updateSize > 0) { - #ifdef HAS_SCREEN - display_obj.tft.println(F(text_table2[1])); - #endif - Serial.println(F("Starting update over SD. Please wait...")); - this->performUpdate(updateBin, updateSize); - } - else { - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(F(text_table2[2])); - #endif - Serial.println(F("Error, file is empty")); - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_WHITE); - #endif - return; - } - - updateBin.close(); - - // whe finished remove the binary from sd card to indicate end of the process + display_obj.tft.println(F(text15)); + #endif + File updateBin = SD.open("/update.bin"); + if (updateBin) { + if(updateBin.isDirectory()){ #ifdef HAS_SCREEN - display_obj.tft.println(F(text_table2[3])); + display_obj.tft.setTextColor(TFT_RED); + display_obj.tft.println(F(text_table2[0])); #endif - Serial.println(F("rebooting...")); - //SD.remove("/update.bin"); - delay(1000); - ESP.restart(); + Serial.println(F("Error, could not find \"update.bin\"")); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_WHITE); + #endif + updateBin.close(); + return; + } + + size_t updateSize = updateBin.size(); + + if (updateSize > 0) { + #ifdef HAS_SCREEN + display_obj.tft.println(F(text_table2[1])); + #endif + Serial.println(F("Starting update over SD. Please wait...")); + this->performUpdate(updateBin, updateSize); } else { #ifdef HAS_SCREEN display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(F(text_table2[4])); + display_obj.tft.println(F(text_table2[2])); #endif - Serial.println(F("Could not load update.bin from sd root")); + Serial.println(F("Error, file is empty")); #ifdef HAS_SCREEN display_obj.tft.setTextColor(TFT_WHITE); #endif + return; } - } - - void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { - if (Update.begin(updateSize)) { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[5] + String(updateSize)); - display_obj.tft.println(F(text_table2[6])); - #endif - size_t written = Update.writeStream(updateSource); - if (written == updateSize) { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[7] + String(written) + text_table2[10]); - #endif - Serial.println("Written : " + String(written) + " successfully"); - } - else { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[8] + String(written) + "/" + String(updateSize) + text_table2[9]); - #endif - Serial.println("Written only : " + String(written) + "/" + String(updateSize) + ". Retry?"); - } - if (Update.end()) { - Serial.println("OTA done!"); - if (Update.isFinished()) { - #ifdef HAS_SCREEN - display_obj.tft.println(F(text_table2[11])); - #endif - Serial.println(F("Update successfully completed. Rebooting.")); - } - else { - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println(text_table2[12]); - #endif - Serial.println("Update not finished? Something went wrong!"); - #ifdef HAS_SCREEN - display_obj.tft.setTextColor(TFT_WHITE); - #endif - } - } - else { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[13] + String(Update.getError())); - #endif - Serial.println("Error Occurred. Error #: " + String(Update.getError())); - } - - } - else - { - #ifdef HAS_SCREEN - display_obj.tft.println(text_table2[14]); - #endif - Serial.println("Not enough space to begin OTA"); - } - } - - bool SDInterface::checkDetectPin() { - #ifdef KIT - if (digitalRead(SD_DET) == LOW) - return true; - else - return false; - #endif - - return false; - } - - void SDInterface::main() { - if ((this->supported) && (this->do_save)) { - //Serial.println("Saving packet..."); - buffer_obj.forceSave(&SD); - } - else if (!this->supported) { - if (checkDetectPin()) { - delay(100); - this->initSD(); - } - } - } -#endif \ No newline at end of file + updateBin.close(); + + // whe finished remove the binary from sd card to indicate end of the process + #ifdef HAS_SCREEN + display_obj.tft.println(F(text_table2[3])); + #endif + Serial.println(F("rebooting...")); + //SD.remove("/update.bin"); + delay(1000); + ESP.restart(); + } + else { + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_RED); + display_obj.tft.println(F(text_table2[4])); + #endif + Serial.println(F("Could not load update.bin from sd root")); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_WHITE); + #endif + } +} + +void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { + if (Update.begin(updateSize)) { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[5] + String(updateSize)); + display_obj.tft.println(F(text_table2[6])); + #endif + size_t written = Update.writeStream(updateSource); + if (written == updateSize) { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[7] + String(written) + text_table2[10]); + #endif + Serial.println("Written : " + String(written) + " successfully"); + } + else { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[8] + String(written) + "/" + String(updateSize) + text_table2[9]); + #endif + Serial.println("Written only : " + String(written) + "/" + String(updateSize) + ". Retry?"); + } + if (Update.end()) { + Serial.println("OTA done!"); + if (Update.isFinished()) { + #ifdef HAS_SCREEN + display_obj.tft.println(F(text_table2[11])); + #endif + Serial.println(F("Update successfully completed. Rebooting.")); + } + else { + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_RED); + display_obj.tft.println(text_table2[12]); + #endif + Serial.println("Update not finished? Something went wrong!"); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_WHITE); + #endif + } + } + else { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[13] + String(Update.getError())); + #endif + Serial.println("Error Occurred. Error #: " + String(Update.getError())); + } + + } + else + { + #ifdef HAS_SCREEN + display_obj.tft.println(text_table2[14]); + #endif + Serial.println("Not enough space to begin OTA"); + } +} + +bool SDInterface::checkDetectPin() { + #ifdef KIT + if (digitalRead(SD_DET) == LOW) + return true; + else + return false; + #endif + + return false; +} + +void SDInterface::main() { + if ((this->supported) && (this->do_save)) { + //Serial.println("Saving packet..."); + buffer_obj.forceSave(&SD); + } + else if (!this->supported) { + if (checkDetectPin()) { + delay(100); + this->initSD(); + } + } +} \ No newline at end of file diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 2ca7228..9974f0d 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -580,8 +580,10 @@ void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("ap"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -809,7 +811,7 @@ void WiFiScan::RunInfo() #ifdef HAS_SCREEN display_obj.tft.println(text_table4[48]); #endif - #else + #elif defined(HAS_SD) if (sd_obj.supported) { #ifdef HAS_SCREEN display_obj.tft.println(text_table4[28]); @@ -823,6 +825,8 @@ void WiFiScan::RunInfo() display_obj.tft.println(text_table4[31]); #endif } + #else + return; #endif #ifdef HAS_BATTERY @@ -848,8 +852,10 @@ void WiFiScan::RunInfo() void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("espressif"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -901,8 +907,10 @@ void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color) #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("packet_monitor"); + #else + return; #endif #ifdef HAS_ILI9341 @@ -1020,8 +1028,10 @@ void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color) #else #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("eapol"); + #else + return; #endif #ifdef HAS_SCREEN @@ -1119,8 +1129,10 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("pwnagotchi"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -1165,8 +1177,10 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("beacon"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -1210,8 +1224,10 @@ void WiFiScan::RunStationScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("station"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -1255,9 +1271,11 @@ void WiFiScan::RunRawScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) if (scan_mode != WIFI_SCAN_SIG_STREN) sd_obj.openCapture("raw"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -1304,8 +1322,10 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("deauth"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -1351,8 +1371,10 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.open(); - #else + #elif defined(HAS_SD) sd_obj.openCapture("probe"); + #else + return; #endif #ifdef MARAUDER_FLIPPER @@ -3209,8 +3231,10 @@ void WiFiScan::addPacket(wifi_promiscuous_pkt_t *snifferPacket, int len) { if (save_packet) { #ifdef WRITE_PACKETS_SERIAL buffer_obj.addPacket(snifferPacket->payload, len); - #else + #elif defined(HAS_SD) sd_obj.addPacket(snifferPacket->payload, len); + #else + return; #endif } } diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index c4076b2..654489d 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -38,11 +38,9 @@ #include "Assets.h" #ifdef MARAUDER_FLIPPER #include "flipperLED.h" -#endif -#ifdef XIAO_ESP32_S3 +#elif defined(XIAO_ESP32_S3) #include "xiaoLED.h" -#endif -#ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3 +#else #include "LedInterface.h" #endif //#include "MenuFunctions.h" diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index f541400..232889e 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -116,7 +116,6 @@ CommandLine cli_obj; #endif const String PROGMEM version_number = MARAUDER_VERSION; -const String PROGMEM board_target = MARAUDER_TARGET; #ifdef HAS_NEOPIXEL_LED Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels, PIN, NEO_GRB + NEO_KHZ800); @@ -267,7 +266,7 @@ void setup() #ifdef WRITE_PACKETS_SERIAL buffer_obj = Buffer(); - #else + #elif defined(HAS_SD) // Do some SD stuff if(sd_obj.initSD()) { #ifdef HAS_SCREEN @@ -281,6 +280,8 @@ void setup() display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); #endif } + #else + return; #endif #ifdef HAS_BATTERY @@ -374,8 +375,10 @@ void loop() #ifdef WRITE_PACKETS_SERIAL buffer_obj.forceSaveSerial(); - #else + #elif defined(HAS_SD) sd_obj.main(); + #else + return; #endif #ifdef HAS_BATTERY From 1fca730b001598e14d9a2434289bbf025cc4c41b Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 23 Jun 2023 19:16:42 -0400 Subject: [PATCH 08/10] Fix NeoPixel Definition for OG Marauder --- esp32_marauder/configs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 6919786..124deb6 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -54,7 +54,7 @@ #define HAS_BATTERY #define HAS_BT //#define HAS_BUTTONS - //#define HAS_NEOPIXEL_LED + #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN #define HAS_SD From a7cf003d84c7d2a39ea9c785b9412285c9ce5199 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 23 Jun 2023 19:26:38 -0400 Subject: [PATCH 09/10] Fix NeoPixel for all Marauder Boards All Marauder Boards use NeoPixel. --- esp32_marauder/configs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 124deb6..30bfd06 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -41,7 +41,7 @@ #define HAS_BATTERY #define HAS_BT #define HAS_BUTTONS - //#define HAS_NEOPIXEL_LED + #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN #define HAS_SD @@ -67,7 +67,7 @@ #define HAS_BATTERY #define HAS_BT //#define HAS_BUTTONS - //#define HAS_NEOPIXEL_LED + #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN #define HAS_SD @@ -80,7 +80,7 @@ #define HAS_BATTERY #define HAS_BT //#define HAS_BUTTONS - //#define HAS_NEOPIXEL_LED + #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN #define HAS_SD From 5886bd991d85aa6392638d264f4ef2d3a17ea139 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 23 Jun 2023 20:06:23 -0400 Subject: [PATCH 10/10] NeoPixel for M5StickC --- esp32_marauder/configs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 30bfd06..64aebcc 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -28,7 +28,7 @@ //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BUTTONS - //#define HAS_NEOPIXEL_LED + #define HAS_NEOPIXEL_LED #define HAS_PWR_MGMT #define HAS_SCREEN #define HAS_SD