From: INSUN PYO Date: Thu, 22 Jun 2017 05:24:58 +0000 (+0900) Subject: battery : read fails /sys/class/power_supply/battery/capacity at the first access... X-Git-Tag: submit/tizen/20210607.045509~28 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=524dbbbf313bda840ca8d6e02abe8674536d605f;p=platform%2Fhal%2Fbackend%2Femulator%2Fdevice-emulator.git battery : read fails /sys/class/power_supply/battery/capacity at the first access time. When the TW emulator first accesses /sys/class/power_supply/battery/capacity, it sometimes returns an empty string. So, lowbat_monitor() is called with 0 parameter. "0" means that battery level is 0. When deviced detects battery level 0, it creates a 30 second power off timer. So the emulator automatically powers off intermittently after 35 seconds. If an empty string is returned, we modify it to read /sys/clas/power_supply/battery/capacity again. Signed-off-by: INSUN PYO Change-Id: Ieefd950fe175ef138814624f6a3957ac7432cc74 --- diff --git a/hw/battery/battery.c b/hw/battery/battery.c index 5f16019..583a5c3 100644 --- a/hw/battery/battery.c +++ b/hw/battery/battery.c @@ -176,6 +176,18 @@ static int battery_get_current_state( _E("Failed to get value of (%s, %d)", FILE_BATTERY_CAPACITY, ret); return ret; } + + /* When the TW emulator first accesses /sys/class/power_supply/battery/capacity, + it sometimes returns an empty string. */ + if (capacity_str[0] == 0) { + _E("/sys/class/power_supply/battery/capacity returns null string, retry read it again"); + ret = sys_get_str(FILE_BATTERY_CAPACITY, capacity_str, sizeof(capacity_str)); + if (ret < 0) { + _E("Failed to get value of (%s, %d)", FILE_BATTERY_CAPACITY, ret); + return ret; + } + } + ret = sys_get_str(FILE_BATTERY_CHARGER_ONLINE, charger_str, sizeof(charger_str)); if (ret < 0) { _E("Failed to get value of (%s, %d)", FILE_BATTERY_CHARGER_ONLINE, ret);