1 /* 2 * Copyright (c) 2021 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 "thermal_device_control.h" 17 #include <set> 18 #include "thermal_common.h" 19 #include "device_control_factory.h" 20 #include "thermal_kernel_service.h" 21 22 namespace OHOS { 23 namespace PowerMgr { 24 namespace { 25 auto &service = ThermalKernelService::GetInstance(); 26 } Init()27bool ThermalDeviceControl::Init() 28 { 29 THERMAL_HILOGD(FEATURE_PROTECTOR, "Enter"); 30 auto policy = service.GetPolicy(); 31 if (policy == nullptr) { 32 return false; 33 } 34 35 auto actionList = policy->GetLevelAction(); 36 if (actionList.empty()) { 37 return false; 38 } 39 40 std::set<std::string> actionNameSet; 41 for (auto &level : actionList) { 42 for (auto &action : level.vAction) { 43 actionNameSet.insert(action.name); 44 } 45 } 46 47 for (auto &iter : actionNameSet) { 48 thermalActionMap_.insert(std::make_pair(iter, DeviceControlFactory::Create(iter))); 49 } 50 return true; 51 } 52 } // namespace PowerMgr 53 } // namespace OHOs