Merge "healthd: Don't take device-scoped battery as the main system battery."
This commit is contained in:
commit
f98ee05a17
2 changed files with 15 additions and 0 deletions
|
@ -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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue