author | Fabrice Desré <fabrice@mozilla.com> |
Thu, 16 Feb 2012 14:40:43 -0800 | |
changeset 87049 | 956fe683561ce651f30bfbff9fd36f26d0e245bd |
parent 87048 | 373679b399185a5f84cc40592c3736d20c900e5a |
child 87050 | 8ae2b959b51dc0ca2020104bd82dd461aa729027 |
push id | 22071 |
push user | bmo@edmorley.co.uk |
push date | Fri, 17 Feb 2012 11:08:28 +0000 |
treeherder | mozilla-central@08e55f36b731 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mounir |
bugs | 727287 |
milestone | 13.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/hal/gonk/GonkHal.cpp +++ b/hal/gonk/GonkHal.cpp @@ -263,20 +263,39 @@ GetCurrentBatteryInformation(hal::Batter FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", "r"); double capacity = dom::battery::kDefaultLevel * 100; if (capacityFile) { fscanf(capacityFile, "%lf", &capacity); fclose(capacityFile); } FILE *chargingFile = fopen("/sys/class/power_supply/battery/charging_source", "r"); - int chargingSrc = 1; + int chargingSrc = BATTERY_CHARGING_USB; + bool done = false; if (chargingFile) { fscanf(chargingFile, "%d", &chargingSrc); fclose(chargingFile); + done = true; + } + + if (!done) { + // toro devices support + chargingFile = fopen("/sys/class/power_supply/battery/status", "r"); + if (chargingFile) { + char status[16]; + fscanf(chargingFile, "%s", &status); + if (!strcmp(status, "Charging") || !strcmp(status, "Full")) { + // no way here to know if we're charging from USB or AC. + chargingSrc = BATTERY_CHARGING_USB; + } else { + chargingSrc = BATTERY_NOT_CHARGING; + } + fclose(chargingFile); + done = true; + } } #ifdef DEBUG if (chargingSrc != BATTERY_NOT_CHARGING && chargingSrc != BATTERY_CHARGING_USB && chargingSrc != BATTERY_CHARGING_AC) { HAL_LOG(("charging_source contained unknown value: %d", chargingSrc)); }