/* * Copyright (C) 2022 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 ATRACE_TAG (ATRACE_TAG_THERMAL | ATRACE_TAG_HAL) #include "thermal_files.h" #include #include #include #include #include #include #include namespace aidl { namespace android { namespace hardware { namespace thermal { namespace implementation { using ::android::base::StringPrintf; std::string ThermalFiles::getThermalFilePath(std::string_view thermal_name) const { auto sensor_itr = thermal_name_to_path_map_.find(thermal_name.data()); if (sensor_itr == thermal_name_to_path_map_.end()) { return ""; } return sensor_itr->second; } bool ThermalFiles::addThermalFile(std::string_view thermal_name, std::string_view path) { return thermal_name_to_path_map_.emplace(thermal_name, path).second; } bool ThermalFiles::readThermalFile(std::string_view thermal_name, std::string *data) const { std::string sensor_reading; std::string file_path = getThermalFilePath(std::string_view(thermal_name)); *data = ""; ATRACE_NAME(StringPrintf("ThermalFiles::readThermalFile - %s", thermal_name.data()).c_str()); if (file_path.empty()) { PLOG(WARNING) << "Failed to find " << thermal_name << "'s path"; return false; } if (!::android::base::ReadFileToString(file_path, &sensor_reading)) { PLOG(WARNING) << "Failed to read sensor: " << thermal_name; return false; } // Strip the newline. *data = ::android::base::Trim(sensor_reading); return true; } bool ThermalFiles::writeCdevFile(std::string_view cdev_name, std::string_view data) { std::string file_path = getThermalFilePath(::android::base::StringPrintf("%s_%s", cdev_name.data(), "w")); ATRACE_NAME(StringPrintf("ThermalFiles::writeCdevFile - %s", cdev_name.data()).c_str()); if (!::android::base::WriteStringToFile(data.data(), file_path)) { PLOG(WARNING) << "Failed to write cdev: " << cdev_name << " to " << data.data(); return false; } return true; } } // namespace implementation } // namespace thermal } // namespace hardware } // namespace android } // namespace aidl