Merge "thermal: add hal objects."
This commit is contained in:
commit
ca586fbd90
11 changed files with 922 additions and 0 deletions
|
@ -30,6 +30,8 @@ subdirs = [
|
|||
"tests/libhwbinder/1.0",
|
||||
"tests/msgq/1.0",
|
||||
"tests/pointer/1.0",
|
||||
"thermal/1.0",
|
||||
"thermal/1.0/default",
|
||||
"vehicle/2.0",
|
||||
"vibrator/1.0",
|
||||
"wifi/1.0",
|
||||
|
|
46
thermal/1.0/Android.bp
Normal file
46
thermal/1.0/Android.bp
Normal file
|
@ -0,0 +1,46 @@
|
|||
// This file is autogenerated by hidl-gen. Do not edit manually.
|
||||
|
||||
genrule {
|
||||
name: "android.hardware.thermal@1.0_genc++",
|
||||
tool: "hidl-gen",
|
||||
cmd: "$tool -o $genDir -Lc++ -randroid.hardware:hardware/interfaces android.hardware.thermal@1.0",
|
||||
srcs: [
|
||||
"types.hal",
|
||||
"IThermal.hal",
|
||||
],
|
||||
out: [
|
||||
"android/hardware/thermal/1.0/types.cpp",
|
||||
"android/hardware/thermal/1.0/ThermalAll.cpp",
|
||||
],
|
||||
}
|
||||
|
||||
genrule {
|
||||
name: "android.hardware.thermal@1.0_genc++_headers",
|
||||
tool: "hidl-gen",
|
||||
cmd: "$tool -o $genDir -Lc++ -randroid.hardware:hardware/interfaces android.hardware.thermal@1.0",
|
||||
srcs: [
|
||||
"types.hal",
|
||||
"IThermal.hal",
|
||||
],
|
||||
out: [
|
||||
"android/hardware/thermal/1.0/types.h",
|
||||
"android/hardware/thermal/1.0/IThermal.h",
|
||||
"android/hardware/thermal/1.0/IHwThermal.h",
|
||||
"android/hardware/thermal/1.0/BnThermal.h",
|
||||
"android/hardware/thermal/1.0/BpThermal.h",
|
||||
"android/hardware/thermal/1.0/BsThermal.h",
|
||||
],
|
||||
}
|
||||
|
||||
cc_library_shared {
|
||||
name: "android.hardware.thermal@1.0",
|
||||
generated_sources: ["android.hardware.thermal@1.0_genc++"],
|
||||
generated_headers: ["android.hardware.thermal@1.0_genc++_headers"],
|
||||
export_generated_headers: ["android.hardware.thermal@1.0_genc++_headers"],
|
||||
shared_libs: [
|
||||
"libhidl",
|
||||
"libhwbinder",
|
||||
"libutils",
|
||||
"libcutils",
|
||||
],
|
||||
}
|
306
thermal/1.0/Android.mk
Normal file
306
thermal/1.0/Android.mk
Normal file
|
@ -0,0 +1,306 @@
|
|||
# This file is autogenerated by hidl-gen. Do not edit manually.
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
################################################################################
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.thermal@1.0-java
|
||||
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
|
||||
|
||||
intermediates := $(local-generated-sources-dir)
|
||||
|
||||
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
|
||||
|
||||
#
|
||||
# Build types.hal (CoolingDevice)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/CoolingDevice.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.CoolingDevice
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (CoolingType)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/CoolingType.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.CoolingType
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (CpuUsage)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/CpuUsage.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.CpuUsage
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (Temperature)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/Temperature.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.Temperature
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (TemperatureType)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/TemperatureType.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.TemperatureType
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (ThermalStatus)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/ThermalStatus.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.ThermalStatus
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (ThermalStatusCode)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/ThermalStatusCode.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.ThermalStatusCode
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build IThermal.hal
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/IThermal.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IThermal.hal
|
||||
$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::IThermal
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/IThermal.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
include $(BUILD_JAVA_LIBRARY)
|
||||
|
||||
|
||||
################################################################################
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.thermal@1.0-java-static
|
||||
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
|
||||
|
||||
intermediates := $(local-generated-sources-dir)
|
||||
|
||||
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
|
||||
|
||||
#
|
||||
# Build types.hal (CoolingDevice)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/CoolingDevice.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.CoolingDevice
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (CoolingType)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/CoolingType.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.CoolingType
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (CpuUsage)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/CpuUsage.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.CpuUsage
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (Temperature)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/Temperature.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.Temperature
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (TemperatureType)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/TemperatureType.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.TemperatureType
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (ThermalStatus)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/ThermalStatus.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.ThermalStatus
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build types.hal (ThermalStatusCode)
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/ThermalStatusCode.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::types.ThermalStatusCode
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
|
||||
#
|
||||
# Build IThermal.hal
|
||||
#
|
||||
GEN := $(intermediates)/android/hardware/thermal/1.0/IThermal.java
|
||||
$(GEN): $(HIDL)
|
||||
$(GEN): PRIVATE_HIDL := $(HIDL)
|
||||
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IThermal.hal
|
||||
$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
|
||||
$(GEN): $(LOCAL_PATH)/types.hal
|
||||
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
|
||||
$(GEN): PRIVATE_CUSTOM_TOOL = \
|
||||
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
|
||||
-Ljava -randroid.hardware:hardware/interfaces \
|
||||
android.hardware.thermal@1.0::IThermal
|
||||
|
||||
$(GEN): $(LOCAL_PATH)/IThermal.hal
|
||||
$(transform-generated-source)
|
||||
LOCAL_GENERATED_SOURCES += $(GEN)
|
||||
include $(BUILD_STATIC_JAVA_LIBRARY)
|
||||
|
||||
|
||||
|
||||
include $(call all-makefiles-under,$(LOCAL_PATH))
|
69
thermal/1.0/IThermal.hal
Normal file
69
thermal/1.0/IThermal.hal
Normal file
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.thermal@1.0;
|
||||
|
||||
interface IThermal {
|
||||
|
||||
/*
|
||||
* Retrieves temperatures in Celsius.
|
||||
*
|
||||
* @return status Status of the operation. If status code is FAILURE,
|
||||
* the status.debugMessage must be populated with the human-readable
|
||||
* error message.
|
||||
* @return temperatures If status code is SUCCESS, it's filled with the
|
||||
* current temperatures. The order of temperatures of built-in
|
||||
* devices (such as CPUs, GPUs and etc.) in the list must be kept
|
||||
* the same regardless the number of calls to this method even if
|
||||
* they go offline, if these devices exist on boot. The method
|
||||
* always returns and never removes such temperatures.
|
||||
*
|
||||
*/
|
||||
getTemperatures()
|
||||
generates (ThermalStatus status, vec<Temperature> temperatures);
|
||||
|
||||
/*
|
||||
* Retrieves CPU usage information of each core: active and total times
|
||||
* in ms since first boot.
|
||||
*
|
||||
* @return status Status of the operation. If status code is FAILURE,
|
||||
* the status.debugMessage must be populated with the human-readable
|
||||
* error message.
|
||||
* @return cpuUsages If status code is SUCCESS, it's filled with the current
|
||||
* CPU usages. The order and number of CPUs in the list must be kept
|
||||
* the same regardless the number of calls to this method.
|
||||
*
|
||||
*/
|
||||
getCpuUsages() generates (ThermalStatus status, vec<CpuUsage> cpuUsages);
|
||||
|
||||
/*
|
||||
* Retrieves the cooling devices information.
|
||||
*
|
||||
* @return status Status of the operation. If status code is FAILURE,
|
||||
* the status.debugMessage must be populated with the human-readable
|
||||
* error message.
|
||||
* @return devices If status code is SUCCESS, it's filled with the current
|
||||
* cooling device information. The order of built-in coolling
|
||||
* devices in the list must be kept the same regardless the number
|
||||
* of calls to this method even if they go offline, if these devices
|
||||
* exist on boot. The method always returns and never removes from
|
||||
* the list such coolling devices.
|
||||
*
|
||||
*/
|
||||
getCoolingDevices()
|
||||
generates (ThermalStatus status, vec<CoolingDevice> devices);
|
||||
|
||||
};
|
16
thermal/1.0/default/Android.bp
Normal file
16
thermal/1.0/default/Android.bp
Normal file
|
@ -0,0 +1,16 @@
|
|||
cc_library_shared {
|
||||
name: "android.hardware.thermal@1.0-impl",
|
||||
relative_install_path: "hw",
|
||||
srcs: ["Thermal.cpp"],
|
||||
shared_libs: [
|
||||
"liblog",
|
||||
"libcutils",
|
||||
"libhardware",
|
||||
"libhwbinder",
|
||||
"libbase",
|
||||
"libcutils",
|
||||
"libutils",
|
||||
"libhidl",
|
||||
"android.hardware.thermal@1.0",
|
||||
],
|
||||
}
|
39
thermal/1.0/default/Android.mk
Normal file
39
thermal/1.0/default/Android.mk
Normal file
|
@ -0,0 +1,39 @@
|
|||
#
|
||||
# Copyright (C) 2016 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE_RELATIVE_PATH := hw
|
||||
LOCAL_MODULE := android.hardware.thermal@1.0-service
|
||||
LOCAL_INIT_RC := android.hardware.thermal@1.0-service.rc
|
||||
LOCAL_SRC_FILES := \
|
||||
service.cpp \
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
liblog \
|
||||
libcutils \
|
||||
libdl \
|
||||
libbase \
|
||||
libutils \
|
||||
libhardware_legacy \
|
||||
libhardware \
|
||||
|
||||
LOCAL_SHARED_LIBRARIES += \
|
||||
libhwbinder \
|
||||
libhidl \
|
||||
android.hardware.thermal@1.0 \
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
202
thermal/1.0/default/Thermal.cpp
Normal file
202
thermal/1.0/default/Thermal.cpp
Normal file
|
@ -0,0 +1,202 @@
|
|||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "android.hardware.thermal@1.0-impl"
|
||||
#include <utils/Log.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <hardware/hardware.h>
|
||||
#include <hardware/thermal.h>
|
||||
|
||||
#include "Thermal.h"
|
||||
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace thermal {
|
||||
namespace V1_0 {
|
||||
namespace implementation {
|
||||
|
||||
Thermal::Thermal(thermal_module_t* module) : mModule(module) {
|
||||
}
|
||||
|
||||
// Methods from ::android::hardware::thermal::V1_0::IThermal follow.
|
||||
Return<void> Thermal::getTemperatures(getTemperatures_cb _hidl_cb) {
|
||||
ThermalStatus status;
|
||||
status.code = ThermalStatusCode::SUCCESS;
|
||||
hidl_vec<Temperature> temperatures;
|
||||
|
||||
if (!mModule || !mModule->getTemperatures) {
|
||||
ALOGI("getTemperatures is not implemented in Thermal HAL.");
|
||||
_hidl_cb(status, temperatures);
|
||||
return Void();
|
||||
}
|
||||
|
||||
ssize_t list_size = mModule->getTemperatures(mModule, nullptr, 0);
|
||||
if (list_size >= 0) {
|
||||
temperature_t *list = new temperature_t[list_size];
|
||||
ssize_t size = mModule->getTemperatures(mModule, list, list_size);
|
||||
if (size >= 0) {
|
||||
if (list_size > size) {
|
||||
list_size = size;
|
||||
}
|
||||
|
||||
temperatures.resize(list_size);
|
||||
for (ssize_t i = 0; i < list_size; ++i) {
|
||||
switch (list[i].type) {
|
||||
case DEVICE_TEMPERATURE_UNKNOWN:
|
||||
temperatures[i].type = TemperatureType::UNKNOWN;
|
||||
break;
|
||||
case DEVICE_TEMPERATURE_CPU:
|
||||
temperatures[i].type = TemperatureType::CPU;
|
||||
break;
|
||||
case DEVICE_TEMPERATURE_GPU:
|
||||
temperatures[i].type = TemperatureType::GPU;
|
||||
break;
|
||||
case DEVICE_TEMPERATURE_BATTERY:
|
||||
temperatures[i].type = TemperatureType::BATTERY;
|
||||
break;
|
||||
case DEVICE_TEMPERATURE_SKIN:
|
||||
temperatures[i].type = TemperatureType::SKIN;
|
||||
break;
|
||||
default:
|
||||
ALOGE("Unknown temperature %s type", list[i].name);;
|
||||
}
|
||||
temperatures[i].name = list[i].name;
|
||||
temperatures[i].currentValue = list[i].current_value;
|
||||
temperatures[i].throttlingThreshold = list[i].throttling_threshold;
|
||||
temperatures[i].shutdownThreshold = list[i].shutdown_threshold;
|
||||
temperatures[i].vrThrottlingThreshold = list[i].vr_throttling_threshold;
|
||||
}
|
||||
} else {
|
||||
status.code = ThermalStatusCode::FAILURE;
|
||||
status.debugMessage = strerror(-size);
|
||||
}
|
||||
delete[] list;
|
||||
} else {
|
||||
status.code = ThermalStatusCode::FAILURE;
|
||||
status.debugMessage = strerror(-list_size);
|
||||
}
|
||||
_hidl_cb(status, temperatures);
|
||||
return Void();
|
||||
}
|
||||
|
||||
Return<void> Thermal::getCpuUsages(getCpuUsages_cb _hidl_cb) {
|
||||
ThermalStatus status;
|
||||
hidl_vec<CpuUsage> cpuUsages;
|
||||
status.code = ThermalStatusCode::SUCCESS;
|
||||
|
||||
if (!mModule || !mModule->getCpuUsages) {
|
||||
ALOGI("getCpuUsages is not implemented in Thermal HAL");
|
||||
_hidl_cb(status, cpuUsages);
|
||||
return Void();
|
||||
}
|
||||
|
||||
ssize_t size = mModule->getCpuUsages(mModule, nullptr);
|
||||
if (size >= 0) {
|
||||
cpu_usage_t *list = new cpu_usage_t[size];
|
||||
size = mModule->getCpuUsages(mModule, list);
|
||||
if (size >= 0) {
|
||||
cpuUsages.resize(size);
|
||||
for (ssize_t i = 0; i < size; ++i) {
|
||||
cpuUsages[i].name = list[i].name;
|
||||
cpuUsages[i].active = list[i].active;
|
||||
cpuUsages[i].total = list[i].total;
|
||||
cpuUsages[i].isOnline = list[i].is_online;
|
||||
}
|
||||
} else {
|
||||
status.code = ThermalStatusCode::FAILURE;
|
||||
status.debugMessage = strerror(-size);
|
||||
}
|
||||
delete[] list;
|
||||
} else {
|
||||
status.code = ThermalStatusCode::FAILURE;
|
||||
status.debugMessage = strerror(-size);
|
||||
}
|
||||
_hidl_cb(status, cpuUsages);
|
||||
return Void();
|
||||
}
|
||||
|
||||
Return<void> Thermal::getCoolingDevices(getCoolingDevices_cb _hidl_cb) {
|
||||
ThermalStatus status;
|
||||
status.code = ThermalStatusCode::SUCCESS;
|
||||
hidl_vec<CoolingDevice> coolingDevices;
|
||||
|
||||
if (!mModule || !mModule->getCoolingDevices) {
|
||||
ALOGI("getCoolingDevices is not implemented in Thermal HAL.");
|
||||
_hidl_cb(status, coolingDevices);
|
||||
return Void();
|
||||
}
|
||||
|
||||
ssize_t list_size = mModule->getCoolingDevices(mModule, nullptr, 0);
|
||||
if (list_size >= 0) {
|
||||
cooling_device_t *list = new cooling_device_t[list_size];
|
||||
ssize_t size = mModule->getCoolingDevices(mModule, list, list_size);
|
||||
if (size >= 0) {
|
||||
if (list_size > size) {
|
||||
list_size = size;
|
||||
}
|
||||
coolingDevices.resize(list_size);
|
||||
for (ssize_t i = 0; i < list_size; ++i) {
|
||||
switch (list[i].type) {
|
||||
case FAN_RPM:
|
||||
coolingDevices[i].type = CoolingType::FAN_RPM;
|
||||
break;
|
||||
default:
|
||||
ALOGE("Unknown cooling device %s type", list[i].name);
|
||||
}
|
||||
coolingDevices[i].name = list[i].name;
|
||||
coolingDevices[i].currentValue = list[i].current_value;
|
||||
}
|
||||
|
||||
} else {
|
||||
status.code = ThermalStatusCode::FAILURE;
|
||||
status.debugMessage = strerror(-size);
|
||||
}
|
||||
delete[] list;
|
||||
} else {
|
||||
status.code = ThermalStatusCode::FAILURE;
|
||||
status.debugMessage = strerror(-list_size);
|
||||
}
|
||||
_hidl_cb(status, coolingDevices);
|
||||
return Void();
|
||||
}
|
||||
|
||||
IThermal* HIDL_FETCH_IThermal(const char* /* name */) {
|
||||
thermal_module_t* module;
|
||||
status_t err = hw_get_module(THERMAL_HARDWARE_MODULE_ID,
|
||||
const_cast<hw_module_t const**>(reinterpret_cast<hw_module_t**>(&module)));
|
||||
if (err || !module) {
|
||||
ALOGE("Couldn't load %s module (%s)", THERMAL_HARDWARE_MODULE_ID,
|
||||
strerror(-err));
|
||||
}
|
||||
|
||||
if (err == 0 && module->common.methods->open) {
|
||||
struct hw_device_t* device;
|
||||
err = module->common.methods->open(&module->common, THERMAL_HARDWARE_MODULE_ID, &device);
|
||||
if (err) {
|
||||
ALOGE("Couldn't open %s module (%s)", THERMAL_HARDWARE_MODULE_ID, strerror(-err));
|
||||
} else {
|
||||
return new Thermal(reinterpret_cast<thermal_module_t*>(device));
|
||||
}
|
||||
}
|
||||
return new Thermal(module);
|
||||
}
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_0
|
||||
} // namespace thermal
|
||||
} // namespace hardware
|
||||
} // namespace android
|
45
thermal/1.0/default/Thermal.h
Normal file
45
thermal/1.0/default/Thermal.h
Normal file
|
@ -0,0 +1,45 @@
|
|||
#ifndef HIDL_GENERATED_android_hardware_thermal_V1_0_Thermal_H_
|
||||
#define HIDL_GENERATED_android_hardware_thermal_V1_0_Thermal_H_
|
||||
|
||||
#include <android/hardware/thermal/1.0/IThermal.h>
|
||||
#include <hidl/Status.h>
|
||||
#include <hardware/thermal.h>
|
||||
|
||||
#include <hidl/MQDescriptor.h>
|
||||
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace thermal {
|
||||
namespace V1_0 {
|
||||
namespace implementation {
|
||||
|
||||
using ::android::hardware::thermal::V1_0::CoolingDevice;
|
||||
using ::android::hardware::thermal::V1_0::CpuUsage;
|
||||
using ::android::hardware::thermal::V1_0::IThermal;
|
||||
using ::android::hardware::thermal::V1_0::Temperature;
|
||||
using ::android::hardware::thermal::V1_0::ThermalStatus;
|
||||
using ::android::hardware::Return;
|
||||
using ::android::hardware::Void;
|
||||
using ::android::hardware::hidl_vec;
|
||||
using ::android::hardware::hidl_string;
|
||||
using ::android::sp;
|
||||
|
||||
struct Thermal : public IThermal {
|
||||
Thermal(thermal_module_t* module);
|
||||
// Methods from ::android::hardware::thermal::V1_0::IThermal follow.
|
||||
Return<void> getTemperatures(getTemperatures_cb _hidl_cb) override;
|
||||
Return<void> getCpuUsages(getCpuUsages_cb _hidl_cb) override;
|
||||
Return<void> getCoolingDevices(getCoolingDevices_cb _hidl_cb) override;
|
||||
private:
|
||||
thermal_module_t* mModule;
|
||||
};
|
||||
|
||||
extern "C" IThermal* HIDL_FETCH_IThermal(const char* name);
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_0
|
||||
} // namespace thermal
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
|
||||
#endif // HIDL_GENERATED_android_hardware_thermal_V1_0_Thermal_H_
|
|
@ -0,0 +1,4 @@
|
|||
service thermal-hal-1-0 /system/bin/hw/android.hardware.thermal@1.0-service
|
||||
class hal
|
||||
user system
|
||||
group system readproc
|
53
thermal/1.0/default/service.cpp
Normal file
53
thermal/1.0/default/service.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <android/hardware/thermal/1.0/IThermal.h>
|
||||
|
||||
#include <hidl/IServiceManager.h>
|
||||
#include <hwbinder/IPCThreadState.h>
|
||||
#include <hwbinder/ProcessState.h>
|
||||
#include <utils/Errors.h>
|
||||
|
||||
#define LOG_TAG "android.hardware.thermal@1.0-service"
|
||||
#include <utils/Log.h>
|
||||
#include <utils/StrongPointer.h>
|
||||
|
||||
using android::sp;
|
||||
|
||||
// libhwbinder:
|
||||
using android::hardware::IPCThreadState;
|
||||
using android::hardware::ProcessState;
|
||||
|
||||
// Generated HIDL files
|
||||
using android::hardware::thermal::V1_0::IThermal;
|
||||
|
||||
int main() {
|
||||
const char instance[] = "thermal";
|
||||
sp<IThermal> service = IThermal::getService(instance, true /* getStub */);
|
||||
if (service.get() == nullptr) {
|
||||
ALOGE("IThermal::getService returned NULL, exiting");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
LOG_FATAL_IF(service->isRemote(), "Implementation is REMOTE!");
|
||||
service->registerAsService(instance);
|
||||
|
||||
ProcessState::self()->setThreadPoolMaxThreadCount(0);
|
||||
ProcessState::self()->startThreadPool();
|
||||
IPCThreadState::self()->joinThreadPool();
|
||||
}
|
140
thermal/1.0/types.hal
Normal file
140
thermal/1.0/types.hal
Normal file
|
@ -0,0 +1,140 @@
|
|||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.thermal@1.0;
|
||||
|
||||
/** Device temperature types */
|
||||
enum TemperatureType : int32_t {
|
||||
UNKNOWN = -1,
|
||||
CPU = 0,
|
||||
GPU = 1,
|
||||
BATTERY = 2,
|
||||
SKIN = 3,
|
||||
};
|
||||
|
||||
enum CoolingType : int32_t {
|
||||
/** Fan cooling device speed in RPM. */
|
||||
FAN_RPM = 0,
|
||||
};
|
||||
|
||||
struct Temperature {
|
||||
/**
|
||||
* This temperature's type.
|
||||
*/
|
||||
TemperatureType type;
|
||||
|
||||
/**
|
||||
* Name of this temperature.
|
||||
* All temperatures of the same "type" must have a different "name",
|
||||
* e.g., cpu0, battery.
|
||||
*/
|
||||
string name;
|
||||
|
||||
/**
|
||||
* Current temperature in Celsius. If not available set by HAL to
|
||||
* UNKNOWN_TEMPERATURE.
|
||||
* Current temperature can be in any units if type=UNKNOWN.
|
||||
*/
|
||||
float currentValue;
|
||||
|
||||
/**
|
||||
* Throttling temperature constant for this temperature.
|
||||
* If not available, set by HAL to UNKNOWN_TEMPERATURE.
|
||||
*/
|
||||
float throttlingThreshold;
|
||||
|
||||
/**
|
||||
* Shutdown temperature constant for this temperature.
|
||||
* If not available, set by HAL to UNKNOWN_TEMPERATURE.
|
||||
*/
|
||||
float shutdownThreshold;
|
||||
|
||||
/**
|
||||
* Threshold temperature above which the VR mode clockrate minimums cannot
|
||||
* be maintained for this device.
|
||||
* If not available, set by HAL to UNKNOWN_TEMPERATURE.
|
||||
*/
|
||||
float vrThrottlingThreshold;
|
||||
|
||||
};
|
||||
|
||||
struct CoolingDevice {
|
||||
/**
|
||||
* This cooling device type.
|
||||
*/
|
||||
CoolingType type;
|
||||
|
||||
/**
|
||||
* Name of this cooling device.
|
||||
* All cooling devices of the same "type" must have a different "name".
|
||||
*/
|
||||
string name;
|
||||
|
||||
/**
|
||||
* Current cooling device value. Units depend on cooling device "type".
|
||||
*/
|
||||
float currentValue;
|
||||
|
||||
};
|
||||
|
||||
struct CpuUsage {
|
||||
/**
|
||||
* Name of this CPU.
|
||||
* All CPUs must have a different "name".
|
||||
*/
|
||||
string name;
|
||||
|
||||
/**
|
||||
* Active time since the last boot in ms.
|
||||
*/
|
||||
uint64_t active;
|
||||
|
||||
/**
|
||||
* Total time since the last boot in ms.
|
||||
*/
|
||||
uint64_t total;
|
||||
|
||||
/**
|
||||
* Is set to true when a core is online.
|
||||
* If the core is offline, all other members except |name| should be ignored.
|
||||
*/
|
||||
bool isOnline;
|
||||
|
||||
};
|
||||
|
||||
enum ThermalStatusCode : uint32_t {
|
||||
/** No errors. */
|
||||
SUCCESS,
|
||||
/** Unknown failure occured. */
|
||||
FAILURE
|
||||
};
|
||||
|
||||
/**
|
||||
* Generic structure to return the status of any thermal operation.
|
||||
*/
|
||||
struct ThermalStatus {
|
||||
ThermalStatusCode code;
|
||||
|
||||
/**
|
||||
* A specific error message to provide more information.
|
||||
* This can be used for debugging purposes only.
|
||||
*/
|
||||
string debugMessage;
|
||||
};
|
||||
|
||||
/**
|
||||
* TODO(pbond): add float constant UNDEFINED_TEMPERATURE.
|
||||
*/
|
Loading…
Reference in a new issue