1 /* 2 * Copyright (c) 2023-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "brightness_action.h" 17 18 #include <hisysevent.h> 19 #include <ipc_skeleton.h> 20 21 #include "display_log.h" 22 #include "display_manager_lite.h" 23 #include "dm_common.h" 24 #include "screen_manager_lite.h" 25 26 namespace OHOS { 27 namespace DisplayPowerMgr { BrightnessAction(uint32_t displayId)28 BrightnessAction::BrightnessAction(uint32_t displayId) : mDisplayId(displayId) 29 {} 30 GetDisplayId()31 uint32_t BrightnessAction::GetDisplayId() 32 { 33 return mDisplayId; 34 } 35 SetDisplayId(uint32_t displayId)36 void BrightnessAction::SetDisplayId(uint32_t displayId) 37 { 38 mDisplayId = displayId; 39 } 40 GetDisplayState()41 DisplayState BrightnessAction::GetDisplayState() 42 { 43 DisplayState state = DisplayState::DISPLAY_UNKNOWN; 44 Rosen::ScreenPowerState powerState = Rosen::ScreenManagerLite::GetInstance().GetScreenPower(mDisplayId); 45 DISPLAY_HILOGI(FEAT_STATE, "ScreenPowerState=%{public}d", static_cast<uint32_t>(powerState)); 46 switch (powerState) { 47 case Rosen::ScreenPowerState::POWER_ON: 48 state = DisplayState::DISPLAY_ON; 49 break; 50 case Rosen::ScreenPowerState::POWER_STAND_BY: 51 state = DisplayState::DISPLAY_DIM; 52 break; 53 case Rosen::ScreenPowerState::POWER_SUSPEND: 54 state = DisplayState::DISPLAY_SUSPEND; 55 break; 56 case Rosen::ScreenPowerState::POWER_OFF: 57 state = DisplayState::DISPLAY_OFF; 58 break; 59 default: 60 break; 61 } 62 DISPLAY_HILOGI(FEAT_STATE, "state=%{public}u displayId=%{public}u", static_cast<uint32_t>(state), mDisplayId); 63 return state; 64 } 65 GetBrightness()66 uint32_t BrightnessAction::GetBrightness() 67 { 68 std::lock_guard lock(mMutexBrightness); 69 std::string identity = IPCSkeleton::ResetCallingIdentity(); 70 mBrightness = Rosen::DisplayManagerLite::GetInstance().GetScreenBrightness(mDisplayId); 71 IPCSkeleton::SetCallingIdentity(identity); 72 DISPLAY_HILOGD(FEAT_BRIGHTNESS, "displayId=%{public}u, brightness=%{public}u", mDisplayId, mBrightness); 73 return mBrightness; 74 } 75 SetBrightness(uint32_t value)76 bool BrightnessAction::SetBrightness(uint32_t value) 77 { 78 return SetBrightness(mDisplayId, value); 79 } 80 SetBrightness(uint32_t displayId,uint32_t value)81 bool BrightnessAction::SetBrightness(uint32_t displayId, uint32_t value) 82 { 83 DISPLAY_HILOGI(FEAT_BRIGHTNESS, "SetBrightness mDisplayId=%{public}u, displayId=%{public}u ,brightness=%{public}u", 84 mDisplayId, displayId, value); 85 DISPLAY_HILOGD(FEAT_BRIGHTNESS, "displayId=%{public}u, brightness=%{public}u", displayId, value); 86 std::string identity = IPCSkeleton::ResetCallingIdentity(); 87 bool isSucc = Rosen::DisplayManagerLite::GetInstance().SetScreenBrightness(displayId, value); 88 IPCSkeleton::SetCallingIdentity(identity); 89 std::lock_guard lock(mMutexBrightness); 90 mBrightness = isSucc ? value : mBrightness; 91 return isSucc; 92 } 93 } // namespace DisplayPowerMgr 94 } // namespace OHOS 95