57 lines
1.8 KiB
Diff
57 lines
1.8 KiB
Diff
|
diff --git a/linux/Platform.c b/linux/Platform.c
|
||
|
index cd95463..f9e644e 100644
|
||
|
--- a/linux/Platform.c
|
||
|
+++ b/linux/Platform.c
|
||
|
@@ -287,7 +287,7 @@ int Platform_getCpuTemp(Meter* this) {
|
||
|
}
|
||
|
} else {
|
||
|
// sleep_ms(30);
|
||
|
- // xSnprintf(szbuf, sizeof(szbuf), "/sys/devices/system/cpu/cpufreq/policy%d/cpuinfo_cur_freq", cpu);
|
||
|
+ // xSnprintf(szbuf, sizeof(szbuf), "/sys/devices/system/cpu/cpufreq/policy%d/scaling_cur_freq", cpu);
|
||
|
xSnprintf(szbuf, sizeof(szbuf), "%s", "/sys/class/thermal/thermal_zone0/temp");
|
||
|
}
|
||
|
FILE *fd = fopen(szbuf, "r");
|
||
|
@@ -304,7 +304,6 @@ int Platform_getCpuTemp(Meter* this) {
|
||
|
|
||
|
int Platform_getCpuFreq(Meter* this, int cpu) {
|
||
|
int Freq = 0;
|
||
|
- FILE* fd;
|
||
|
char szbuf[256];
|
||
|
Settings* settings = this->pl->settings;
|
||
|
char *handler;
|
||
|
@@ -318,18 +317,28 @@ int Platform_getCpuFreq(Meter* this, int cpu) {
|
||
|
} else {
|
||
|
xSnprintf(szbuf, sizeof(szbuf), "%s", handler);
|
||
|
}
|
||
|
+ ReadIntFromFile(szbuf, &Freq);
|
||
|
} else {
|
||
|
- // sleep_ms(30);
|
||
|
- xSnprintf(szbuf, sizeof(szbuf), "/sys/devices/system/cpu/cpufreq/policy%d/cpuinfo_cur_freq", cpu);
|
||
|
+ // sleep_ms(30);
|
||
|
+ xSnprintf(szbuf, sizeof(szbuf), "/sys/devices/system/cpu/cpufreq/policy%d/scaling_cur_freq", cpu);
|
||
|
+ if (ReadIntFromFile(szbuf, &Freq) < 0) {
|
||
|
+ xSnprintf(szbuf, sizeof(szbuf), "/sys/devices/system/cpu/cpufreq/policy%d/cpuinfo_cur_freq", cpu);
|
||
|
+ ReadIntFromFile(szbuf, &Freq);
|
||
|
+ }
|
||
|
}
|
||
|
- fd = fopen(szbuf, "r");
|
||
|
+ return Freq;
|
||
|
+}
|
||
|
+
|
||
|
+int ReadIntFromFile(char *file_name, int *out) {
|
||
|
+ FILE *fd;
|
||
|
+ fd = fopen(file_name, "r");
|
||
|
if (fd) {
|
||
|
int n;
|
||
|
- n = fscanf(fd, "%d", &Freq);
|
||
|
+ n = fscanf(fd, "%d", out);
|
||
|
fclose(fd);
|
||
|
- if (n <= 0) return 0;
|
||
|
+ return n;
|
||
|
}
|
||
|
- return Freq;
|
||
|
+ return 0;
|
||
|
}
|
||
|
|
||
|
int Platform_getCpuVcore(Meter* this) {
|