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.
This commit is contained in:
tracedgod
2023-06-09 22:35:56 -04:00
parent 56e87a53ea
commit 9c51a562b8
15 changed files with 941 additions and 702 deletions

View File

@@ -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;
}

View File

@@ -5,9 +5,7 @@
#include "configs.h"
#ifndef MARAUDER_FLIPPER || XIAO_ESP32_S3
#include <Wire.h>
#endif
#include <Wire.h>
#define I2C_SDA 33
#define I2C_SCL 22

View File

@@ -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

View File

@@ -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<AccessPoint>* access_points;
extern LinkedList<ssid>* ssids;
extern LinkedList<Station>* stations;
extern const String PROGMEM version_number;
extern const String PROGMEM board_target;
//// Commands

View File

@@ -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);
}
}

View File

@@ -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<bool>("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<bool>("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

View File

@@ -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) {

View File

@@ -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

View File

@@ -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);

View File

@@ -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 <LinkedList.h>
#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

View File

@@ -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<uint8_t>("Channel"));
//if (settings_obj.loadSetting<bool>( "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);
}

View File

@@ -55,3 +55,7 @@ void flipperLED::offLED() {
digitalWrite(G_PIN, HIGH);
digitalWrite(R_PIN, HIGH);
}
void flipperLED::main() {
// do nothing
}

View File

@@ -16,6 +16,7 @@ class flipperLED {
public:
void RunSetup();
void main();
void attackLED();
void sniffLED();
void offLED();

View File

@@ -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
}

View File

@@ -14,6 +14,7 @@ class xiaoLED {
public:
void RunSetup();
void main();
void attackLED();
void sniffLED();
void offLED();