From e435e871c52c7926204003d2afdf760135bbccd1 Mon Sep 17 00:00:00 2001 From: "giyeol.ok" Date: Fri, 12 Oct 2012 11:03:05 +0900 Subject: [PATCH] merge 2.0_beta --- ss_device_change_handler.c | 52 ++++++++++++++++++++++++++++++++++------------ ss_lowbat_handler.c | 30 +++++++++++++++++--------- ss_predefine.c | 19 +---------------- 3 files changed, 60 insertions(+), 41 deletions(-) diff --git a/ss_device_change_handler.c b/ss_device_change_handler.c index 230d496..1c94512 100755 --- a/ss_device_change_handler.c +++ b/ss_device_change_handler.c @@ -60,6 +60,43 @@ enum snd_jack_types { static int input_device_number; +static int check_lowbat_charge_device(int bInserted) +{ + static int bChargeDeviceInserted = 0; + int val = -1; + int bat_state = -1; + int ret = -1; + if (bInserted == 1) { + if (plugin_intf->OEM_sys_get_battery_charge_now(&val) == 0) { + if (val == 1) + bChargeDeviceInserted = 1; + return 0; + } + } else if (bInserted == 0) { + if (plugin_intf->OEM_sys_get_battery_charge_now(&val) == 0) { + if (val == 0 && bChargeDeviceInserted == 1) { + bChargeDeviceInserted = 0; + //low bat popup during charging device removing + vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state); + if(bat_state < VCONFKEY_SYSMAN_BAT_NORMAL) { + bundle *b = NULL; + b = bundle_create(); + if(bat_state == VCONFKEY_SYSMAN_BAT_POWER_OFF) + bundle_add(b,"_SYSPOPUP_CONTENT_", "poweroff"); + else + bundle_add(b, "_SYSPOPUP_CONTENT_", "warning"); + ret = syspopup_launch("lowbat-syspopup", b); + if (ret < 0) { + PRT_TRACE_EM("popup lauch failed\n"); + } + bundle_free(b); + } + } + return 0; + } + } + return -1; +} static void usb_chgdet_cb(struct ss_main_data *ad) { @@ -74,6 +111,7 @@ static void usb_chgdet_cb(struct ss_main_data *ad) ss_action_entry_call_internal(PREDEF_USBCON, 0); if (plugin_intf->OEM_sys_get_jack_usb_online(&val)==0) { + check_lowbat_charge_device(val); if (val==1) { snprintf(params, sizeof(params), "%d", CB_NOTI_BATT_CHARGE); ss_launch_if_noexist("/usr/bin/sys_device_noti", params); @@ -97,22 +135,10 @@ static void ta_chgdet_cb(struct ss_main_data *ad) char params[BUFF_MAX]; if (plugin_intf->OEM_sys_get_jack_charger_online(&val) == 0) { + check_lowbat_charge_device(val); vconf_set_int(VCONFKEY_SYSMAN_CHARGER_STATUS, val); if (val == 0) { pm_unlock_state(LCD_OFF, STAY_CUR_STATE); - - vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state); - if(bat_state < VCONFKEY_SYSMAN_BAT_NORMAL) { - bundle *b = NULL; - b = bundle_create(); - bundle_add(b, "_SYSPOPUP_CONTENT_", "warning"); - - ret = syspopup_launch("lowbat-syspopup", b); - if (ret < 0) { - PRT_TRACE_EM("popup lauch failed\n"); - } - bundle_free(b); - } } else { pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0); snprintf(params, sizeof(params), "%d", CB_NOTI_BATT_CHARGE); diff --git a/ss_lowbat_handler.c b/ss_lowbat_handler.c index 84f93d8..fc5bd35 100755 --- a/ss_lowbat_handler.c +++ b/ss_lowbat_handler.c @@ -149,14 +149,14 @@ static int lowbat_process(int bat_percent, void *ad) int vconf_state = -1; int bat_full = -1; int i, ret = 0; - + int val = 0; new_bat_capacity = bat_percent; if (new_bat_capacity < 0) return -1; if (new_bat_capacity != cur_bat_capacity) { + PRT_TRACE("[BAT_MON] cur = %d new = %d", cur_bat_capacity, new_bat_capacity); if (vconf_set_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, new_bat_capacity) == 0) cur_bat_capacity = new_bat_capacity; - PRT_TRACE("[BAT_MON] cur = %d new = %d", cur_bat_capacity, new_bat_capacity); } if (0 > vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &vconf_state)) { @@ -165,13 +165,23 @@ static int lowbat_process(int bat_percent, void *ad) } if (new_bat_capacity <= BATTERY_REAL_POWER_OFF) { - new_bat_state = BATTERY_REAL_POWER_OFF; - if (vconf_state != VCONFKEY_SYSMAN_BAT_POWER_OFF) - ret=vconf_set_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, VCONFKEY_SYSMAN_BAT_POWER_OFF); + if (0 > plugin_intf->OEM_sys_get_battery_charge_now(&val)) { + PRT_TRACE_ERR("fail to read charge now from kernel"); + } + PRT_TRACE("charge_now status %d",val); + if (val == 1) { + new_bat_state = BATTERY_POWER_OFF; + if (vconf_state != VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) + ret=vconf_set_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, VCONFKEY_SYSMAN_BAT_CRITICAL_LOW); + } else { + new_bat_state = BATTERY_REAL_POWER_OFF; + if (vconf_state != VCONFKEY_SYSMAN_BAT_POWER_OFF) + ret=vconf_set_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, VCONFKEY_SYSMAN_BAT_POWER_OFF); + } } else if (new_bat_capacity <= BATTERY_POWER_OFF) { new_bat_state = BATTERY_POWER_OFF; - if (vconf_state != VCONFKEY_SYSMAN_BAT_POWER_OFF) - ret=vconf_set_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, VCONFKEY_SYSMAN_BAT_POWER_OFF); + if (vconf_state != VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) + ret=vconf_set_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, VCONFKEY_SYSMAN_BAT_CRITICAL_LOW); } else if (new_bat_capacity <= BATTERY_CRITICAL_LOW) { new_bat_state = BATTERY_CRITICAL_LOW; if (vconf_state != VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) @@ -202,9 +212,9 @@ static int lowbat_process(int bat_percent, void *ad) ss_lowbat_is_charge_in_now(); - if (cur_bat_state == new_bat_state - && cur_bat_state != BATTERY_POWER_OFF) + if (cur_bat_state == new_bat_state) { return 0; + } if (cur_bat_state == BATTERY_UNKNOWN) { for (i = 0; @@ -228,8 +238,8 @@ static int lowbat_process(int bat_percent, void *ad) } } } + PRT_TRACE("[BATMON] Unknown battery state cur:%d new:%d",cur_bat_state,new_bat_state); cur_bat_state = new_bat_state; - PRT_TRACE("[BATMON] Unknown battery state"); return -1; } diff --git a/ss_predefine.c b/ss_predefine.c index e9c1273..966d492 100644 --- a/ss_predefine.c +++ b/ss_predefine.c @@ -170,7 +170,7 @@ int lowmem_def_predefine_action(int argc, char **argv) kill(pid, SIGTERM); - if (oom_adj >= OOMADJ_BACKGRD_UNLOCKED) { + if (oom_adj != OOMADJ_FOREGRD_LOCKED && oom_adj != OOMADJ_FOREGRD_UNLOCKED) { return 0; } @@ -190,11 +190,7 @@ int lowmem_def_predefine_action(int argc, char **argv) } } } - } else { - PRT_TRACE_EM("making memps log for low memory\n"); - make_memps_log(MEMPS_LOG_FILE, 1, "LOWMEM_WARNING"); } - return 0; } @@ -210,19 +206,6 @@ int usbcon_def_predefine_action(int argc, char **argv) vconf_set_int(VCONFKEY_SYSMAN_USB_STATUS, VCONFKEY_SYSMAN_USB_DISCONNECTED); pm_unlock_state(LCD_OFF, STAY_CUR_STATE); - - vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state); - if(bat_state < VCONFKEY_SYSMAN_BAT_NORMAL) { - bundle *b = NULL; - b = bundle_create(); - bundle_add(b, "_SYSPOPUP_CONTENT_", "warning"); - - ret = syspopup_launch("lowbat-syspopup", b); - if (ret < 0) { - PRT_TRACE_EM("popup lauch failed\n"); - } - bundle_free(b); - } return 0; } -- 2.7.4