axp2101.cc 815 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "axp2101.h"
  2. #include "board.h"
  3. #include "display.h"
  4. #include <esp_log.h>
  5. #define TAG "Axp2101"
  6. Axp2101::Axp2101(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : I2cDevice(i2c_bus, addr) {
  7. }
  8. int Axp2101::GetBatteryCurrentDirection() {
  9. return (ReadReg(0x01) & 0b01100000) >> 5;
  10. }
  11. bool Axp2101::IsCharging() {
  12. return GetBatteryCurrentDirection() == 1;
  13. }
  14. bool Axp2101::IsDischarging() {
  15. return GetBatteryCurrentDirection() == 2;
  16. }
  17. bool Axp2101::IsChargingDone() {
  18. uint8_t value = ReadReg(0x01);
  19. return (value & 0b00000111) == 0b00000100;
  20. }
  21. int Axp2101::GetBatteryLevel() {
  22. return ReadReg(0xA4);
  23. }
  24. float Axp2101::GetTemperature() {
  25. return ReadReg(0xA5);
  26. }
  27. void Axp2101::PowerOff() {
  28. uint8_t value = ReadReg(0x10);
  29. value = value | 0x01;
  30. WriteReg(0x10, value);
  31. }