From 9c51a562b896e72887f626dc6592ff4ba8fbbe95 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 22:35:56 -0400 Subject: [PATCH] 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();