fix fan speed calculation

This commit is contained in:
Jussi Kuokkanen 2023-10-24 22:38:16 +03:00
parent 78b826f81d
commit f20b6deda2

View File

@ -217,21 +217,14 @@ std::vector<TreeNode<DeviceNode>> getFanSpeedWrite(AMDGPUData data) {
} }
std::vector<TreeNode<DeviceNode>> getFanSpeedRead(AMDGPUData data) { std::vector<TreeNode<DeviceNode>> getFanSpeedRead(AMDGPUData data) {
// Get delta of min and max fan RPMs
char path[96]; char path[96];
snprintf(path, 96, "%s/fan1_min", data.hwmonPath.c_str());
snprintf(path, 96, "%s/fan1_max", data.hwmonPath.c_str());
auto contents = fileContents(path); auto contents = fileContents(path);
if (!contents.has_value()) if (!contents.has_value())
return {}; return {};
int minRPM = std::stoi(*contents);
snprintf(path, 96, "%s/fan1_max", data.hwmonPath.c_str());
contents = fileContents(path);
if (!contents.has_value())
return {};
int maxRPM = std::stoi(*contents); int maxRPM = std::stoi(*contents);
auto delta = maxRPM - minRPM;
snprintf(path, 96, "%s/fan1_input", data.hwmonPath.c_str()); snprintf(path, 96, "%s/fan1_input", data.hwmonPath.c_str());
@ -240,9 +233,9 @@ std::vector<TreeNode<DeviceNode>> getFanSpeedRead(AMDGPUData data) {
if (!string.has_value()) if (!string.has_value())
return ReadError::UnknownError; return ReadError::UnknownError;
int curDelta = maxRPM - std::stoi(*string); int value = std::stoi(*string);
double ratio = static_cast<double>(curDelta) / static_cast<double>(delta); double ratio = static_cast<double>(value) / static_cast<double>(maxRPM);
return std::floor(ratio * 100); return std::round(ratio * 100);
}; };
DynamicReadable dr{func, _("%")}; DynamicReadable dr{func, _("%")};