diff --git a/Info.hpp b/Info.hpp index 6376a8a..6c29c1f 100644 --- a/Info.hpp +++ b/Info.hpp @@ -12,7 +12,7 @@ namespace Columbus int GetCPUCount(); int GetCPUCacheSize(); int GetCPUUsage(); - int GetCPUTemperature(); + float GetCPUTemperature(); unsigned long GetRAMSize(); unsigned long GetRAMFree(); @@ -68,6 +68,53 @@ namespace Columbus #endif } + float GetCPUTemperature() + { + #ifdef __linux__ + int hwmon = 0; + std::ifstream name1("/sys/class/hwmon/hwmon0/name"); + std::ifstream name2("/sys/class/hwmon/hwmon1/name"); + if (name1.is_open() == false || name2.is_open() == false) return 0; + std::string tmp; + + name1 >> tmp; + if (tmp.find("coretemp") != std::string::npos) hwmon = 0; + name2 >> tmp; + if (tmp.find("coretemp") != std::string::npos) hwmon = 1; + + name1.close(); + name2.close(); + + float t = 0.0; + std::string hw; + if (hwmon == 0) hw = "0"; + if (hwmon == 1) hw = "1"; + + std::ifstream tmp1(("/sys/class/hwmon/hwmon" + hw + "/temp1_input").c_str()); + std::ifstream tmp2(("/sys/class/hwmon/hwmon" + hw + "/temp2_input").c_str()); + std::ifstream tmp3(("/sys/class/hwmon/hwmon" + hw + "/temp3_input").c_str()); + if (tmp1.is_open() != false) + { + tmp1 >> t; + return (t / 1000); + } + + if (tmp2.is_open() != false) + { + tmp2 >> t; + return (t / 1000); + } + + if (tmp3.is_open() != false) + { + tmp1 >> t; + return (t / 1000); + } + return 0.0; + + #endif + } + unsigned long GetRAMSize() { #ifdef __linux__