1595d5899Sopenharmony_ci/* 2595d5899Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd. 3595d5899Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4595d5899Sopenharmony_ci * you may not use this file except in compliance with the License. 5595d5899Sopenharmony_ci * You may obtain a copy of the License at 6595d5899Sopenharmony_ci * 7595d5899Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8595d5899Sopenharmony_ci * 9595d5899Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10595d5899Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11595d5899Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12595d5899Sopenharmony_ci * See the License for the specific language governing permissions and 13595d5899Sopenharmony_ci * limitations under the License. 14595d5899Sopenharmony_ci */ 15595d5899Sopenharmony_ci 16595d5899Sopenharmony_ci#include "config_parser.h" 17595d5899Sopenharmony_ci 18595d5899Sopenharmony_ci#include "display_log.h" 19595d5899Sopenharmony_ci 20595d5899Sopenharmony_cinamespace OHOS { 21595d5899Sopenharmony_cinamespace DisplayPowerMgr { 22595d5899Sopenharmony_cinamespace { 23595d5899Sopenharmony_ciconstexpr int DISPLAY_ID_MAX = 5; 24595d5899Sopenharmony_ciconst std::string CONFIG_NAME = "brightness_lux_threshold_config"; 25595d5899Sopenharmony_ci} // namespace 26595d5899Sopenharmony_ci 27595d5899Sopenharmony_ciusing namespace OHOS::DisplayPowerMgr; 28595d5899Sopenharmony_ci 29595d5899Sopenharmony_ciConfigParse& ConfigParse::Get() 30595d5899Sopenharmony_ci{ 31595d5899Sopenharmony_ci static ConfigParse ConfigParse; 32595d5899Sopenharmony_ci return ConfigParse; 33595d5899Sopenharmony_ci} 34595d5899Sopenharmony_ci 35595d5899Sopenharmony_civoid ConfigParse::Initialize() 36595d5899Sopenharmony_ci{ 37595d5899Sopenharmony_ci std::lock_guard<std::mutex> lock(mLock); 38595d5899Sopenharmony_ci if (mIsInitialized.load()) [[unlikely]] { 39595d5899Sopenharmony_ci DISPLAY_HILOGI(FEAT_BRIGHTNESS, "Already init!"); 40595d5899Sopenharmony_ci return; 41595d5899Sopenharmony_ci } 42595d5899Sopenharmony_ci BrightnessConfigParser::ParseConfig(mScreenConfig.brightnessConfig); 43595d5899Sopenharmony_ci BrightnessConfigParser::PrintConfig(mScreenConfig.brightnessConfig); 44595d5899Sopenharmony_ci for (int displayId = 0; displayId < DISPLAY_ID_MAX; displayId++) { 45595d5899Sopenharmony_ci DISPLAY_HILOGI(FEAT_BRIGHTNESS, "[%{public}d] Already init!", displayId); 46595d5899Sopenharmony_ci Config brightnessConfig{}; 47595d5899Sopenharmony_ci ParseConfig(displayId, brightnessConfig); 48595d5899Sopenharmony_ci PrintConfig(displayId, brightnessConfig); 49595d5899Sopenharmony_ci mConfig[displayId] = brightnessConfig; 50595d5899Sopenharmony_ci } 51595d5899Sopenharmony_ci mIsInitialized = true; 52595d5899Sopenharmony_ci} 53595d5899Sopenharmony_ci 54595d5899Sopenharmony_ciconst std::unordered_map<int, Config>& ConfigParse::GetBrightnessConfig() const 55595d5899Sopenharmony_ci{ 56595d5899Sopenharmony_ci return mConfig; 57595d5899Sopenharmony_ci} 58595d5899Sopenharmony_ci 59595d5899Sopenharmony_ciconst ScreenConfig& ConfigParse::GetScreenConfig() const 60595d5899Sopenharmony_ci{ 61595d5899Sopenharmony_ci return mScreenConfig; 62595d5899Sopenharmony_ci} 63595d5899Sopenharmony_ci 64595d5899Sopenharmony_cibool ConfigParse::ParseConfig(int displayId, Config& data) const 65595d5899Sopenharmony_ci{ 66595d5899Sopenharmony_ci DISPLAY_HILOGI(FEAT_BRIGHTNESS, "[%{public}d] parse Config start!", displayId); 67595d5899Sopenharmony_ci CalculationConfigParser::ParseConfig(displayId, data.calculationConfig); 68595d5899Sopenharmony_ci LuxFilterConfigParser::ParseConfig(displayId, data.luxFilterConfig); 69595d5899Sopenharmony_ci LuxThresholdConfigParser::ParseConfig(displayId, data.luxThresholdConfig); 70595d5899Sopenharmony_ci DISPLAY_HILOGI(FEAT_BRIGHTNESS, "[%{public}d] parse Config over!", displayId); 71595d5899Sopenharmony_ci return true; 72595d5899Sopenharmony_ci} 73595d5899Sopenharmony_ci 74595d5899Sopenharmony_civoid ConfigParse::PrintConfig(int displayId, const Config& data) const 75595d5899Sopenharmony_ci{ 76595d5899Sopenharmony_ci CalculationConfigParser::PrintConfig(displayId, data.calculationConfig); 77595d5899Sopenharmony_ci LuxFilterConfigParser::PrintConfig(displayId, data.luxFilterConfig); 78595d5899Sopenharmony_ci LuxThresholdConfigParser::PrintConfig(displayId, data.luxThresholdConfig); 79595d5899Sopenharmony_ci} 80595d5899Sopenharmony_ci} // namespace DisplayPowerMgr 81595d5899Sopenharmony_ci} // namespace OHOS 82