From 24887dd6736dc73bb25a5016298786f0582d335a Mon Sep 17 00:00:00 2001 From: Joohyun Kim Date: Mon, 25 Mar 2013 14:02:43 +0900 Subject: [PATCH] Update PowerManager Implementation Change-Id: I2cff3e948cf4c60093aa46eef9a65279a5d41af4 Signed-off-by: Joohyun Kim --- src/system/FSys_PowerManagerImpl.cpp | 110 ++++++++++++++++------------------- 1 file changed, 49 insertions(+), 61 deletions(-) diff --git a/src/system/FSys_PowerManagerImpl.cpp b/src/system/FSys_PowerManagerImpl.cpp index 7807259..82da699 100644 --- a/src/system/FSys_PowerManagerImpl.cpp +++ b/src/system/FSys_PowerManagerImpl.cpp @@ -117,55 +117,52 @@ _ActiveEventListener::OnActiveAppChanged(const Tizen::App::AppId& appId) { ret = power_lock_state(POWER_STATE_SCREEN_OFF, 0); SysTryReturnVoidResult(NID_SYS, ret == 0, E_SYSTEM, "[E_SYSTEM] It failed to lock the power state"); - } + } } } _ActiveEventListener* pActiveEventListener = null; void -DeviceBatteryWarnCallback(device_battery_warn_e status, void* userData) +BatteryLevelVConfCallback(keynode_t* node, void* userData) { - SysLog(NID_SYS, "Battery Warn Level is called %d", status); + SysLog(NID_SYS, "Battery Warn Level is changed"); BatteryLevel batteryLevel; - switch(status) - { - case DEVICE_BATTERY_WARN_EMPTY: - { - batteryLevel = BATTERY_EMPTY; - break; - } - case DEVICE_BATTERY_WARN_CRITICAL: - { - batteryLevel = BATTERY_CRITICAL; - break; - } - case DEVICE_BATTERY_WARN_LOW: - { - batteryLevel = BATTERY_LOW; - break; - } - case DEVICE_BATTERY_WARN_NORMAL: - { - batteryLevel = BATTERY_HIGH; - break; - } - case DEVICE_BATTERY_WARN_FULL: - { - batteryLevel = BATTERY_FULL; - break; - } - default: - return; - } - _AppImpl* pAppImpl = _AppImpl::GetInstance(); - if(pAppImpl != null) + if (strcmp(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, vconf_keynode_get_name(node)) == 0) { - SysLog(NID_SYS, "Battery Level event is forwarded"); - pAppImpl->OnBatteryLevelChanged(batteryLevel); + int level = 0; + if(vconf_get_int(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, &level) >= 0) + { + switch(level) + { + case VCONFKEY_SYSMAN_BAT_LEVEL_EMPTY: + batteryLevel = BATTERY_EMPTY; + break; + case VCONFKEY_SYSMAN_BAT_LEVEL_CRITICAL: + batteryLevel = BATTERY_CRITICAL; + break; + case VCONFKEY_SYSMAN_BAT_LEVEL_LOW: + batteryLevel = BATTERY_EMPTY; + break; + case VCONFKEY_SYSMAN_BAT_LEVEL_HIGH: + batteryLevel = BATTERY_EMPTY; + break; + case VCONFKEY_SYSMAN_BAT_LEVEL_FULL: + batteryLevel = BATTERY_EMPTY; + break; + default: + SysLogException(NID_SYS, E_SYSTEM, "Unavailable battery level is required."); + return; + } + _AppImpl* pAppImpl = _AppImpl::GetInstance(); + if(pAppImpl != null) + { + SysLog(NID_SYS, "Battery Level event is forwarded"); + pAppImpl->OnBatteryLevelChanged(batteryLevel); + } + } } - } void @@ -235,7 +232,7 @@ PowerChangedCallback(power_state_e state, void* userData) { while(pEnumerator->MoveNext() == E_SUCCESS) { - + pEnumerator->GetCurrent(pIPowerManagerEventListener); if(pIPowerManagerEventListener != null) { @@ -443,9 +440,7 @@ _PowerManagerImpl::KeepCpuAwake(bool enable) result _PowerManagerImpl::InitBatteryEvent(void) { - int ret = 0; - ret = device_battery_warning_set_cb(DeviceBatteryWarnCallback, null); - + int ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, BatteryLevelVConfCallback, null); SysTryReturnResult(NID_SYS, ret == 0, E_SYSTEM, "It failed to set the battery event"); return E_SUCCESS; @@ -730,7 +725,7 @@ _PowerManagerImpl::AddChargingEventListener(IChargingEventListener& listener, bo if (isSet == false || __pChargingEventList->GetCount() == 0) { - r = __pChargingEventList->Add(&listener); + r = __pChargingEventList->Add(&listener); } else { @@ -834,41 +829,34 @@ _PowerManagerImpl::GetCurrentBatteryLevelInPercentage(void) BatteryLevel _PowerManagerImpl::GetCurrentBatteryLevel(void) { - int ret = 0; - //int batteryLevel = 0; - BatteryLevel level = BATTERY_FULL; - device_battery_warn_e batteryStatus = DEVICE_BATTERY_WARN_EMPTY; - - ret = device_battery_get_warning_status(&batteryStatus); + int batteryLevel = 0; + BatteryLevel level = BATTERY_EMPTY; + int ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, &batteryLevel); if(ret != 0) { - SetLastResult(E_SYSTEM); + SysLogException(NID_SYS, E_SYSTEM, "It is failed to get battery level."); return level; } - switch (batteryStatus) + switch(batteryLevel) { - case DEVICE_BATTERY_WARN_FULL: + case VCONFKEY_SYSMAN_BAT_LEVEL_FULL: level = BATTERY_LEVEL_FULL; break; - case DEVICE_BATTERY_WARN_NORMAL: + case VCONFKEY_SYSMAN_BAT_LEVEL_HIGH: level = BATTERY_LEVEL_HIGH; break; - case DEVICE_BATTERY_WARN_LOW: + case VCONFKEY_SYSMAN_BAT_LEVEL_LOW: level = BATTERY_LEVEL_LOW; break; - case DEVICE_BATTERY_WARN_CRITICAL: + case VCONFKEY_SYSMAN_BAT_LEVEL_CRITICAL: level = BATTERY_LEVEL_CRITICAL; break; - case DEVICE_BATTERY_WARN_EMPTY: + default: level = BATTERY_LEVEL_EMPTY; break; - default: - SysLogException(NID_SYS, E_SYSTEM, "There is a system error occured."); - SetLastResult(E_SYSTEM); - return level; } - SetLastResult(E_SUCCESS); + return level; } -- 2.7.4