132e84e98SVishwanatha Subbanna #include "occ_device.hpp"
294df8c90SGunnar Mills 
3482e31ffSEddie James #include "occ_status.hpp"
432e84e98SVishwanatha Subbanna 
594df8c90SGunnar Mills #include <iostream>
694df8c90SGunnar Mills 
732e84e98SVishwanatha Subbanna namespace open_power
832e84e98SVishwanatha Subbanna {
932e84e98SVishwanatha Subbanna namespace occ
1032e84e98SVishwanatha Subbanna {
1132e84e98SVishwanatha Subbanna 
1232e84e98SVishwanatha Subbanna fs::path Device::bindPath = fs::path(OCC_HWMON_PATH) / "bind";
1332e84e98SVishwanatha Subbanna fs::path Device::unBindPath = fs::path(OCC_HWMON_PATH) / "unbind";
1432e84e98SVishwanatha Subbanna 
15774f9af9SEddie James std::string Device::getPathBack(const fs::path& path)
16774f9af9SEddie James {
17774f9af9SEddie James     if (path.empty())
18*bcef3b48SGeorge Liu     {
19774f9af9SEddie James         return std::string();
20*bcef3b48SGeorge Liu     }
21774f9af9SEddie James 
22774f9af9SEddie James     // Points to the last element in the path
23774f9af9SEddie James     auto conf = --path.end();
24774f9af9SEddie James 
25*bcef3b48SGeorge Liu     if (conf->empty() && conf != path.begin())
26774f9af9SEddie James     {
27774f9af9SEddie James         return *(--conf);
28774f9af9SEddie James     }
29774f9af9SEddie James     else
30774f9af9SEddie James     {
31774f9af9SEddie James         return *conf;
32774f9af9SEddie James     }
33774f9af9SEddie James }
34774f9af9SEddie James 
35636577f4SEdward A. James bool Device::master() const
36636577f4SEdward A. James {
37636577f4SEdward A. James     int master;
38774f9af9SEddie James     auto masterFile = devPath / "occ_master";
39636577f4SEdward A. James     std::ifstream file(masterFile, std::ios::in);
40636577f4SEdward A. James 
41636577f4SEdward A. James     if (!file)
42636577f4SEdward A. James     {
43636577f4SEdward A. James         return false;
44636577f4SEdward A. James     }
45636577f4SEdward A. James 
46636577f4SEdward A. James     file >> master;
47636577f4SEdward A. James     file.close();
48636577f4SEdward A. James     return (master != 0);
49636577f4SEdward A. James }
50636577f4SEdward A. James 
51482e31ffSEddie James void Device::throttleProcTempCallback(bool error)
52482e31ffSEddie James {
53482e31ffSEddie James     statusObject.throttleProcTemp(error);
54482e31ffSEddie James }
55482e31ffSEddie James 
56482e31ffSEddie James void Device::throttleProcPowerCallback(bool error)
57482e31ffSEddie James {
58482e31ffSEddie James     statusObject.throttleProcPower(error);
59482e31ffSEddie James }
60482e31ffSEddie James 
61482e31ffSEddie James void Device::throttleMemTempCallback(bool error)
62482e31ffSEddie James {
63482e31ffSEddie James     statusObject.throttleMemTemp(error);
64482e31ffSEddie James }
65482e31ffSEddie James 
6632e84e98SVishwanatha Subbanna } // namespace occ
6732e84e98SVishwanatha Subbanna } // namespace open_power
68