From aca125ce08c8bc3147146cff3c385569f21011ae Mon Sep 17 00:00:00 2001 From: Ram Chandrasekar Date: Sat, 9 Dec 2017 18:34:00 +0100 Subject: [PATCH] thermal-engine: Add thermal client library header Add thermal client library header. This header can be used to query and change thermal config. Change-Id: Ib597c79c13fc91f1145456d717900f4ed4f1fc46 --- thermal-engine/Android.mk | 9 ++++ thermal-engine/thermal_client.h | 94 +++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 thermal-engine/Android.mk create mode 100644 thermal-engine/thermal_client.h diff --git a/thermal-engine/Android.mk b/thermal-engine/Android.mk new file mode 100644 index 0000000..bcb5423 --- /dev/null +++ b/thermal-engine/Android.mk @@ -0,0 +1,9 @@ +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE:=thermal-engine + +LOCAL_EXPORT_C_INCLUDE_DIRS:=$(LOCAL_PATH) + +include $(BUILD_HEADER_LIBRARY) diff --git a/thermal-engine/thermal_client.h b/thermal-engine/thermal_client.h new file mode 100644 index 0000000..b41f139 --- /dev/null +++ b/thermal-engine/thermal_client.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2016, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#ifndef __THERMAL_CLIENT_H__ +#define __THERMAL_CLIENT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAX_ACTIONS (32) + +/* Enum for supported fields */ +enum supported_fields { + UNKNOWN_FIELD = 0x0, + DISABLE_FIELD = 0x1, + SAMPLING_FIELD = 0x2, + THRESHOLDS_FIELD = 0x4, + SET_POINT_FIELD = THRESHOLDS_FIELD, + THRESHOLDS_CLR_FIELD = 0x8, + SET_POINT_CLR_FIELD = THRESHOLDS_CLR_FIELD, + ACTION_INFO_FIELD = 0x10, + SUPPORTED_FIELD_MAX = 0x20, +}; + +enum field_data_type { + FIELD_INT = 0, + FIELD_STR, + FIELD_INT_ARR, + FIELD_ARR_STR, + FIELD_ARR_INT_ARR, + FIELD_MAX +}; + +struct action_info_data { + int info[MAX_ACTIONS]; + uint32_t num_actions; +}; + +struct field_data { + char *field_name; + enum field_data_type data_type; + uint32_t num_data; + void *data; +}; + +struct config_instance { + char *cfg_desc; + char *algo_type; + unsigned int fields_mask; /* mask set by client to request to adjust supported fields */ + uint32_t num_fields; + struct field_data *fields; +}; + +int thermal_client_config_query(char *algo_type, struct config_instance **configs); +void thermal_client_config_cleanup(struct config_instance *configs, unsigned int config_size); +int thermal_client_config_set(struct config_instance *configs, unsigned int config_size); + +int thermal_client_register_callback(char *client_name, int (*callback)(int , void *, void *), void *data); +int thermal_client_request(char *client_name, int req_data); +void thermal_client_unregister_callback(int client_cb_handle); + +#ifdef __cplusplus +} +#endif + +#endif /* __THERMAL_CLIENT_H__ */