Add varialbe for checking battery initialization 28/237128/2
authorYoungjae Cho <y0.cho@samsung.com>
Tue, 23 Jun 2020 01:37:42 +0000 (10:37 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Fri, 26 Jun 2020 11:50:26 +0000 (11:50 +0000)
Change-Id: Ib3e325abdb0da182a86d07c56796db2366f2722e
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
src/battery/lowbat-handler.c
src/battery/power-supply.c
src/battery/power-supply.h

index d86d224..7e56f44 100644 (file)
@@ -469,7 +469,7 @@ static int lowbat_process(int bat_percent, void *ad)
        bool low_bat = false;
        int result = 0;
 
-       if (battery.online == POWER_SUPPLY_TYPE_UNKNOWN)
+       if (!battery_initialized)
                return -EINVAL;
 
        new_bat_capacity = bat_percent;
index fe0dc14..37619d9 100644 (file)
@@ -98,6 +98,8 @@ static bool launching_health_popup;
 static guint power_timer;
 static device_notifier_state_e old_state = -1;
 
+bool battery_initialized;
+
 bool battery_do_not_disturb(void);
 int battery_pm_change_internal(int pid, int s_bits);
 static int booting_done(void *data);
@@ -902,6 +904,8 @@ static void uevent_power_handler(struct udev_device *dev)
        env_value = udev_device_get_property_value(dev, TEMPERATURE);
        check_temperature_status(env_value);
 
+       battery_initialized = true;
+
        ret = booting_done(NULL);
        if (ret) {
                if (battery.online > POWER_SUPPLY_TYPE_BATTERY)
@@ -995,6 +999,8 @@ static void battery_changed(struct battery_info *info, void *data)
        battery.voltage_average = info->voltage_average;
        battery.freq_strength = info->freq_strength;
 
+       battery_initialized = true;
+
        ret = battery_state(info);
        if (ret != 1)
                return;
@@ -1387,6 +1393,9 @@ static GVariant *dbus_get_battery_info(GDBusConnection *conn,
        if (old_state == DEVICE_NOTIFIER_STATE_STOP)
                goto out;
 
+       if (battery_initialized)
+               goto out;
+
        if (battery_dev && battery_dev->get_current_state) {
                ret = battery_dev->get_current_state(battery_get_info, &info);
                if (ret < 0)
@@ -1687,6 +1696,9 @@ static void power_supply_init(void *data)
        battery.misc = MISC_NONE;
        battery.freq_strength = 0;
 
+       /* It will be true on initializing battery structure */
+       battery_initialized = false;
+
        /* process check battery timer until booting done */
        power_supply_timer_start();
 
index af4fb0c..1a2dfee 100644 (file)
@@ -120,6 +120,7 @@ struct battery_status {
 
 extern struct battery_status battery;
 extern struct battery_status old_battery;
+extern bool battery_initialized;
 
 int power_supply_broadcast(char *sig, int status);
 int battery_pm_change_internal(int pid, int s_bits);