1/* 2 * Copyright (c) 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#ifndef OHOS_HDI_THERMAL_V1_1_ITHERMALINTERFACE_H 17#define OHOS_HDI_THERMAL_V1_1_ITHERMALINTERFACE_H 18 19#include <stdint.h> 20#include <hdf_base.h> 21#include <hdi_base.h> 22#include "thermal/v1_1/ifan_callback.h" 23#include "thermal/v1_1/ithermal_callback.h" 24#include "thermal/v1_1/thermal_types.h" 25 26#ifndef HDI_BUFF_MAX_SIZE 27#define HDI_BUFF_MAX_SIZE (1024 * 200) 28#endif 29 30#ifndef HDI_CHECK_VALUE_RETURN 31#define HDI_CHECK_VALUE_RETURN(lv, compare, rv, ret) do { \ 32 if ((lv) compare (rv)) { \ 33 return ret; \ 34 } \ 35} while (false) 36#endif 37 38#ifndef HDI_CHECK_VALUE_RET_GOTO 39#define HDI_CHECK_VALUE_RET_GOTO(lv, compare, rv, ret, value, table) do { \ 40 if ((lv) compare (rv)) { \ 41 ret = value; \ 42 goto table; \ 43 } \ 44} while (false) 45#endif 46 47namespace OHOS { 48namespace HDI { 49namespace Thermal { 50namespace V1_1 { 51using namespace OHOS; 52using namespace OHOS::HDI; 53 54enum { 55 CMD_THERMAL_INTERFACE_GET_VERSION = 0, 56 CMD_THERMAL_INTERFACE_SET_CPU_FREQ = 1, 57 CMD_THERMAL_INTERFACE_SET_GPU_FREQ = 2, 58 CMD_THERMAL_INTERFACE_SET_BATTERY_CURRENT = 3, 59 CMD_THERMAL_INTERFACE_GET_THERMAL_ZONE_INFO = 4, 60 CMD_THERMAL_INTERFACE_ISOLATE_CPU = 5, 61 CMD_THERMAL_INTERFACE_REGISTER = 6, 62 CMD_THERMAL_INTERFACE_UNREGISTER = 7, 63 CMD_THERMAL_INTERFACE_REGISTER_FAN_CALLBACK = 8, 64 CMD_THERMAL_INTERFACE_UNREGISTER_FAN_CALLBACK = 9, 65}; 66 67class IThermalInterface : public HdiBase { 68public: 69 DECLARE_HDI_DESCRIPTOR(u"ohos.hdi.thermal.v1_1.IThermalInterface"); 70 71 virtual ~IThermalInterface() = default; 72 73 static sptr<OHOS::HDI::Thermal::V1_1::IThermalInterface> Get(bool isStub = false); 74 static sptr<OHOS::HDI::Thermal::V1_1::IThermalInterface> Get(const std::string &serviceName, bool isStub = false); 75 76 virtual int32_t SetCpuFreq(int32_t freq) = 0; 77 78 virtual int32_t SetGpuFreq(int32_t freq) = 0; 79 80 virtual int32_t SetBatteryCurrent(int32_t current) = 0; 81 82 virtual int32_t GetThermalZoneInfo(OHOS::HDI::Thermal::V1_1::HdfThermalCallbackInfo& event) = 0; 83 84 virtual int32_t IsolateCpu(int32_t num) = 0; 85 86 virtual int32_t Register(const sptr<OHOS::HDI::Thermal::V1_1::IThermalCallback>& callbackObj) = 0; 87 88 virtual int32_t Unregister() = 0; 89 90 virtual int32_t RegisterFanCallback(const sptr<OHOS::HDI::Thermal::V1_1::IFanCallback>& callbackObj) = 0; 91 92 virtual int32_t UnregisterFanCallback() = 0; 93 94 virtual int32_t GetVersion(uint32_t& majorVer, uint32_t& minorVer) 95 { 96 majorVer = 1; 97 minorVer = 1; 98 return HDF_SUCCESS; 99 } 100 101 virtual bool IsProxy() 102 { 103 return false; 104 } 105 106 virtual const std::u16string GetDesc() 107 { 108 return metaDescriptor_; 109 } 110}; 111} // V1_1 112} // Thermal 113} // HDI 114} // OHOS 115 116#endif // OHOS_HDI_THERMAL_V1_1_ITHERMALINTERFACE_H 117 118