xref: /openbmc/phosphor-pid-control/util.cpp (revision a83a3ecc)
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 "util.hpp"
18 
19 #include <string>
20 
21 static constexpr auto external_sensor =
22     "/xyz/openbmc_project/extsensors/";                         // type/
23 static constexpr auto openbmc_sensor = "/xyz/openbmc_project/"; // type/
24 static constexpr auto sysfs = "/sys/";
25 
26 IOInterfaceType getWriteInterfaceType(const std::string& path)
27 {
28     if (path.empty() || "None" == path)
29     {
30         return IOInterfaceType::NONE;
31     }
32 
33     if (path.find(sysfs) != std::string::npos)
34     {
35         // A sysfs read sensor.
36         return IOInterfaceType::SYSFS;
37     }
38 
39     if (path.find(openbmc_sensor) != std::string::npos)
40     {
41         return IOInterfaceType::DBUSACTIVE;
42     }
43 
44     return IOInterfaceType::UNKNOWN;
45 }
46 
47 IOInterfaceType getReadInterfaceType(const std::string& path)
48 {
49     if (path.empty() || "None" == path)
50     {
51         return IOInterfaceType::NONE;
52     }
53 
54     if (path.find(external_sensor) != std::string::npos)
55     {
56         return IOInterfaceType::EXTERNAL;
57     }
58 
59     if (path.find(openbmc_sensor) != std::string::npos)
60     {
61         return IOInterfaceType::DBUSPASSIVE;
62     }
63 
64     if (path.find(sysfs) != std::string::npos)
65     {
66         return IOInterfaceType::SYSFS;
67     }
68 
69     return IOInterfaceType::UNKNOWN;
70 }
71