Update change log and spec for wrt-plugins-tizen_0.4.20
[platform/framework/web/wrt-plugins-tizen.git] / src / Power / PowerManager.cpp
index 3e7b77f..0173fa8 100755 (executable)
@@ -100,33 +100,47 @@ void PowerManager::request(PowerResource resource, PowerState state){
         throw InvalidValuesException("invalid PowerState");
 
     int ret=0;
-    int native_state = POWER_STATE_SCREEN_OFF;
     switch( state ){
         case PowerState::SCREENDIM :
-            native_state = POWER_STATE_SCREEN_DIM;
         case PowerState::SCREENNORMAL :
-            native_state = POWER_STATE_NORMAL;
         case PowerState::CPUAWAKE :
-            ret = power_lock_state( state.mState == PowerState::SCREENDIM ? POWER_STATE_SCREEN_DIM : POWER_STATE_NORMAL, 0);
-            if( POWER_ERROR_NONE!=ret )
+        {
+            int native_state = POWER_STATE_SCREEN_OFF;
+            if( state == PowerState::SCREENDIM )
+                native_state = POWER_STATE_SCREEN_DIM;
+            else if( state == PowerState::SCREENNORMAL )
+                native_state = POWER_STATE_NORMAL;
+            else
+                native_state = POWER_STATE_SCREEN_OFF;
+
+            ret = power_lock_state( (power_state_e)native_state , 0);
+            if( POWER_ERROR_NONE!=ret ){
+                LOGE("power_lock_state(%d) error %d",native_state, ret);
                 throw UnknownException("power_lock_state error");
+            }
             break;
+        }
         case PowerState::SCREENBRIGHT :
         {
-            int maxBrightness = 100;
+            int maxBrightness;
             ret = device_get_max_brightness(0, &maxBrightness);
             if( DEVICE_ERROR_NONE!=ret) {
                 LOGE("Platform error while getting max brightness: %d", ret);
+                throw UnknownException("Platform error while getting max brightness");
             }
 
             ret = device_set_brightness(0, maxBrightness);
-            if( DEVICE_ERROR_NONE!=ret)
-                throw UnknownException("Platform error while setting max brightness:");
+            if( DEVICE_ERROR_NONE!=ret){
+                LOGE("Platform error while setting %d brightness: %d", maxBrightness, ret);
+                throw UnknownException("Platform error while setting max brightness");
+            }
 
             LOGI("Succeeded setting the brightness to a max level: %d", maxBrightness);
             ret = power_lock_state(POWER_STATE_NORMAL, 0);
-            if( POWER_ERROR_NONE!=ret )
+            if( POWER_ERROR_NONE!=ret ){
+                LOGE("Platform error while locking state %d", ret);
                 throw UnknownException("Platform error while locking state");
+            }
 
             mBrightStateEnable = true;
             power_state_e platform_state = power_get_state();
@@ -134,6 +148,10 @@ void PowerManager::request(PowerResource resource, PowerState state){
                 broadcastScreenState(PowerState::SCREENBRIGHT);
             break;
         }
+        case PowerState::SCREENOFF:
+            LOGE("SCREEN_OFF state cannot be requested");
+            throw InvalidValuesException("SCREEN_OFF state cannot be requested");
+
         default :
             throw UnknownException("Platform error while locking state");
     }
@@ -151,8 +169,10 @@ void PowerManager::release(PowerResource resource){
             LOGI("Platform return value from dim unlock: %d", ret);
 
         ret = device_set_brightness_from_settings(0);
-        if( DEVICE_ERROR_NONE!=ret)
+        if( DEVICE_ERROR_NONE!=ret){
+            LOGE("Platform error while setting restore brightness %d", ret);
             throw UnknownException("Platform error while setting restore brightness");
+        }
 
         mBrightStateEnable = false;
         power_state_e platform_state = power_get_state();
@@ -169,18 +189,31 @@ void PowerManager::release(PowerResource resource){
 double PowerManager::getScreenBrightness(){
     int ret, brightness;
     ret = device_get_brightness(0, &brightness);
-    if( DEVICE_ERROR_NONE!=ret )
+    if( DEVICE_ERROR_NONE!=ret ){
+        LOGE("Platform error while get brightness %d", ret);
         throw UnknownException("Platform error while get brightness");
+    }
     LOGI("Brightness value: %d", brightness);
     return brightness/100.0;
 }
 
 void PowerManager::setScreenBrightness(double brightness){
     int ret;
-    ret = device_set_brightness(0, (int)(brightness*100));
-    if( DEVICE_ERROR_NONE!=ret )
+    if( brightness > 1 || brightness < 0 )
+        throw InvalidValuesException("brightness should be 0 <= brightness <= 1");
+    int maxBrightness;
+    ret = device_get_max_brightness(0, &maxBrightness);
+    if( ret != 0 ){
+        LOGE("Platform error while setting restore brightness: %d", ret);
+        throw UnknownException("Platform error while getting max brightness");
+    }
+    int nativeBrightness = (int)(brightness*maxBrightness);
+    ret = device_set_brightness(0, nativeBrightness);
+    if( DEVICE_ERROR_NONE!=ret ){
+        LOGE("Platform error while setting %d brightness : %d",nativeBrightness, ret);
         throw UnknownException("Platform error while setting brightness.");
-    LOGI("Set the brightness value: %d", (int)(brightness*100));
+    }
+    LOGI("Set the brightness value: %d", nativeBrightness);
 }
 
 bool PowerManager::isScreenOn(){
@@ -198,15 +231,19 @@ void PowerManager::setScreenState(bool onoff){
     else
         ret = pm_change_state(LCD_OFF);
 
-    if( ret<0 )
+    if( ret<0 ){
+        LOGE("Platform error while changing screen state %d", ret);
         throw UnknownException("Platform error while changing screen state");
+    }
 }
 
 void PowerManager::restoreScreenBrightness(){
     int ret;
     ret = device_set_brightness_from_settings(0);
-    if( DEVICE_ERROR_NONE!=ret)
+    if( DEVICE_ERROR_NONE!=ret){
+        LOGE("Platform error while restoring brightness %d", ret);
         throw UnknownException("Platform error while restoring brightness");
+    }
 }
 
 PowerManager* PowerManager::getInstance(){