Merge pull request #3202 from F4FPR/m6-power-observability

ThinkNode M6: expose external-power and charger state
This commit is contained in:
fdlamotte
2026-09-26 13:51:11 -04:00
committed by GitHub
5 changed files with 61 additions and 0 deletions
@@ -15,6 +15,9 @@ void ThinkNodeM6Board::begin() {
digitalWrite(P_LORA_TX_LED, LOW);
#endif
pinMode(EXT_PWR_DETECT, INPUT);
pinMode(EXT_CHRG_DETECT, INPUT);
delay(10); // give sx1262 some time to power up
}
+29
View File
@@ -36,6 +36,35 @@ public:
return "Elecrow ThinkNode M6";
}
bool hasUsbPowerDetect() const override { return true; }
bool isUsbPowered() override {
// P0.13 is the dedicated USB / external power-detect line on the M6 PCB
// (same pin the Meshtastic M6 variant uses for USB detection).
return digitalRead(EXT_PWR_DETECT) == EXT_PWR_DETECT_VALUE;
}
bool hasSolarChargerDetect() const override { return true; }
bool isSolarChargerActive() override {
// P0.15 is the active-low solar-charger status line. It reports the
// charger's state, not photovoltaic voltage or current.
return digitalRead(EXT_CHRG_DETECT) == EXT_CHRG_DETECT_VALUE;
}
bool isExternalPowered() override {
if (isUsbPowered() || isSolarChargerActive()) {
return true;
}
return NRF52Board::isExternalPowered();
}
bool isChargerActive() override {
// Preserve a generic charging indication while also exposing both
// source-specific states (USB / solar) separately through the CLI.
return isSolarChargerActive() || isUsbPowered();
}
void powerOff() override {
// turn off all leds, sd_power_system_off will not do this for us
+6
View File
@@ -29,6 +29,12 @@
#define AREF_VOLTAGE (3.0)
// External power and charger status lines.
#define EXT_PWR_DETECT (13)
#define EXT_PWR_DETECT_VALUE HIGH
#define EXT_CHRG_DETECT (15)
#define EXT_CHRG_DETECT_VALUE LOW
////////////////////////////////////////////////////////////////////////////////
// Number of pins