/* * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved * * 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 #include "common.h" #include "hal-thermal-interface.h" static hal_backend_thermal_funcs *hal_thermal_funcs = NULL; int hal_device_thermal_get_backend(void) { int ret; if (hal_thermal_funcs) return 0; ret = hal_common_get_backend(HAL_MODULE_DEVICE_THERMAL, (void **)&hal_thermal_funcs); if (ret < 0) { _E("Failed to get thermal backend"); return -EINVAL; } return 0; } int hal_device_thermal_put_backend(void) { if (!hal_thermal_funcs) return 0; hal_common_put_backend(HAL_MODULE_DEVICE_THERMAL, (void *)hal_thermal_funcs); hal_thermal_funcs = NULL; return 0; } int hal_device_thermal_get_info(hal_device_thermal_e type, struct thermal_info *info) { int ret; if (!hal_thermal_funcs) { if ((ret = hal_device_thermal_get_backend()) < 0) return ret; } if (!hal_thermal_funcs || !hal_thermal_funcs->get_info) return -ENODEV; return hal_thermal_funcs->get_info(type, info); } int hal_device_thermal_register_changed_event(ThermalUpdated updated_cb, void *data) { int ret; if (!hal_thermal_funcs) { if ((ret = hal_device_thermal_get_backend()) < 0) return ret; } if (!hal_thermal_funcs || !hal_thermal_funcs->register_changed_event) return -ENODEV; return hal_thermal_funcs->register_changed_event(updated_cb, data); } int hal_device_thermal_unregister_changed_event(ThermalUpdated updated_cb) { int ret; if (!hal_thermal_funcs) { if ((ret = hal_device_thermal_get_backend()) < 0) return ret; } if (!hal_thermal_funcs || !hal_thermal_funcs->unregister_changed_event) return -ENODEV; return hal_thermal_funcs->unregister_changed_event(updated_cb); }