From 6591a625e33770d0eb28c1bafe71840b0e51019f Mon Sep 17 00:00:00 2001 From: Tomasz Marciniak Date: Wed, 9 Sep 2015 08:54:18 +0200 Subject: [PATCH] [Power] isScreenOn() adjusted to the documentation. [Verification] Code compiles. TCT did not changed. Change-Id: I65b7d6ac0a40213b050bb7b0160938b790b937ec Signed-off-by: Tomasz Marciniak --- src/power/power_instance.cc | 9 +++++++-- src/power/power_manager.cc | 20 ++++++++++++++++---- src/power/power_manager.h | 2 +- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/power/power_instance.cc b/src/power/power_instance.cc index f8469f77..5d2e1328 100755 --- a/src/power/power_instance.cc +++ b/src/power/power_instance.cc @@ -145,9 +145,14 @@ void PowerInstance::PowerManagerSetscreenbrightness(const picojson::value& args, void PowerInstance::PowerManagerIsscreenon(const picojson::value& args, picojson::object& out) { LoggerD("Enter"); - bool ret = PowerManager::GetInstance()->IsScreenOn(); - ReportSuccess(picojson::value(ret), out); + bool state = false; + PlatformResult result = PowerManager::GetInstance()->IsScreenOn(&state); + if (result.IsError()) + ReportError(result, &out); + else + ReportSuccess(picojson::value(state), out); } + void PowerInstance::PowerManagerRestorescreenbrightness(const picojson::value& args, picojson::object& out) { LoggerD("Enter"); PlatformResult result = diff --git a/src/power/power_manager.cc b/src/power/power_manager.cc index fff19a58..5965b6fa 100755 --- a/src/power/power_manager.cc +++ b/src/power/power_manager.cc @@ -319,13 +319,18 @@ PlatformResult PowerManager::SetScreenBrightness(double brightness) { return set_result; } -bool PowerManager::IsScreenOn() { +PlatformResult PowerManager::IsScreenOn(bool* state) { LoggerD("Enter"); display_state_e platform_state = DISPLAY_STATE_NORMAL; + int ret = device_display_get_state(&platform_state); - if (DEVICE_ERROR_NONE != ret) + if (DEVICE_ERROR_NONE != ret) { LoggerE("device_display_get_state failed (%d)", ret); - return DISPLAY_STATE_SCREEN_OFF != platform_state; + return PlatformResult(ErrorCode::UNKNOWN_ERR, "Error while getting screen state."); + } + + *state = (DISPLAY_STATE_SCREEN_OFF != platform_state); + return PlatformResult(ErrorCode::NO_ERROR); } PlatformResult PowerManager::SetScreenState(bool onoff) { @@ -338,10 +343,17 @@ PlatformResult PowerManager::SetScreenState(bool onoff) { } int timeout = 100; + bool state = false; while (timeout--) { - if (IsScreenOn() == onoff) { + PlatformResult result = IsScreenOn(&state); + if (result.IsError()) { + return result; + } + + if (state == onoff) { break; } + struct timespec sleep_time = { 0, 100L * 1000L * 1000L }; nanosleep(&sleep_time, nullptr); } diff --git a/src/power/power_manager.h b/src/power/power_manager.h index c42b93ee..56191ac5 100755 --- a/src/power/power_manager.h +++ b/src/power/power_manager.h @@ -54,7 +54,7 @@ class PowerManager { common::PlatformResult GetScreenBrightness(double* output); common::PlatformResult SetScreenBrightness(double brightness); common::PlatformResult RestoreScreenBrightness(); - bool IsScreenOn(); + common::PlatformResult IsScreenOn(bool* state); common::PlatformResult SetScreenState(bool onoff); static PowerManager* GetInstance(); -- 2.34.1