/****************************************************************************** * 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;