blob: ca07cfa75bae07fb8d14ae070bf47fa0aced8b29 [file] [log] [blame]
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -07001/*
2 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 *
18 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
19 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
25 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
28 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070031 /* Changes from Qualcomm Innovation Center are provided under the following license:
32
33Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
34SPDX-License-Identifier: BSD-3-Clause-Clear */
35
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070036#ifndef THERMAL_THERMAL_UTILS_H__
37#define THERMAL_THERMAL_UTILS_H__
38
39#include <unordered_map>
40#include <mutex>
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070041#include <aidl/android/hardware/thermal/BnThermal.h>
42
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070043#include "thermalConfig.h"
44#include "thermalMonitor.h"
45#include "thermalCommon.h"
46#include "thermalData.h"
47
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070048namespace aidl {
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070049namespace android {
50namespace hardware {
51namespace thermal {
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070052
53using ueventCB = std::function<void(Temperature &t)>;
54
55class ThermalUtils {
56 public:
57 ThermalUtils(const ueventCB &inp_cb);
58 ~ThermalUtils() = default;
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070059 bool isCdevInitialized()
60 {
61 return is_cdev_init;
62 };
Michael Bestas04aeca62025-07-06 23:44:50 +030063 bool isSensorInitialized();
64 bool isSensorInitialized(TemperatureType type);
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070065 int readTemperatures(std::vector<Temperature>& temp);
66 int readTemperatures(TemperatureType type,
67 std::vector<Temperature>& temperatures);
68 int readTemperatureThreshold(std::vector<TemperatureThreshold>& thresh);
69 int readTemperatureThreshold(TemperatureType type,
70 std::vector<TemperatureThreshold>& thresh);
71 int readCdevStates(std::vector<CoolingDevice>& cdev);
72 int readCdevStates(cdevType type,
73 std::vector<CoolingDevice>& cdev);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070074 private:
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070075 bool is_cdev_init;
76 ThermalConfig cfg;
77 ThermalCommon cmnInst;
78 ThermalMonitor monitor;
79 std::unordered_map<std::string, struct therm_sensor>
80 thermalConfig;
81 std::vector<struct therm_cdev> cdevList;
82 std::mutex sens_cb_mutex;
83 ueventCB cb;
84
85 void ueventParse(std::string sensor_name, int temp);
Ram Chandrasekar56329992020-12-28 16:44:40 -080086 void Notify(struct therm_sensor& sens);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070087};
88
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070089} // namespace thermal
90} // namespace hardware
91} // namespace android
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070092} // namespace aidl
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070093
94#endif // THERMAL_THERMAL_UTILS_H__