insert battery level set routine to support battery level checking
authorGiyeol Ok <giyeol.ok@samsung.com>
Thu, 14 Feb 2013 05:44:57 +0000 (14:44 +0900)
committerGiyeol Ok <giyeol.ok@samsung.com>
Thu, 14 Feb 2013 05:54:19 +0000 (14:54 +0900)
Signed-off-by: Giyeol Ok <giyeol.ok@samsung.com>
Change-Id: I37886aa8e379dfb8aad69ba877abf3c2ab0c9dc7

packaging/system-server.spec
ss_lowbat_handler.c

index 3b02e37..df7b1e2 100755 (executable)
@@ -2,7 +2,7 @@
 Name:       system-server
 Summary:    System server
 Version: 0.1.63
-Release:    1
+Release:    2
 Group:      Framework/system
 License:    Apache License, Version 2.0
 Source0:    system-server-%{version}.tar.gz
@@ -72,6 +72,7 @@ vconftool set -t int memory/sysman/sliding_keyboard -1 -i
 vconftool set -t int memory/sysman/mmc_mount -1 -i
 vconftool set -t int memory/sysman/mmc_unmount -1 -i
 vconftool set -t int memory/sysman/mmc_format -1 -i
+vconftool set -t int memory/sysman/battery_level_status -1 -i
 
 vconftool set -t string memory/private/sysman/added_storage_uevent "" -i
 vconftool set -t string memory/private/sysman/removed_storage_uevent "" -u 5000 -i
index 2e5dcc9..44cfbab 100755 (executable)
 
 #define LOWBAT_EXEC_PATH               PREFIX"/bin/lowbatt-popup"
 
-static int battery_level_table[] = {
-       5,                      /* BATTERY_LEVEL0 */
-       15,                     /* 1 */
-       25,                     /* 2 */
-       40,                     /* 3 */
-       60,                     /* 4 */
-       80,                     /* 5 */
-       100,                    /* 6 */
-};
+#define        BATTERY_LEVEL_CHECK_FULL        95
+#define        BATTERY_LEVEL_CHECK_HIGH        15
+#define        BATTERY_LEVEL_CHECK_LOW         5
+#define        BATTERY_LEVEL_CHECK_CRITICAL    1
 
 #define _SYS_LOW_POWER "LOW_POWER"
 
@@ -252,6 +247,34 @@ static int lowbat_read()
        return bat_percent;
 }
 
+static void __ss_change_lowbat_level(int bat_percent)
+{
+       int prev, now;
+
+       if (cur_bat_capacity == bat_percent)
+               return;
+
+       if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, &prev) < 0) {
+               PRT_TRACE_ERR("vconf_get_int() failed");
+               return;
+       }
+
+
+       if (bat_percent > BATTERY_LEVEL_CHECK_FULL) {
+               now = VCONFKEY_SYSMAN_BAT_LEVEL_FULL;
+       } else if (bat_percent > BATTERY_LEVEL_CHECK_HIGH) {
+               now = VCONFKEY_SYSMAN_BAT_LEVEL_HIGH;
+       } else if (bat_percent > BATTERY_LEVEL_CHECK_LOW) {
+               now = VCONFKEY_SYSMAN_BAT_LEVEL_LOW;
+       } else if (bat_percent > BATTERY_LEVEL_CHECK_CRITICAL) {
+               now = VCONFKEY_SYSMAN_BAT_LEVEL_CRITICAL;
+       } else {
+               now = VCONFKEY_SYSMAN_BAT_LEVEL_EMPTY;
+       }
+
+       if (prev != now)
+               vconf_set_int(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, now);
+}
 int ss_lowbat_monitor(void *data)
 {
        struct ss_main_data *ad = (struct ss_main_data *)data;
@@ -270,6 +293,7 @@ int ss_lowbat_monitor(void *data)
        }
        if (bat_percent > 100)
                bat_percent = 100;
+       __ss_change_lowbat_level(bat_percent);
 
        if (lowbat_process(bat_percent, ad) < 0)
                ecore_timer_interval_set(lowbat_timer, BAT_MON_INTERVAL_MIN);
@@ -311,6 +335,7 @@ int ss_lowbat_init(struct ss_main_data *ad)
        /* need check battery */
        lowbat_timer =
            ecore_timer_add(BAT_MON_INTERVAL_MIN, ss_lowbat_monitor, ad);
+       __ss_change_lowbat_level(bat_percent);
        ss_lowbat_is_charge_in_now();
 
        vconf_notify_key_changed(VCONFKEY_PM_STATE, (void *)wakeup_cb, NULL);