Merge "healthd: Don't take device-scoped battery as the main system battery."

This commit is contained in:
Kazuhiro Inaba 2020-03-19 04:40:01 +00:00 committed by Gerrit Code Review
commit f98ee05a17
2 changed files with 15 additions and 0 deletions

View file

@ -233,6 +233,15 @@ int BatteryMonitor::getIntField(const String8& path) {
return value;
}
bool BatteryMonitor::isScopedPowerSupply(const char* name) {
constexpr char kScopeDevice[] = "Device";
String8 path;
path.appendFormat("%s/%s/scope", POWER_SUPPLY_SYSFS_PATH, name);
std::string scope;
return (readFromFile(path, &scope) > 0 && scope == kScopeDevice);
}
void BatteryMonitor::updateValues(void) {
initHealthInfo(mHealthInfo.get());
@ -547,6 +556,11 @@ void BatteryMonitor::init(struct healthd_config *hc) {
break;
case ANDROID_POWER_SUPPLY_TYPE_BATTERY:
// Some devices expose the battery status of sub-component like
// stylus. Such a device-scoped battery info needs to be skipped
// in BatteryMonitor, which is intended to report the status of
// the battery supplying the power to the whole system.
if (isScopedPowerSupply(name)) continue;
mBatteryDevicePresent = true;
if (mHealthdConfig->batteryStatusPath.isEmpty()) {

View file

@ -78,6 +78,7 @@ class BatteryMonitor {
PowerSupplyType readPowerSupplyType(const String8& path);
bool getBooleanField(const String8& path);
int getIntField(const String8& path);
bool isScopedPowerSupply(const char* name);
};
}; // namespace android