From f3349766edfe60f796eaafd35decb42f21a99fb8 Mon Sep 17 00:00:00 2001 From: tracedgod Date: Fri, 9 Jun 2023 18:50:56 -0400 Subject: [PATCH] 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