1 /** 2 * Copyright 2017 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "build_utils.hpp" 18 19 namespace pid_control 20 { 21 22 static constexpr auto external_sensor = 23 "/xyz/openbmc_project/extsensors/"; // type/ 24 static constexpr auto openbmc_sensor = "/xyz/openbmc_project/"; // type/ 25 static constexpr auto sysfs = "/sys/"; 26 27 IOInterfaceType getWriteInterfaceType(const std::string& path) 28 { 29 if (path.empty() || "None" == path) 30 { 31 return IOInterfaceType::NONE; 32 } 33 34 if (path.find(sysfs) != std::string::npos) 35 { 36 // A sysfs read sensor. 37 return IOInterfaceType::SYSFS; 38 } 39 40 if (path.find(openbmc_sensor) != std::string::npos) 41 { 42 return IOInterfaceType::DBUSACTIVE; 43 } 44 45 return IOInterfaceType::UNKNOWN; 46 } 47 48 IOInterfaceType getReadInterfaceType(const std::string& path) 49 { 50 if (path.empty() || "None" == path) 51 { 52 return IOInterfaceType::NONE; 53 } 54 55 if (path.find(external_sensor) != std::string::npos) 56 { 57 return IOInterfaceType::EXTERNAL; 58 } 59 60 if (path.find(openbmc_sensor) != std::string::npos) 61 { 62 return IOInterfaceType::DBUSPASSIVE; 63 } 64 65 if (path.find(sysfs) != std::string::npos) 66 { 67 return IOInterfaceType::SYSFS; 68 } 69 70 return IOInterfaceType::UNKNOWN; 71 } 72 73 } // namespace pid_control 74