Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a84b1f64 authored by Ruchi Kandoi's avatar Ruchi Kandoi
Browse files

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: default avatarPavan Kumar S <pavan.kumar.s@intel.com>
Signed-off-by: default avatarJenny TC <jenny.tc@intel.com>
Signed-off-by: default avatarYong Yao <yong.yao@intel.com>
parent 95d52548
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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,
};

+1 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ struct healthd_config {
    android::String8 batteryChargeCounterPath;

    int (*energyCounter)(int64_t *);
    int boot_min_cap;
    bool (*screen_on)(android::BatteryProperties *props);
};

+9 −2
Original line number Diff line number Diff line
@@ -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 {
                    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;
}