1f16e0440Sopenharmony_ci/* 2f16e0440Sopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3f16e0440Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f16e0440Sopenharmony_ci * you may not use this file except in compliance with the License. 5f16e0440Sopenharmony_ci * You may obtain a copy of the License at 6f16e0440Sopenharmony_ci * 7f16e0440Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f16e0440Sopenharmony_ci * 9f16e0440Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f16e0440Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f16e0440Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f16e0440Sopenharmony_ci * See the License for the specific language governing permissions and 13f16e0440Sopenharmony_ci * limitations under the License. 14f16e0440Sopenharmony_ci */ 15f16e0440Sopenharmony_ci 16f16e0440Sopenharmony_ci#ifndef POWERMGR_BATTERY_MANAGER_BATTERY_CONFIG_H 17f16e0440Sopenharmony_ci#define POWERMGR_BATTERY_MANAGER_BATTERY_CONFIG_H 18f16e0440Sopenharmony_ci 19f16e0440Sopenharmony_ci#include <fstream> 20f16e0440Sopenharmony_ci#include <memory> 21f16e0440Sopenharmony_ci#include <mutex> 22f16e0440Sopenharmony_ci#include <vector> 23f16e0440Sopenharmony_ci#include <string> 24f16e0440Sopenharmony_ci 25f16e0440Sopenharmony_ci#include <json/json.h> 26f16e0440Sopenharmony_ci#include "nocopyable.h" 27f16e0440Sopenharmony_ci 28f16e0440Sopenharmony_cinamespace OHOS { 29f16e0440Sopenharmony_cinamespace PowerMgr { 30f16e0440Sopenharmony_ciclass BatteryConfig : public NoCopyable { 31f16e0440Sopenharmony_cipublic: 32f16e0440Sopenharmony_ci struct LightConf { 33f16e0440Sopenharmony_ci int32_t beginSoc; 34f16e0440Sopenharmony_ci int32_t endSoc; 35f16e0440Sopenharmony_ci uint32_t rgb; 36f16e0440Sopenharmony_ci }; 37f16e0440Sopenharmony_ci struct CommonEventConf { 38f16e0440Sopenharmony_ci std::string eventName; 39f16e0440Sopenharmony_ci std::string uevent; 40f16e0440Sopenharmony_ci std::string sceneConfigName; 41f16e0440Sopenharmony_ci bool sceneConfigEqual; 42f16e0440Sopenharmony_ci std::string sceneConfigValue; 43f16e0440Sopenharmony_ci }; 44f16e0440Sopenharmony_ci static BatteryConfig& GetInstance(); 45f16e0440Sopenharmony_ci bool ParseConfig(); 46f16e0440Sopenharmony_ci bool IsExist(std::string key) const; 47f16e0440Sopenharmony_ci int32_t GetInt(std::string key, int32_t defVal = 0) const; 48f16e0440Sopenharmony_ci const std::vector<LightConf>& GetLightConf() const; 49f16e0440Sopenharmony_ci const std::vector<BatteryConfig::CommonEventConf>& GetCommonEventConf() const; 50f16e0440Sopenharmony_ci 51f16e0440Sopenharmony_ciprivate: 52f16e0440Sopenharmony_ci bool OpenFile(std::ifstream& ifsConf, const std::string& configPath); 53f16e0440Sopenharmony_ci void ParseConfInner(); 54f16e0440Sopenharmony_ci void ParseLightConf(std::string level); 55f16e0440Sopenharmony_ci void ParseBootActionsConf(); 56f16e0440Sopenharmony_ci void ParseCommonEventConf(const Json::Value &bootActionsConfig); 57f16e0440Sopenharmony_ci Json::Value FindConf(const std::string& key) const; 58f16e0440Sopenharmony_ci bool SplitKey(const std::string& key, std::vector<std::string>& keys) const; 59f16e0440Sopenharmony_ci Json::Value GetValue(std::string key) const; 60f16e0440Sopenharmony_ci Json::Value config_; 61f16e0440Sopenharmony_ci std::vector<BatteryConfig::LightConf> lightConf_; 62f16e0440Sopenharmony_ci std::vector<BatteryConfig::CommonEventConf> commonEventConf_; 63f16e0440Sopenharmony_ci static std::mutex mutex_; 64f16e0440Sopenharmony_ci static std::shared_ptr<BatteryConfig> instance_; 65f16e0440Sopenharmony_ci}; 66f16e0440Sopenharmony_ci} // namespace PowerMgr 67f16e0440Sopenharmony_ci} // namespace OHOS 68f16e0440Sopenharmony_ci#endif // POWERMGR_BATTERY_MANAGER_BATTERY_CONFIG_H 69