From be46acf98d18e5ca4f0fd82845d356a712d3d44d Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 15:31:28 -0700 Subject: [PATCH 01/12] Reworked BatteryInterface to not include superfluous libraries when not needed/used --- esp32_marauder/BatteryInterface.cpp | 120 ++++++++++++++++------------ esp32_marauder/BatteryInterface.h | 22 ++++- esp32_marauder/configs.h | 69 +++++++--------- 3 files changed, 116 insertions(+), 95 deletions(-) diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index 93c87a7..4ff3e5b 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -1,3 +1,6 @@ + +#ifdef HAS_BATTERY + #include "BatteryInterface.h" #include "lang_var.h" BatteryInterface::BatteryInterface() { @@ -24,37 +27,14 @@ void BatteryInterface::RunSetup() { byte error; byte addr; - #ifdef HAS_BATTERY - - #ifdef BATTERY_ADC_PIN + #ifdef BATTERY_ADC_PIN analogReadResolution(12); pinMode(BATTERY_ADC_PIN, INPUT); this->has_adc_battery = true; - this->i2c_supported = true; + // this->i2c_supported = true; Serial.println(F("Battery: ADC mode")); - #elif !defined(HAS_AXP2101) - Wire.begin(I2C_SDA, I2C_SCL); - Wire.beginTransmission(IP5306_ADDR); - error = Wire.endTransmission(); - - if (error == 0) { - Serial.println(F("Detected IP5306")); - this->has_ip5306 = true; - this->i2c_supported = true; - } - - Wire.beginTransmission(MAX17048_ADDR); - error = Wire.endTransmission(); - - if (error == 0) { - if (maxlipo.begin()) { - Serial.println(F("Detected MAX17048")); - this->has_max17048 = true; - this->i2c_supported = true; - } - } - #else + #elif defined(HAS_AXP2101) bool result = this->power.begin(Wire, AXP2101_SLAVE_ADDRESS, I2C_SDA, I2C_SCL); if (!result) @@ -64,10 +44,38 @@ void BatteryInterface::RunSetup() { this->i2c_supported = true; this->has_axp2101 = true; - #endif + + #else // other i2c (shared) ? defined(I2C_SDA) ? + + Wire.begin(I2C_SDA, I2C_SCL); + + #ifdef HAS_IP5306 + Wire.beginTransmission(IP5306_ADDR); + error = Wire.endTransmission(); + + if (error == 0) { + Serial.println(F("Detected IP5306")); + this->has_ip5306 = true; + this->i2c_supported = true; + } + #endif + + #ifdef HAS_MAX1704X + Wire.beginTransmission(MAX17048_ADDR); + error = Wire.endTransmission(); + + if (error == 0) { + if (maxlipo.begin()) { + Serial.println(F("Detected MAX17048")); + this->has_max17048 = true; + this->i2c_supported = true; + } + } + #endif + + #endif // other i2c this->initTime = millis(); - #endif } int8_t BatteryInterface::getBatteryLevel() { @@ -81,36 +89,40 @@ int8_t BatteryInterface::getBatteryLevel() { } #endif - if (this->has_ip5306) { - Wire.beginTransmission(IP5306_ADDR); - Wire.write(0x78); - if (Wire.endTransmission(false) == 0 && - Wire.requestFrom(IP5306_ADDR, 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; + #ifdef HAS_IP5306 + if (this->has_ip5306) { + Wire.beginTransmission(IP5306_ADDR); + Wire.write(0x78); + if (Wire.endTransmission(false) == 0 && + Wire.requestFrom(IP5306_ADDR, 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; } - this->i2c_supported = false; - return -1; - } + #endif - if (this->has_max17048) { - float percent = this->maxlipo.cellPercent(); + #ifdef HAS_MAX1704X + if (this->has_max17048) { + float percent = this->maxlipo.cellPercent(); - // Sometimes we dumb - if (percent >= 100) - return 100; - else if (percent <= 0) - return 0; - else - return percent; - } + // Sometimes we dumb + if (percent >= 100) + return 100; + else if (percent <= 0) + return 0; + else + return percent; + } + #endif #ifdef HAS_AXP2101 if (this->has_axp2101) { @@ -120,3 +132,5 @@ int8_t BatteryInterface::getBatteryLevel() { return -1; } + +#endif // HAS_BATTERY diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index 0d684c2..a4a295a 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -1,19 +1,27 @@ #pragma once +#ifdef HAS_BATTERY + #ifndef BatteryInterface_h #define BatteryInterface_h #include #include "configs.h" -#include "Adafruit_MAX1704X.h" + +#ifdef HAS_MAX1704X + #include "Adafruit_MAX1704X.h" +#endif #ifdef HAS_AXP2101 #define XPOWERS_CHIP_AXP2101 #include "XPowersLib.h" #endif -#include + +#ifndef BATTERY_ADC_PIN // not 12c + #include +#endif #define IP5306_ADDR 0x75 #define MAX17048_ADDR 0x36 @@ -21,7 +29,10 @@ class BatteryInterface { private: uint32_t initTime = 0; - Adafruit_MAX17048 maxlipo; + + #ifdef HAS_MAX1704X + Adafruit_MAX17048 maxlipo; + #endif #ifdef HAS_AXP2101 XPowersPMU power; @@ -43,4 +54,7 @@ class BatteryInterface { int8_t getBatteryLevel(); }; -#endif +#endif // ifndef BatteryInterface_h + +#endif // HAS_BATTERY + diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 1327b21..84e56d4 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2640,72 +2640,65 @@ //// BATTERY STUFF #ifdef HAS_BATTERY - #ifdef MARAUDER_V4 + #if defined(MARAUDER_V4) || defined(MARAUDER_V6) || defined(MARAUDER_V6_1) \ + || defined(MARAUDER_M5STICKC) || defined(MARAUDER_KIT) #define I2C_SDA 33 #define I2C_SCL 22 - #endif - #ifdef MARAUDER_V6 - #define I2C_SDA 33 - #define I2C_SCL 22 - #endif - - #ifdef MARAUDER_V6_1 - #define I2C_SDA 33 - #define I2C_SCL 22 - #endif - - #ifdef MARAUDER_M5STICKC - #define I2C_SDA 33 - #define I2C_SCL 22 - #endif - - #ifdef MARAUDER_KIT - #define I2C_SDA 33 - #define I2C_SCL 22 - #endif - - #ifdef MARAUDER_MINI + #elif defined(MARAUDER_MINI) #define I2C_SDA 33 #define I2C_SCL 26 - #endif - #ifdef MARAUDER_V7 + #elif defined(MARAUDER_V7) #define I2C_SDA 33 #define I2C_SCL 16 - #endif - #ifdef MARAUDER_V7_1 + #elif defined(MARAUDER_V7_1) #define I2C_SDA 33 #define I2C_SCL 27 - #endif - #ifdef MARAUDER_CYD_MICRO + #elif defined(MARAUDER_CYD_MICRO) #define I2C_SDA 22 #define I2C_SCL 27 - #endif - #ifdef MARAUDER_CYD_2USB + #elif defined(MARAUDER_CYD_2USB) #define I2C_SDA 22 #define I2C_SCL 27 - #endif - #ifdef MARAUDER_CYD_3_5_INCH + #elif defined(MARAUDER_CYD_3_5_INCH) #define I2C_SDA 32 #define I2C_SCL 25 - #endif - #ifdef MARAUDER_CYD_GUITION + #elif defined(MARAUDER_CYD_GUITION) #define I2C_SDA 22 #define I2C_SCL 21 - #endif - #ifdef MARAUDER_V8 + #elif defined(MARAUDER_V8) #define I2C_SCL 4 #define I2C_SDA 5 + + #elif defined(MARAUDER_REV_FEATHER) + #define I2C_SCL 4 + #define I2C_SDA 3 + #define HAS_MAX1704X + #undef BATTERY_ADC_PIN + #undef HAS_AXP2101 + #undef HAS_IP5306 #endif - #endif + #ifdef BATTERY_ADC_PIN + #undef HAS_AXP2101 + #undef HAS_IP5306 + #undef HAS_MAX1704X + #endif + + #ifdef HAS_AXP2101 + #undef BATTERY_ADC_PIN + #undef HAS_IP5306 + #undef HAS_MAX1704X + #endif + + #endif // HAS_BATTERY //// MARAUDER TITLE STUFF #ifdef MARAUDER_V4 From 08535b29658f190f79630441d5dc8f52be88c633 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 15:47:52 -0700 Subject: [PATCH 02/12] minor update --- esp32_marauder/configs.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 84e56d4..512f737 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2644,6 +2644,7 @@ || defined(MARAUDER_M5STICKC) || defined(MARAUDER_KIT) #define I2C_SDA 33 #define I2C_SCL 22 + #define HAS_IP5306 #elif defined(MARAUDER_MINI) #define I2C_SDA 33 @@ -2686,16 +2687,24 @@ #undef HAS_IP5306 #endif + // If we know what we have, we can delete what we're not using #ifdef BATTERY_ADC_PIN #undef HAS_AXP2101 #undef HAS_IP5306 #undef HAS_MAX1704X - #endif - #ifdef HAS_AXP2101 - #undef BATTERY_ADC_PIN + #elif defined(HAS_AXP2101) #undef HAS_IP5306 #undef HAS_MAX1704X + + #elif defined(HAS_MAX1704X) + #undef HAS_IP5306 + #undef HAS_AXP2101 + + #else // punt + #define HAS_AXP2101 + #define HAS_IP5306 + #define HAS_MAX1704X #endif #endif // HAS_BATTERY From 72b30861273e5ed484f096d23c1547421589432c Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 17:51:54 -0700 Subject: [PATCH 03/12] tweak --- esp32_marauder/configs.h | 1 - 1 file changed, 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 512f737..5a58a84 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2644,7 +2644,6 @@ || defined(MARAUDER_M5STICKC) || defined(MARAUDER_KIT) #define I2C_SDA 33 #define I2C_SCL 22 - #define HAS_IP5306 #elif defined(MARAUDER_MINI) #define I2C_SDA 33 From 45e6203cfd8bd6a675727fdd9738edc6b34ad515 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 18:17:28 -0700 Subject: [PATCH 04/12] more ifdef --- esp32_marauder/MenuFunctions.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index a0fd55e..aee04b6 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -43,7 +43,9 @@ extern WiFiScan wifi_scan_obj; extern SDInterface sd_obj; +#ifdef HAS_BATTERY extern BatteryInterface battery_obj; +#endif extern Settings settings_obj; #define FLASH_BUTTON 0 From 81ece18eaafb5338007f92b02e29e29d4980d2b5 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 18:40:18 -0700 Subject: [PATCH 05/12] yawn unused flag setting off tripwires --- esp32_marauder/configs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 5a58a84..dd1b7f3 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2644,6 +2644,7 @@ || defined(MARAUDER_M5STICKC) || defined(MARAUDER_KIT) #define I2C_SDA 33 #define I2C_SCL 22 + #define HAS_IP5306 #elif defined(MARAUDER_MINI) #define I2C_SDA 33 @@ -2652,6 +2653,7 @@ #elif defined(MARAUDER_V7) #define I2C_SDA 33 #define I2C_SCL 16 + #define HAS_IP5306 #elif defined(MARAUDER_V7_1) #define I2C_SDA 33 @@ -2701,7 +2703,7 @@ #undef HAS_AXP2101 #else // punt - #define HAS_AXP2101 + // #define HAS_AXP2101 #define HAS_IP5306 #define HAS_MAX1704X #endif From 438f0d01618968cb4ce34566ffb3e36a0256e189 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 19:19:02 -0700 Subject: [PATCH 06/12] What the F is going on it's clearly defined in cough, but not being recognized in code --- esp32_marauder/BatteryInterface.cpp | 4 ++-- esp32_marauder/BatteryInterface.h | 4 ++-- esp32_marauder/WiFiScan.cpp | 2 +- esp32_marauder/configs.h | 12 ++++++++++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index 4ff3e5b..833eaed 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -1,5 +1,5 @@ -#ifdef HAS_BATTERY +// #ifdef HAS_BATTERY #include "BatteryInterface.h" #include "lang_var.h" @@ -133,4 +133,4 @@ int8_t BatteryInterface::getBatteryLevel() { return -1; } -#endif // HAS_BATTERY +// #endif // HAS_BATTERY diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index a4a295a..3024835 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -1,6 +1,6 @@ #pragma once -#ifdef HAS_BATTERY +// #ifdef HAS_BATTERY #ifndef BatteryInterface_h #define BatteryInterface_h @@ -56,5 +56,5 @@ class BatteryInterface { #endif // ifndef BatteryInterface_h -#endif // HAS_BATTERY +// #endif // HAS_BATTERY diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index bf91ab2..fb19f45 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -3945,7 +3945,7 @@ void WiFiScan::RunInfo() { #endif Serial.println(text_table4[34]); } - #endif + #endif // HAS_BATTERY if (this->wifi_connected) showNetworkInfo(); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index dd1b7f3..3520fd5 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2640,8 +2640,16 @@ //// BATTERY STUFF #ifdef HAS_BATTERY - #if defined(MARAUDER_V4) || defined(MARAUDER_V6) || defined(MARAUDER_V6_1) \ - || defined(MARAUDER_M5STICKC) || defined(MARAUDER_KIT) + #ifdef __AXP192_H__ + #define HAS_AXP2101 + #endif + + #elif defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2) + #define I2C_SDA 33 + #define I2C_SCL 22 + #define HAS_AXP2101 + + #elif defined(MARAUDER_V4) || defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_KIT) #define I2C_SDA 33 #define I2C_SCL 22 #define HAS_IP5306 From a71d16e095a7989689ef7cc40dd6b7e74922a934 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Mon, 8 Jun 2026 19:19:02 -0700 Subject: [PATCH 07/12] What the F is going on it's clearly defined in cough, but not being recognized in code --- esp32_marauder/BatteryInterface.cpp | 4 ++-- esp32_marauder/BatteryInterface.h | 4 ++-- esp32_marauder/WiFiScan.cpp | 2 +- esp32_marauder/configs.h | 14 ++++++++++---- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index 4ff3e5b..833eaed 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -1,5 +1,5 @@ -#ifdef HAS_BATTERY +// #ifdef HAS_BATTERY #include "BatteryInterface.h" #include "lang_var.h" @@ -133,4 +133,4 @@ int8_t BatteryInterface::getBatteryLevel() { return -1; } -#endif // HAS_BATTERY +// #endif // HAS_BATTERY diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index a4a295a..3024835 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -1,6 +1,6 @@ #pragma once -#ifdef HAS_BATTERY +// #ifdef HAS_BATTERY #ifndef BatteryInterface_h #define BatteryInterface_h @@ -56,5 +56,5 @@ class BatteryInterface { #endif // ifndef BatteryInterface_h -#endif // HAS_BATTERY +// #endif // HAS_BATTERY diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index bf91ab2..fb19f45 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -3945,7 +3945,7 @@ void WiFiScan::RunInfo() { #endif Serial.println(text_table4[34]); } - #endif + #endif // HAS_BATTERY if (this->wifi_connected) showNetworkInfo(); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index dd1b7f3..d400f9b 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2640,8 +2640,16 @@ //// BATTERY STUFF #ifdef HAS_BATTERY - #if defined(MARAUDER_V4) || defined(MARAUDER_V6) || defined(MARAUDER_V6_1) \ - || defined(MARAUDER_M5STICKC) || defined(MARAUDER_KIT) + #ifdef __AXP192_H__ + #define HAS_AXP2101 + #endif + + #if defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2) + #define I2C_SDA 33 + #define I2C_SCL 22 + #define HAS_AXP2101 + + #elif defined(MARAUDER_V4) || defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_KIT) #define I2C_SDA 33 #define I2C_SCL 22 #define HAS_IP5306 @@ -2683,7 +2691,6 @@ #define I2C_SCL 4 #define I2C_SDA 3 #define HAS_MAX1704X - #undef BATTERY_ADC_PIN #undef HAS_AXP2101 #undef HAS_IP5306 #endif @@ -2700,7 +2707,6 @@ #elif defined(HAS_MAX1704X) #undef HAS_IP5306 - #undef HAS_AXP2101 #else // punt // #define HAS_AXP2101 From c7820bf141126dd96b7f8615c529d15123da39d8 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Wed, 10 Jun 2026 12:48:44 -0700 Subject: [PATCH 08/12] Works for me let's see if it works for github --- esp32_marauder/BatteryInterface.cpp | 163 +++++++++++++++------------- esp32_marauder/MenuFunctions.h | 4 +- esp32_marauder/configs.h | 2 - 3 files changed, 87 insertions(+), 82 deletions(-) diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index 833eaed..7b85a80 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -4,7 +4,7 @@ #include "BatteryInterface.h" #include "lang_var.h" BatteryInterface::BatteryInterface() { - + } void BatteryInterface::main(uint32_t currentTime) { @@ -27,108 +27,115 @@ void BatteryInterface::RunSetup() { byte error; byte addr; - #ifdef BATTERY_ADC_PIN - analogReadResolution(12); - pinMode(BATTERY_ADC_PIN, INPUT); - this->has_adc_battery = true; - // this->i2c_supported = true; - Serial.println(F("Battery: ADC mode")); + #ifdef HAS_BATTERY - #elif defined(HAS_AXP2101) - bool result = this->power.begin(Wire, AXP2101_SLAVE_ADDRESS, I2C_SDA, I2C_SCL); + #ifdef BATTERY_ADC_PIN + analogReadResolution(12); + pinMode(BATTERY_ADC_PIN, INPUT); + this->has_adc_battery = true; + // this->i2c_supported = true; + Serial.println(F("Battery: ADC mode")); - if (!result) - return; + #elif defined(HAS_AXP2101) && defined(I2C_SDA) + bool result = this->power.begin(Wire, AXP2101_SLAVE_ADDRESS, I2C_SDA, I2C_SCL); - Serial.println(F("Detected AXP2101")); + if (!result) + return; - this->i2c_supported = true; - this->has_axp2101 = true; + Serial.println(F("Detected AXP2101")); - #else // other i2c (shared) ? defined(I2C_SDA) ? + this->i2c_supported = true; + this->has_axp2101 = true; - Wire.begin(I2C_SDA, I2C_SCL); + #elif defined(I2C_SDA) // other i2c (shared) - #ifdef HAS_IP5306 - Wire.beginTransmission(IP5306_ADDR); - error = Wire.endTransmission(); + Wire.begin(I2C_SDA, I2C_SCL); - if (error == 0) { - Serial.println(F("Detected IP5306")); - this->has_ip5306 = true; - this->i2c_supported = true; - } - #endif + #ifdef HAS_IP5306 + Wire.beginTransmission(IP5306_ADDR); + error = Wire.endTransmission(); - #ifdef HAS_MAX1704X - Wire.beginTransmission(MAX17048_ADDR); - error = Wire.endTransmission(); - - if (error == 0) { - if (maxlipo.begin()) { - Serial.println(F("Detected MAX17048")); - this->has_max17048 = true; + if (error == 0) { + Serial.println(F("Detected IP5306")); + this->has_ip5306 = true; this->i2c_supported = true; } - } - #endif + #endif + + #ifdef HAS_MAX1704X + Wire.beginTransmission(MAX17048_ADDR); + error = Wire.endTransmission(); + + if (error == 0) { + if (maxlipo.begin()) { + Serial.println(F("Detected MAX17048")); + this->has_max17048 = true; + this->i2c_supported = true; + } + } + #endif #endif // other i2c this->initTime = millis(); + #endif // HAS_BATTERY } int8_t BatteryInterface::getBatteryLevel() { - #ifdef BATTERY_ADC_PIN - if (this->has_adc_battery) { - int voltage_mv = analogReadMilliVolts(BATTERY_ADC_PIN) * 2; // voltage divider ratio 2:1 - if (voltage_mv <= 3300) return 0; - if (voltage_mv >= 4150) return 100; - return (int8_t)(((voltage_mv - 3300) * 100) / 850); - } - #endif + #ifdef HAS_BATTERY - #ifdef HAS_IP5306 - if (this->has_ip5306) { - Wire.beginTransmission(IP5306_ADDR); - Wire.write(0x78); - if (Wire.endTransmission(false) == 0 && - Wire.requestFrom(IP5306_ADDR, 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; - } + #ifdef BATTERY_ADC_PIN + if (this->has_adc_battery) { + int voltage_mv = analogReadMilliVolts(BATTERY_ADC_PIN) * 2; // voltage divider ratio 2:1 + if (voltage_mv <= 3300) return 0; + if (voltage_mv >= 4150) return 100; + return (int8_t)(((voltage_mv - 3300) * 100) / 850); } - this->i2c_supported = false; - return -1; - } - #endif + #endif + + #ifdef HAS_IP5306 + if (this->has_ip5306) { + Wire.beginTransmission(IP5306_ADDR); + Wire.write(0x78); + if (Wire.endTransmission(false) == 0 && + Wire.requestFrom(IP5306_ADDR, 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 - #ifdef HAS_MAX1704X - if (this->has_max17048) { - float percent = this->maxlipo.cellPercent(); + #ifdef HAS_MAX1704X + if (this->has_max17048) { + float percent = this->maxlipo.cellPercent(); - // Sometimes we dumb - if (percent >= 100) - return 100; - else if (percent <= 0) - return 0; - else - return percent; - } - #endif + // Sometimes we dumb + if (percent >= 100) + return 100; + else if (percent <= 0) + return 0; + else + return percent; + } + #endif - #ifdef HAS_AXP2101 - if (this->has_axp2101) { - return this->power.getBatteryPercent(); - } - #endif + #ifdef HAS_AXP2101 + if (this->has_axp2101) { + return this->power.getBatteryPercent(); + } + #endif + + #endif // HAS_BATTERY return -1; } diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index aee04b6..c614333 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -43,9 +43,9 @@ extern WiFiScan wifi_scan_obj; extern SDInterface sd_obj; -#ifdef HAS_BATTERY +// #ifdef HAS_BATTERY extern BatteryInterface battery_obj; -#endif +// #endif extern Settings settings_obj; #define FLASH_BUTTON 0 diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index d400f9b..5db8aab 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2705,8 +2705,6 @@ #undef HAS_IP5306 #undef HAS_MAX1704X - #elif defined(HAS_MAX1704X) - #undef HAS_IP5306 #else // punt // #define HAS_AXP2101 From 6a144e73ae2a1b312dc033b830e484fe7b24b7d8 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Sun, 14 Jun 2026 03:04:28 -0700 Subject: [PATCH 09/12] finally --- esp32_marauder/BatteryInterface.cpp | 5 +++++ esp32_marauder/BatteryInterface.h | 3 +++ esp32_marauder/configs.h | 29 +++++++++++++++++++++++------ esp32_marauder/esp32_marauder.ino | 10 +--------- 4 files changed, 32 insertions(+), 15 deletions(-) diff --git a/esp32_marauder/BatteryInterface.cpp b/esp32_marauder/BatteryInterface.cpp index 7b85a80..bbf607f 100644 --- a/esp32_marauder/BatteryInterface.cpp +++ b/esp32_marauder/BatteryInterface.cpp @@ -62,6 +62,11 @@ void BatteryInterface::RunSetup() { } #endif + #ifdef HAS_AXP192 + axp192_obj.begin(); + #endif + + #ifdef HAS_MAX1704X Wire.beginTransmission(MAX17048_ADDR); error = Wire.endTransmission(); diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index 3024835..4cd7f28 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -18,6 +18,9 @@ #include "XPowersLib.h" #endif +#ifdef HAS_AXP192 + AXP192 axp192_obj; +#endif #ifndef BATTERY_ADC_PIN // not 12c #include diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 5db8aab..34bd7a6 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -124,6 +124,11 @@ //#define FLIPPER_ZERO_HAT #define HAS_MINI_KB #define HAS_BATTERY + #if defined(MARAUDER_M5STICKC) + #define HAS_AXP192 + #else + #define HAS_TP4057 + #endif #define HAS_BT #define HAS_BUTTONS //#define HAS_NEOPIXEL_LED @@ -237,6 +242,7 @@ #define HAS_TOUCH //#define FLIPPER_ZERO_HAT #define HAS_BATTERY + #define HAS_IP5306 #define HAS_BT //#define HAS_BUTTONS #define HAS_NEOPIXEL_LED @@ -256,6 +262,7 @@ #define HAS_TOUCH //#define FLIPPER_ZERO_HAT #define HAS_BATTERY + #define HAS_IP5306 #define HAS_BT #define HAS_BT_REMOTE #define HAS_BUTTONS @@ -554,7 +561,7 @@ //// POWER MANAGEMENT #ifdef HAS_PWR_MGMT - #if defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2) + #if defined(HAS_AXP192) #include "AXP192.h" #endif @@ -2640,14 +2647,9 @@ //// BATTERY STUFF #ifdef HAS_BATTERY - #ifdef __AXP192_H__ - #define HAS_AXP2101 - #endif - #if defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2) #define I2C_SDA 33 #define I2C_SCL 22 - #define HAS_AXP2101 #elif defined(MARAUDER_V4) || defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_KIT) #define I2C_SDA 33 @@ -2700,6 +2702,20 @@ #undef HAS_AXP2101 #undef HAS_IP5306 #undef HAS_MAX1704X + #undef HAS_AXP192 + +p + // No driver for this LiPo charger + #elif HAS_TP4057 + #undef HAS_AXP2101 + #undef HAS_IP5306 + #undef HAS_MAX1704X + #undef HAS_AXP192 + + #elif defined(HAS_AXP192) + #undef HAS_AXP2101 + #undef HAS_IP5306 + #undef HAS_MAX1704X #elif defined(HAS_AXP2101) #undef HAS_IP5306 @@ -2710,6 +2726,7 @@ // #define HAS_AXP2101 #define HAS_IP5306 #define HAS_MAX1704X + #define HAS_AXP192 #endif #endif // HAS_BATTERY diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index a465117..2fd84d9 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -1,6 +1,6 @@ /* FLASH SETTINGS Board: LOLIN D32 -Flash Frequency: 80MHz + Frequency: 80MHz Partition Scheme: Minimal SPIFFS https://www.online-utility.org/image/convert/to/XBM */ @@ -92,10 +92,6 @@ CommandLine cli_obj; SDInterface sd_obj; #endif -#ifdef MARAUDER_M5STICKC - AXP192 axp192_obj; -#endif - #ifdef HAS_FLIPPER_LED flipperLED flipper_led; #elif defined(XIAO_ESP32_S3) @@ -252,10 +248,6 @@ void setup() delay(100); #endif - #ifdef defined(MARAUDER_M5STICKC) && !defined(MARAUDER_M5STICKCP2) - axp192_obj.begin(); - #endif - #if defined(MARAUDER_M5STICKCP2) // Prevent StickCP2 from turning off when disconnect USB cable pinMode(POWER_HOLD_PIN, OUTPUT); digitalWrite(POWER_HOLD_PIN, HIGH); From 310ca076a525868c632cf0586cbd62f59c4c37f4 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Sun, 14 Jun 2026 03:11:06 -0700 Subject: [PATCH 10/12] typo --- esp32_marauder/configs.h | 1 - 1 file changed, 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 34bd7a6..ceee34f 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2704,7 +2704,6 @@ #undef HAS_MAX1704X #undef HAS_AXP192 -p // No driver for this LiPo charger #elif HAS_TP4057 #undef HAS_AXP2101 From e2b487ded3190a532d4d195ae24045b3d2ee0cdf Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Sun, 14 Jun 2026 03:52:26 -0700 Subject: [PATCH 11/12] typo --- esp32_marauder/BatteryInterface.h | 1 + 1 file changed, 1 insertion(+) diff --git a/esp32_marauder/BatteryInterface.h b/esp32_marauder/BatteryInterface.h index 4cd7f28..fabd4cb 100644 --- a/esp32_marauder/BatteryInterface.h +++ b/esp32_marauder/BatteryInterface.h @@ -19,6 +19,7 @@ #endif #ifdef HAS_AXP192 + #include "AXP192.h" AXP192 axp192_obj; #endif From 5d1a882b93ed63e24111a4245a2143699eb3caa0 Mon Sep 17 00:00:00 2001 From: Peter Shipley Date: Sun, 14 Jun 2026 04:07:57 -0700 Subject: [PATCH 12/12] Grr --- esp32_marauder/configs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index ceee34f..97a6908 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -2705,7 +2705,7 @@ #undef HAS_AXP192 // No driver for this LiPo charger - #elif HAS_TP4057 + #elif defined(HAS_TP4057) #undef HAS_AXP2101 #undef HAS_IP5306 #undef HAS_MAX1704X