This commit is contained in:
2026-05-23 18:09:22 +00:00
parent 35aba48c48
commit 9cee96a64c

View File

@@ -7,6 +7,7 @@
#include <sys/signalfd.h>
#include <unistd.h>
#include "aio.h"
#include "cpu.h"
#include "gpu.h"
#include "lcd.h"
@@ -35,6 +36,7 @@ struct sensors_t {
struct syssensors_t sys;
struct cpu_sensors_t cpu;
struct gpu_sensors_t gpu;
struct aio_t aio;
double loadavg[3];
};
@@ -52,6 +54,7 @@ static void *sensors_thread(void *arg) {
cpu_detect(&sensors->cpu, cpu_pcidev);
gpu_detect(&sensors->gpu, gpu_pcidev);
sys_detect(&sensors->sys, "nct6775.656");
aio_detect(&sensors->aio);
/* main sensor loop */
applog(LOG_START, "reached sensors main loop");
@@ -68,6 +71,7 @@ static void *sensors_thread(void *arg) {
sys_update_sensors(&sensors->sys);
cpu_update(&sensors->cpu);
gpu_update(&sensors->gpu);
aio_update(&sensors->aio);
}
pthread_cond_signal(&control.sensors_ready);
@@ -77,6 +81,7 @@ static void *sensors_thread(void *arg) {
clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &next, NULL);
}
aio_close(&sensors->aio);
applog(LOG_WRN, "sensors thread stopped");
return NULL;
}
@@ -115,6 +120,8 @@ static void *display_thread(void *arg) {
{
// prepare some tricky sensors
const uint16_t avg_fan_speed = (sensors->aio.fan_speed[0] + sensors->aio.fan_speed[1]) / 2;
char gpudelta[5];
const uint8_t delta = sensors->gpu.temp_hotspot - sensors->gpu.temp_edge;
snprintf(gpudelta, sizeof(gpudelta), "%c%d", 1, delta);
@@ -128,13 +135,14 @@ static void *display_thread(void *arg) {
lcd_writef(&lcd, 0, 1, "%d/%d%c", sensors->cpu.tctl, sensors->cpu.tccd1, 0);
lcd_writef(&lcd, 7, 1, "%s", P_BYTES(sensors->ram.used, 0));
lcd_writef(&lcd, 13, 1, "%.1f%c", sensors->aio.water_temp, 0);
lcd_writef(&lcd, 18, 1, "%3d%c", sensors->sys.t_sensor, 0);
lcd_writef(&lcd, 28, 1, "%4s%c", gpudelta, 0);
lcd_writef(&lcd, 25 - gpu_pos, 1, "%6s", P_BYTES(sensors->gpu.vram_used, 1));
lcd_writef(&lcd, 34, 1, "%d/%d%c", sensors->gpu.temp_edge, sensors->gpu.temp_hotspot, 0);
lcd_writef(&lcd, 0, 2, "%.0fW", sensors->cpu.ptotal);
lcd_writef(&lcd, 5, 2, "%dR", sensors->sys.fan_speed[0]);
lcd_writef(&lcd, 5, 2, "%dR", avg_fan_speed);
lcd_writef(&lcd, 12, 2, "%c%s %c%s", 3, P_BYTES(sensors->net.upload, 1), 4, P_BYTES(sensors->net.download, 1));
lcd_writef(&lcd, 26, 2, "%4dR", sensors->gpu.fan_speed);
lcd_writef(&lcd, 32, 2, "%3d/%3dW", sensors->gpu.power_avg, sensors->gpu.power_cap);