diff --git a/src/main.c b/src/main.c index f24d293..12a1b91 100644 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,7 @@ #include #include +#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);