blob: 0f3132c28470d8f341ad3bc3016a488c9fb3149a [file] [log] [blame]
Todd Poynor46f388c2017-06-22 18:13:56 -07001#define LOG_TAG "android.hardware.thermal.thermalcallback@1.1-impl"
2#include <log/log.h>
3
Todd Poynor46f388c2017-06-22 18:13:56 -07004#include <android/os/Temperature.h>
5#include <hardware/thermal.h>
Wei Wang52150002018-10-24 19:33:10 -07006#include <cmath>
7#include "ThermalCallback.h"
8#include "services/thermalservice/ThermalService.h"
Todd Poynor46f388c2017-06-22 18:13:56 -07009
10namespace android {
11namespace hardware {
12namespace thermal {
13namespace V1_1 {
14namespace implementation {
15
16using ::android::os::ThermalService;
17using ::android::hardware::thermal::V1_0::TemperatureType;
18
19// Register a binder ThermalService object for sending events
20void ThermalCallback::registerThermalService(sp<ThermalService> thermalService)
21{
22 mThermalService = thermalService;
23}
24
25// Methods from IThermalCallback::V1_1 follow.
26Return<void> ThermalCallback::notifyThrottling(
27 bool isThrottling,
28 const android::hardware::thermal::V1_0::Temperature& temperature) {
29
30 // Convert HIDL IThermal Temperature to binder IThermalService Temperature.
31 if (mThermalService != nullptr) {
32 float value = NAN;
33 int type = DEVICE_TEMPERATURE_UNKNOWN;
34
35 switch(temperature.type) {
36 case TemperatureType::CPU:
37 type = DEVICE_TEMPERATURE_CPU;
38 break;
39 case TemperatureType::GPU:
40 type = DEVICE_TEMPERATURE_GPU;
41 break;
42 case TemperatureType::BATTERY:
43 type = DEVICE_TEMPERATURE_BATTERY;
44 break;
45 case TemperatureType::SKIN:
46 type = DEVICE_TEMPERATURE_SKIN;
47 break;
48 case TemperatureType::UNKNOWN:
49 default:
50 type = DEVICE_TEMPERATURE_UNKNOWN;
51 break;
52 }
53
54 value = temperature.currentValue == UNKNOWN_TEMPERATURE ? NAN :
55 temperature.currentValue;
56
57 android::os::Temperature thermal_svc_temp(value, type);
58 mThermalService->notifyThrottling(isThrottling, thermal_svc_temp);
59 } else {
Wei Wang52150002018-10-24 19:33:10 -070060 SLOGE("IThermalService binder service not created, drop throttling event");
Todd Poynor46f388c2017-06-22 18:13:56 -070061 }
62 return Void();
63}
64
65} // namespace implementation
66} // namespace V1_1
67} // namespace thermal
68} // namespace hardware
69} // namespace android