Files
tactility/Devices/lilygo-tdeck-max/Source/devices/TdeckmaxPower.h
T

43 lines
1.5 KiB
C++

#pragma once
#include "Tactility/hal/power/PowerDevice.h"
#include <Bq27220.h>
#include <tactility/device.h>
#include <memory>
using tt::hal::power::PowerDevice;
// Power device for the LilyGO T-Deck Max. Battery metrics come from the BQ27220
// fuel gauge (I2C 0x55); charging status, charge control and power-off (ship
// mode, REG09 BATFET_DIS) use the SY6970 charger. Newer T-Deck Max revisions
// ship the SY6970 (0x6A) instead of the older BQ25896 (0x6B); this board has
// the SY6970 (confirmed by I2C scan). The two are register-compatible for
// everything used here.
class TdeckmaxPower final : public PowerDevice {
std::shared_ptr<Bq27220> gauge;
::Device* i2c; // i2c0 controller, used to reach the SY6970 charger
bool configureCharger() const;
public:
TdeckmaxPower(const std::shared_ptr<Bq27220>& gauge, ::Device* i2c) : gauge(gauge), i2c(i2c) {
configureCharger();
}
std::string getName() const final { return "T-Deck Max Power"; }
std::string getDescription() const final { return "Battery metrics (BQ27220), SY6970 charging and power-off"; }
bool supportsMetric(MetricType type) const override;
bool getMetric(MetricType type, MetricData& data) override;
bool supportsChargeControl() const override { return true; }
bool isAllowedToCharge() const override;
void setAllowedToCharge(bool canCharge) override;
bool supportsPowerOff() const override { return true; }
void powerOff() override;
};