Home | History | Annotate | Download | only in thermal-engine
      1 /*
      2  * Copyright (c) 2016, 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  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
     18  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
     20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
     21  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     24  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     25  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     26  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
     27  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28  */
     29 
     30 #include <cutils/properties.h>
     31 #ifndef __THERMAL_CLIENT_H__
     32 #define __THERMAL_CLIENT_H__
     33 
     34 #ifdef __cplusplus
     35 extern "C" {
     36 #endif
     37 
     38 #define MAX_ACTIONS  (32)
     39 
     40 /* Enum for supported fields */
     41 enum supported_fields {
     42 	UNKNOWN_FIELD = 0x0,
     43 	DISABLE_FIELD = 0x1,
     44 	SAMPLING_FIELD = 0x2,
     45 	THRESHOLDS_FIELD = 0x4,
     46 	SET_POINT_FIELD = THRESHOLDS_FIELD,
     47 	THRESHOLDS_CLR_FIELD = 0x8,
     48 	SET_POINT_CLR_FIELD = THRESHOLDS_CLR_FIELD,
     49 	ACTION_INFO_FIELD = 0x10,
     50 	SUPPORTED_FIELD_MAX = 0x20,
     51 };
     52 
     53 enum field_data_type {
     54 	FIELD_INT = 0,
     55 	FIELD_STR,
     56 	FIELD_INT_ARR,
     57 	FIELD_ARR_STR,
     58 	FIELD_ARR_INT_ARR,
     59 	FIELD_MAX
     60 };
     61 
     62 struct action_info_data {
     63 	int info[MAX_ACTIONS];
     64 	uint32_t num_actions;
     65 };
     66 
     67 struct field_data {
     68 	char *field_name;
     69 	enum field_data_type data_type;
     70 	uint32_t num_data;
     71 	void *data;
     72 };
     73 
     74 struct config_instance {
     75 	char *cfg_desc;
     76 	char *algo_type;
     77 	unsigned int fields_mask;  /* mask set by client to request to adjust supported fields */
     78 	uint32_t num_fields;
     79 	struct field_data *fields;
     80 };
     81 
     82 int thermal_client_config_query(char *algo_type, struct config_instance **configs);
     83 void thermal_client_config_cleanup(struct config_instance *configs, unsigned int config_size);
     84 int thermal_client_config_set(struct config_instance *configs, unsigned int config_size);
     85 
     86 int thermal_client_register_callback(char *client_name, int (*callback)(int , void *, void *), void *data);
     87 int thermal_client_request(char *client_name, int req_data);
     88 void thermal_client_unregister_callback(int client_cb_handle);
     89 
     90 #ifdef __cplusplus
     91 }
     92 #endif
     93 
     94 #endif /* __THERMAL_CLIENT_H__ */
     95