137a09cd7Sopenharmony_ci/* 237a09cd7Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 337a09cd7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 437a09cd7Sopenharmony_ci * you may not use this file except in compliance with the License. 537a09cd7Sopenharmony_ci * You may obtain a copy of the License at 637a09cd7Sopenharmony_ci * 737a09cd7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 837a09cd7Sopenharmony_ci * 937a09cd7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1037a09cd7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1137a09cd7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1237a09cd7Sopenharmony_ci * See the License for the specific language governing permissions and 1337a09cd7Sopenharmony_ci * limitations under the License. 1437a09cd7Sopenharmony_ci */ 1537a09cd7Sopenharmony_ci 1637a09cd7Sopenharmony_ci#ifndef THERMAL_MANAGER_NAPI_H 1737a09cd7Sopenharmony_ci#define THERMAL_MANAGER_NAPI_H 1837a09cd7Sopenharmony_ci 1937a09cd7Sopenharmony_ci#include <mutex> 2037a09cd7Sopenharmony_ci 2137a09cd7Sopenharmony_ci#include "napi/native_api.h" 2237a09cd7Sopenharmony_ci#include "napi/native_node_api.h" 2337a09cd7Sopenharmony_ci 2437a09cd7Sopenharmony_ci#include "ithermal_level_callback.h" 2537a09cd7Sopenharmony_ci#include "thermal_level_callback_stub.h" 2637a09cd7Sopenharmony_ci#include "thermal_mgr_client.h" 2737a09cd7Sopenharmony_ci 2837a09cd7Sopenharmony_cinamespace OHOS { 2937a09cd7Sopenharmony_cinamespace PowerMgr { 3037a09cd7Sopenharmony_ciclass ThermalLevelCallback : public ThermalLevelCallbackStub { 3137a09cd7Sopenharmony_cipublic: 3237a09cd7Sopenharmony_ci ThermalLevelCallback() = default; 3337a09cd7Sopenharmony_ci virtual ~ThermalLevelCallback(); 3437a09cd7Sopenharmony_ci void UpdateCallback(napi_env env, napi_value jsCallback); 3537a09cd7Sopenharmony_ci void ReleaseCallback(); 3637a09cd7Sopenharmony_ci bool OnThermalLevelChanged(ThermalLevel level) override; 3737a09cd7Sopenharmony_ci void OnThermalLevel(); 3837a09cd7Sopenharmony_ci 3937a09cd7Sopenharmony_ciprivate: 4037a09cd7Sopenharmony_ci ThermalLevel level_ {ThermalLevel::COOL}; 4137a09cd7Sopenharmony_ci napi_ref callbackRef_ {nullptr}; 4237a09cd7Sopenharmony_ci napi_env env_ {nullptr}; 4337a09cd7Sopenharmony_ci std::mutex mutex_; 4437a09cd7Sopenharmony_ci}; 4537a09cd7Sopenharmony_ci 4637a09cd7Sopenharmony_ciclass ThermalManagerNapi { 4737a09cd7Sopenharmony_cipublic: 4837a09cd7Sopenharmony_ci ThermalManagerNapi() = default; 4937a09cd7Sopenharmony_ci virtual ~ThermalManagerNapi() = default; 5037a09cd7Sopenharmony_ci 5137a09cd7Sopenharmony_ci static napi_value Init(napi_env env, napi_value exports); 5237a09cd7Sopenharmony_ci static napi_value InitThermalLevel(napi_env env, napi_value exports); 5337a09cd7Sopenharmony_ci static napi_value SubscribeThermalLevel(napi_env env, napi_callback_info info); 5437a09cd7Sopenharmony_ci static napi_value UnSubscribeThermalLevel(napi_env env, napi_callback_info info); 5537a09cd7Sopenharmony_ci static napi_value GetThermalLevel(napi_env env, napi_callback_info info); 5637a09cd7Sopenharmony_ci static napi_value EnumThermalLevelConstructor(napi_env env, napi_callback_info info); 5737a09cd7Sopenharmony_ci}; 5837a09cd7Sopenharmony_ci} // namespace PowerMgr 5937a09cd7Sopenharmony_ci} // namespace OHOS 6037a09cd7Sopenharmony_ci#endif // THERMAL_MANAGER_NAPI_H 61