blob: a02f22f76cfeb9ab517ebc9f3f0980c18ddf3229 [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
31#ifndef THERMAL_THERMAL_UTILS_H__
32#define THERMAL_THERMAL_UTILS_H__
33
34#include <unordered_map>
35#include <mutex>
36#include <android/hardware/thermal/2.0/IThermal.h>
37#include "thermalConfig.h"
38#include "thermalMonitor.h"
39#include "thermalCommon.h"
40#include "thermalData.h"
41
42namespace android {
43namespace hardware {
44namespace thermal {
45namespace V2_0 {
46namespace implementation {
47
48using ueventCB = std::function<void(Temperature &t)>;
49
50class ThermalUtils {
51 public:
52 ThermalUtils(const ueventCB &inp_cb);
53 ~ThermalUtils() = default;
54 bool isSensorInitialized()
55 {
56 return is_sensor_init;
57 };
58 bool isCdevInitialized()
59 {
60 return is_cdev_init;
61 };
Ram Chandrasekarf020a1d2020-08-25 14:25:14 -070062 int readTemperatures(hidl_vec<Temperature_1_0>& temp);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070063 int readTemperatures(bool filterType, TemperatureType type,
Ram Chandrasekarf020a1d2020-08-25 14:25:14 -070064 hidl_vec<Temperature>& temperatures);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070065 int readTemperatureThreshold(bool filterType, TemperatureType type,
Ram Chandrasekarf020a1d2020-08-25 14:25:14 -070066 hidl_vec<TemperatureThreshold>& thresh);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070067 int readCdevStates(bool filterType, cdevType type,
Ram Chandrasekarf020a1d2020-08-25 14:25:14 -070068 hidl_vec<CoolingDevice>& cdev);
Ram Chandrasekar72110b52020-08-06 14:39:40 -070069 int fetchCpuUsages(hidl_vec<CpuUsage>& cpu_usages);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070070 private:
71 bool is_sensor_init;
72 bool is_cdev_init;
73 ThermalConfig cfg;
74 ThermalCommon cmnInst;
75 ThermalMonitor monitor;
76 std::unordered_map<std::string, struct therm_sensor>
77 thermalConfig;
78 std::vector<struct therm_cdev> cdevList;
79 std::mutex sens_cb_mutex;
80 ueventCB cb;
81
82 void ueventParse(std::string sensor_name, int temp);
Ram Chandrasekar56329992020-12-28 16:44:40 -080083 void Notify(struct therm_sensor& sens);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070084};
85
86} // namespace implementation
87} // namespace V2_0
88} // namespace thermal
89} // namespace hardware
90} // namespace android
91
92#endif // THERMAL_THERMAL_UTILS_H__