summaryrefslogtreecommitdiffstats
path: root/healthd
diff options
context:
space:
mode:
authorRuchi Kandoi <kandoiruchi@google.com>2015-09-28 13:35:59 -0700
committerRuchi Kandoi <kandoiruchi@google.com>2015-10-12 14:31:58 -0700
commit42a981ddee525c55cef40d5da987d0e3d5fa4b4c (patch)
treea6dadac914b59c155c940317ac60af3943ece4a0 /healthd
parent805ef688af4035ac45e79428a1b6328bd0b465d2 (diff)
downloadsystem_core-42a981ddee525c55cef40d5da987d0e3d5fa4b4c.zip
system_core-42a981ddee525c55cef40d5da987d0e3d5fa4b4c.tar.gz
system_core-42a981ddee525c55cef40d5da987d0e3d5fa4b4c.tar.bz2
healthd: Adds fake battery properties for devices with no battery.
Devices which have no battery and are always plugged in will not have any battery property initialized. This causes the 'stable power' to never be switched which is required for updating apps. This change recognizes such a device and manually sets the battery to 100% and charger status to connected to AC mains. It will also fake the battery temperature. Bug: 24258855 Change-Id: I98e5ed0dbeb7f2ab6d3802cd7e0f3a269bd8f31f Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
Diffstat (limited to 'healthd')
-rw-r--r--healthd/BatteryMonitor.cpp19
-rw-r--r--healthd/BatteryMonitor.h1
2 files changed, 19 insertions, 1 deletions
diff --git a/healthd/BatteryMonitor.cpp b/healthd/BatteryMonitor.cpp
index 1cad427..396dfef 100644
--- a/healthd/BatteryMonitor.cpp
+++ b/healthd/BatteryMonitor.cpp
@@ -39,6 +39,7 @@
#define POWER_SUPPLY_SYSFS_PATH "/sys/class/" POWER_SUPPLY_SUBSYSTEM
#define FAKE_BATTERY_CAPACITY 42
#define FAKE_BATTERY_TEMPERATURE 424
+#define ALWAYS_PLUGGED_CAPACITY 100
namespace android {
@@ -199,6 +200,15 @@ bool BatteryMonitor::update(void) {
mBatteryFixedTemperature :
getIntField(mHealthdConfig->batteryTemperaturePath);
+ // For devices which do not have battery and are always plugged
+ // into power souce.
+ if (mAlwaysPluggedDevice) {
+ props.chargerAcOnline = true;
+ props.batteryPresent = true;
+ props.batteryStatus = BATTERY_STATUS_CHARGING;
+ props.batteryHealth = BATTERY_HEALTH_GOOD;
+ }
+
const int SIZE = 128;
char buf[SIZE];
String8 btech;
@@ -542,8 +552,15 @@ void BatteryMonitor::init(struct healthd_config *hc) {
closedir(dir);
}
- if (!mChargerNames.size())
+ // This indicates that there is no charger driver registered.
+ // Typically the case for devices which do not have a battery and
+ // and are always plugged into AC mains.
+ if (!mChargerNames.size()) {
KLOG_ERROR(LOG_TAG, "No charger supplies found\n");
+ mBatteryFixedCapacity = ALWAYS_PLUGGED_CAPACITY;
+ mBatteryFixedTemperature = FAKE_BATTERY_TEMPERATURE;
+ mAlwaysPluggedDevice = true;
+ }
if (!mBatteryDevicePresent) {
KLOG_WARNING(LOG_TAG, "No battery devices found\n");
hc->periodic_chores_interval_fast = -1;
diff --git a/healthd/BatteryMonitor.h b/healthd/BatteryMonitor.h
index 3425f27..a61171f 100644
--- a/healthd/BatteryMonitor.h
+++ b/healthd/BatteryMonitor.h
@@ -46,6 +46,7 @@ class BatteryMonitor {
struct healthd_config *mHealthdConfig;
Vector<String8> mChargerNames;
bool mBatteryDevicePresent;
+ bool mAlwaysPluggedDevice;
int mBatteryFixedCapacity;
int mBatteryFixedTemperature;
struct BatteryProperties props;