Charger: Add a Charger to Android transition threshold

Existing code allows charger-mode to exit to Android even with 0%
battery.
This might lead to more battery discharge while booting to Android,
especially if only USB-charger is connected, and thus certain
features/components not functioning as expected in Android.

This patch adds a configurable parameter to improve the user experience
by preventing the charger exit till battery capacity is good enough to
boot Android

Change-Id: I56a283243551373e962ac562f25eaf11f07666c3
Signed-off-by: Pavan Kumar S <pavan.kumar.s@intel.com>
Signed-off-by: Jenny TC <jenny.tc@intel.com>
Signed-off-by: Yong Yao <yong.yao@intel.com>
This commit is contained in:
Ruchi Kandoi 2014-10-21 18:24:11 -07:00
parent 95d52548b9
commit a84b1f64cc
3 changed files with 11 additions and 2 deletions

View file

@ -53,6 +53,7 @@ static struct healthd_config healthd_config = {
.batteryCurrentAvgPath = String8(String8::kEmptyString),
.batteryChargeCounterPath = String8(String8::kEmptyString),
.energyCounter = NULL,
.boot_min_cap = 0,
.screen_on = NULL,
};

View file

@ -67,6 +67,7 @@ struct healthd_config {
android::String8 batteryChargeCounterPath;
int (*energyCounter)(int64_t *);
int boot_min_cap;
bool (*screen_on)(android::BatteryProperties *props);
};

View file

@ -116,6 +116,7 @@ struct charger {
struct animation *batt_anim;
gr_surface surf_unknown;
int boot_min_cap;
};
static struct frame batt_anim_frames[] = {
@ -523,8 +524,13 @@ static void process_key(struct charger *charger, int code, int64_t now)
LOGW("[%" PRId64 "] booting from charger mode\n", now);
property_set("sys.boot_from_charger_mode", "1");
} else {
LOGW("[%" PRId64 "] rebooting\n", now);
android_reboot(ANDROID_RB_RESTART, 0, 0);
if (charger->batt_anim->capacity >= charger->boot_min_cap) {
LOGW("[%" PRId64 "] rebooting\n", now);
android_reboot(ANDROID_RB_RESTART, 0, 0);
} else {
LOGV("[%lld] ignore power-button press, battery level "
"less than minimum\n", now);
}
}
} else {
/* if the key is pressed but timeout hasn't expired,
@ -711,4 +717,5 @@ void healthd_mode_charger_init(struct healthd_config* config)
charger->next_key_check = -1;
charger->next_pwr_check = -1;
healthd_config = config;
charger->boot_min_cap = config->boot_min_cap;
}