You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
752 B
38 lines
752 B
#include "axp2101.h"
|
|
#include "board.h"
|
|
#include "display.h"
|
|
|
|
#include <esp_log.h>
|
|
|
|
#define TAG "Axp2101"
|
|
|
|
Axp2101::Axp2101(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : I2cDevice(i2c_bus, addr) {
|
|
}
|
|
|
|
int Axp2101::GetBatteryCurrentDirection() {
|
|
return (ReadReg(0x01) & 0b01100000) >> 5;
|
|
}
|
|
|
|
bool Axp2101::IsCharging() {
|
|
return GetBatteryCurrentDirection() == 1;
|
|
}
|
|
|
|
bool Axp2101::IsDischarging() {
|
|
return GetBatteryCurrentDirection() == 2;
|
|
}
|
|
|
|
bool Axp2101::IsChargingDone() {
|
|
uint8_t value = ReadReg(0x01);
|
|
return (value & 0b00000111) == 0b00000100;
|
|
}
|
|
|
|
int Axp2101::GetBatteryLevel() {
|
|
return ReadReg(0xA4);
|
|
}
|
|
|
|
void Axp2101::PowerOff() {
|
|
uint8_t value = ReadReg(0x10);
|
|
value = value | 0x01;
|
|
WriteReg(0x10, value);
|
|
}
|