BatteryInterface.cpp 588 B

123456789101112131415161718192021222324252627
  1. #include "BatteryInterface.h"
  2. BatteryInterface::BatteryInterface() {
  3. }
  4. void BatteryInterface::RunSetup() {
  5. Wire.begin(I2C_SDA, I2C_SCL);
  6. }
  7. int8_t BatteryInterface::getBatteryLevel() {
  8. Wire.beginTransmission(IP5306_ADDR);
  9. Wire.write(0x78);
  10. if (Wire.endTransmission(false) == 0 &&
  11. Wire.requestFrom(0x75, 1)) {
  12. this->i2c_supported = true;
  13. switch (Wire.read() & 0xF0) {
  14. case 0xE0: return 25;
  15. case 0xC0: return 50;
  16. case 0x80: return 75;
  17. case 0x00: return 100;
  18. default: return 0;
  19. }
  20. }
  21. this->i2c_supported = false;
  22. return -1;
  23. }