blob: 6cd6a1f8a87fb8bcca5e6bdb8305292ee41c0694 [file] [log] [blame]
#include "occ_device.hpp"
#include "occ_status.hpp"
#include <iostream>
namespace open_power
{
namespace occ
{
fs::path Device::bindPath = fs::path(OCC_HWMON_PATH) / "bind";
fs::path Device::unBindPath = fs::path(OCC_HWMON_PATH) / "unbind";
std::string Device::getPathBack(const fs::path& path)
{
if (path.empty())
return std::string();
// Points to the last element in the path
auto conf = --path.end();
// The last element will be '.' if the path ends in '/'
// This behavior differs between filesystem and experimental::filesystem
// Verify there is an element before too
if (!conf->compare(".") && conf != path.begin())
{
return *(--conf);
}
else
{
return *conf;
}
}
bool Device::master() const
{
int master;
auto masterFile = devPath / "occ_master";
std::ifstream file(masterFile, std::ios::in);
if (!file)
{
return false;
}
file >> master;
file.close();
return (master != 0);
}
void Device::throttleProcTempCallback(bool error)
{
statusObject.throttleProcTemp(error);
}
void Device::throttleProcPowerCallback(bool error)
{
statusObject.throttleProcPower(error);
}
void Device::throttleMemTempCallback(bool error)
{
statusObject.throttleMemTemp(error);
}
} // namespace occ
} // namespace open_power