Power improvements (#114)
This commit is contained in:
committed by
GitHub
parent
e4206e8637
commit
da81256622
@@ -4,18 +4,38 @@
|
||||
|
||||
namespace tt::hal {
|
||||
|
||||
typedef bool (*PowerIsCharging)();
|
||||
typedef bool (*PowerIsChargingEnabled)();
|
||||
typedef void (*PowerSetChargingEnabled)(bool enabled);
|
||||
typedef uint8_t (*PowerGetBatteryCharge)(); // Power value [0, 255] which maps to 0-100% charge
|
||||
typedef int32_t (*PowerGetCurrent)(); // Consumption or charge current in mAh
|
||||
class Power{
|
||||
|
||||
typedef struct {
|
||||
PowerIsCharging isCharging;
|
||||
PowerIsChargingEnabled isChargingEnabled;
|
||||
PowerSetChargingEnabled setChargingEnabled;
|
||||
PowerGetBatteryCharge getChargeLevel;
|
||||
PowerGetCurrent getCurrent;
|
||||
} Power;
|
||||
public:
|
||||
|
||||
Power() = default;
|
||||
virtual ~Power() = default;
|
||||
|
||||
enum MetricType {
|
||||
IS_CHARGING, // bool
|
||||
CURRENT, // int32_t, mAh
|
||||
BATTERY_VOLTAGE, // uint32_t, mV
|
||||
CHARGE_LEVEL, // uint8_t [0, 100]
|
||||
};
|
||||
|
||||
union MetricData {
|
||||
int32_t valueAsInt32 = 0;
|
||||
uint32_t valueAsUint32;
|
||||
uint8_t valueAsUint8;
|
||||
float valueAsFloat;
|
||||
bool valueAsBool;
|
||||
};
|
||||
|
||||
virtual bool supportsMetric(MetricType type) const = 0;
|
||||
|
||||
/**
|
||||
* @return false when metric is not supported or (temporarily) not available.
|
||||
*/
|
||||
virtual bool getMetric(Power::MetricType type, MetricData& data) = 0;
|
||||
|
||||
virtual bool supportsChargeControl() const { return false; }
|
||||
virtual bool isAllowedToCharge() const { return false; }
|
||||
virtual void setAllowedToCharge(bool canCharge) { /* NO-OP*/ }
|
||||
};
|
||||
|
||||
} // namespace tt
|
||||
|
||||
Reference in New Issue
Block a user