summaryrefslogtreecommitdiffstats
path: root/CPUMeter.c
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2020-09-10 19:56:33 +0200
committerChristian Göttsche <cgzones@googlemail.com>2020-11-16 16:38:54 +0100
commit1b225cd7a0af03a6349c48326118a287fc36acd0 (patch)
treedff0955221e7fce63e2308febbefdd58213d16c3 /CPUMeter.c
parent309f1d7282ec8efa4ff6b24a001a4908f5fd28d0 (diff)
Show CPU temperature in CPU meter
Show the CPU temperature in the CPU meter, like CPU frequency, instead of using an extra Meter.
Diffstat (limited to 'CPUMeter.c')
-rw-r--r--CPUMeter.c55
1 files changed, 45 insertions, 10 deletions
diff --git a/CPUMeter.c b/CPUMeter.c
index ff129cd2..e371c202 100644
--- a/CPUMeter.c
+++ b/CPUMeter.c
@@ -56,25 +56,44 @@ static void CPUMeter_updateValues(Meter* this, char* buffer, int size) {
return;
}
memset(this->values, 0, sizeof(double) * CPU_METER_ITEMCOUNT);
+
+ char cpuUsageBuffer[8] = { 0 };
+ char cpuFrequencyBuffer[16] = { 0 };
+ char cpuTemperatureBuffer[16] = { 0 };
+
double percent = Platform_setCPUValues(this, cpu);
+
+ if (this->pl->settings->showCPUUsage) {
+ xSnprintf(cpuUsageBuffer, sizeof(cpuUsageBuffer), "%5.1f%%", percent);
+ }
+
if (this->pl->settings->showCPUFrequency) {
double cpuFrequency = this->values[CPU_METER_FREQUENCY];
- char cpuFrequencyBuffer[16];
if (isnan(cpuFrequency)) {
xSnprintf(cpuFrequencyBuffer, sizeof(cpuFrequencyBuffer), "N/A");
} else {
xSnprintf(cpuFrequencyBuffer, sizeof(cpuFrequencyBuffer), "%4uMHz", (unsigned)cpuFrequency);
}
- if (this->pl->settings->showCPUUsage) {
- xSnprintf(buffer, size, "%5.1f%% %s", percent, cpuFrequencyBuffer);
- } else {
- xSnprintf(buffer, size, "%s", cpuFrequencyBuffer);
- }
- } else if (this->pl->settings->showCPUUsage) {
- xSnprintf(buffer, size, "%5.1f%%", percent);
- } else if (size > 0) {
- buffer[0] = '\0';
}
+
+ #ifdef HAVE_LIBSENSORS
+ if (this->pl->settings->showCPUTemperature) {
+ double cpuTemperature = this->values[CPU_METER_TEMPERATURE];
+ if (isnan(cpuTemperature))
+ xSnprintf(cpuTemperatureBuffer, sizeof(cpuTemperatureBuffer), "N/A");
+ else if (this->pl->settings->degreeFahrenheit)
+ xSnprintf(cpuTemperatureBuffer, sizeof(cpuTemperatureBuffer), "%3d%sF", (int)(cpuTemperature * 9 / 5 + 32), CRT_degreeSign);
+ else
+ xSnprintf(cpuTemperatureBuffer, sizeof(cpuTemperatureBuffer), "%d%sC", (int)cpuTemperature, CRT_degreeSign);
+ }
+ #endif
+
+ xSnprintf(buffer, size, "%s%s%s%s%s",
+ cpuUsageBuffer,
+ (cpuUsageBuffer[0] && (cpuFrequencyBuffer[0] || cpuTemperatureBuffer[0])) ? " " : "",
+ cpuFrequencyBuffer,
+ (cpuFrequencyBuffer[0] && cpuTemperatureBuffer[0]) ? " " : "",
+ cpuTemperatureBuffer);
}
static void CPUMeter_display(const Object* cast, RichString* out) {
@@ -127,6 +146,22 @@ static void CPUMeter_display(const Object* cast, RichString* out) {
RichString_append(out, CRT_colors[CPU_GUEST], buffer);
}
}
+
+ #ifdef HAVE_LIBSENSORS
+ if (this->pl->settings->showCPUTemperature) {
+ char cpuTemperatureBuffer[10];
+ double cpuTemperature = this->values[CPU_METER_TEMPERATURE];
+ if (isnan(cpuTemperature)) {
+ xSnprintf(cpuTemperatureBuffer, sizeof(cpuTemperatureBuffer), "N/A");
+ } else if (this->pl->settings->degreeFahrenheit) {
+ xSnprintf(cpuTemperatureBuffer, sizeof(cpuTemperatureBuffer), "%5.1f%sF", cpuTemperature * 9 / 5 + 32, CRT_degreeSign);
+ } else {
+ xSnprintf(cpuTemperatureBuffer, sizeof(cpuTemperatureBuffer), "%5.1f%sC", cpuTemperature, CRT_degreeSign);
+ }
+ RichString_append(out, CRT_colors[METER_TEXT], "temp:");
+ RichString_append(out, CRT_colors[METER_VALUE], cpuTemperatureBuffer);
+ }
+ #endif
}
static void AllCPUsMeter_getRange(Meter* this, int* start, int* count) {

© 2014-2024 Faster IT GmbH | imprint | privacy policy