mirror of
https://github.com/m5stack/M5Stack.git
synced 2026-05-20 10:06:46 -07:00
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
/******************************************************************************
|
|
* M5Snake : Power management *
|
|
* -------------------------- *
|
|
* Management of the charge of the battery to avoid over charging *
|
|
* Author: Olivier Staquet *
|
|
* Last version available on https://github.com/ostaquet/M5Snake *
|
|
*****************************************************************************/
|
|
#include "Power.h"
|
|
|
|
/**
|
|
* Initialize
|
|
*/
|
|
void PowerClass::begin() {
|
|
// Initialize the power management module (based on IP5306 chip)
|
|
M5.Power.begin();
|
|
|
|
// Check if the control can be operated
|
|
canControl = M5.Power.canControl();
|
|
}
|
|
|
|
/**
|
|
* Adapt charging mode to avoid excessive charging
|
|
*/
|
|
void PowerClass::adaptChargeMode() {
|
|
// If power management not available, ignore the routine
|
|
if(!canControl) {
|
|
return;
|
|
}
|
|
|
|
// Disable the charging if the battery is fully charged
|
|
if(M5.Power.isChargeFull()) {
|
|
M5.Power.setCharge(false);
|
|
} else {
|
|
M5.Power.setCharge(true);
|
|
}
|
|
|
|
// Define the shutdown time at 64s
|
|
M5.Power.setLowPowerShutdownTime(M5.Power.ShutdownTime::SHUTDOWN_64S);
|
|
}
|
|
|
|
/**
|
|
* Return battery level (0-100%)
|
|
* (-1 if cannot communicate with the controller)
|
|
*/
|
|
int8_t PowerClass::getBatteryLevel() {
|
|
return M5.Power.getBatteryLevel();
|
|
}
|
|
|
|
PowerClass Power;
|