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