blob: e7f8a4249ffbee46543735f2408f77056a767020 [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;
59 bool isSensorInitialized()
60 {
61 return is_sensor_init;
62 };
63 bool isCdevInitialized()
64 {
65 return is_cdev_init;
66 };
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070067 int readTemperatures(std::vector<Temperature>& temp);
68 int readTemperatures(TemperatureType type,
69 std::vector<Temperature>& temperatures);
70 int readTemperatureThreshold(std::vector<TemperatureThreshold>& thresh);
71 int readTemperatureThreshold(TemperatureType type,
72 std::vector<TemperatureThreshold>& thresh);
73 int readCdevStates(std::vector<CoolingDevice>& cdev);
74 int readCdevStates(cdevType type,
75 std::vector<CoolingDevice>& cdev);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070076 private:
77 bool is_sensor_init;
78 bool is_cdev_init;
79 ThermalConfig cfg;
80 ThermalCommon cmnInst;
81 ThermalMonitor monitor;
82 std::unordered_map<std::string, struct therm_sensor>
83 thermalConfig;
84 std::vector<struct therm_cdev> cdevList;
85 std::mutex sens_cb_mutex;
86 ueventCB cb;
87
88 void ueventParse(std::string sensor_name, int temp);
Ram Chandrasekar56329992020-12-28 16:44:40 -080089 void Notify(struct therm_sensor& sens);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070090};
91
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070092} // namespace thermal
93} // namespace hardware
94} // namespace android
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070095} // namespace aidl
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070096
97#endif // THERMAL_THERMAL_UTILS_H__