progress
This commit is contained in:
32
src/main.c
32
src/main.c
@@ -16,15 +16,6 @@
|
||||
|
||||
static constexpr uint16_t refresh_interval_ms = 500;
|
||||
|
||||
/* move to utils */
|
||||
static void timespec_add_ms(struct timespec *ts, const uint16_t ms) {
|
||||
ts->tv_nsec += ms * 1000000L;
|
||||
if (ts->tv_nsec >= 1000000000L) {
|
||||
ts->tv_sec++;
|
||||
ts->tv_nsec -= 1000000000L;
|
||||
}
|
||||
}
|
||||
|
||||
struct control_t {
|
||||
pthread_mutex_t sensors_mtx;
|
||||
pthread_cond_t sensors_ready;
|
||||
@@ -36,8 +27,8 @@ struct sensors_t {
|
||||
double loadavg[3];
|
||||
struct memory_t ram;
|
||||
struct disk_t home;
|
||||
// sys::Network net;
|
||||
// sys::sysSensors sys;
|
||||
struct network_t net;
|
||||
struct syssensors_t sys;
|
||||
struct cpu_sensors_t cpu;
|
||||
// gpu::gpuSensors gpu;
|
||||
double hass_state;
|
||||
@@ -52,7 +43,9 @@ static void *sensors_thread(void *arg) {
|
||||
|
||||
// set up paths for the sensors
|
||||
strcpy(sensors->home.mountpoint, "/home/drath");
|
||||
strcpy(sensors->net.device, "enp7s0");
|
||||
cpu_detect(&sensors->cpu, "0000:00:18.3");
|
||||
sys_detect(&sensors->sys, "nct6775.656");
|
||||
|
||||
while (control.g_running) { // NOLINT
|
||||
pthread_mutex_lock(&control.sensors_mtx);
|
||||
@@ -61,11 +54,13 @@ static void *sensors_thread(void *arg) {
|
||||
sys_get_time(&sensors->td);
|
||||
sys_get_ram(&sensors->ram);
|
||||
sys_get_disk(&sensors->home);
|
||||
sys_get_network(&sensors->net);
|
||||
sys_update_sensors(&sensors->sys);
|
||||
|
||||
cpu_update(&sensors->cpu);
|
||||
|
||||
pthread_cond_signal(&control.sensors_ready);
|
||||
pthread_mutex_unlock(&control.sensors_mtx);
|
||||
pthread_cond_signal(&control.sensors_ready);
|
||||
|
||||
timespec_add_ms(&next, refresh_interval_ms);
|
||||
clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &next, nullptr);
|
||||
@@ -108,9 +103,22 @@ static void *display_thread(void *arg) {
|
||||
pthread_mutex_lock(&control.sensors_mtx); // lock sensor struct
|
||||
pthread_cond_timedwait(&control.sensors_ready, &control.sensors_mtx, &ts); // wait until data ready
|
||||
|
||||
const uint16_t avg_fan_speed = (sensors->sys.fan_speed[0] + sensors->sys.fan_speed[1]) / 2;
|
||||
|
||||
lcd_writef(&lcd, 0, 0, "%s %s", sensors->td.date, sensors->td.time);
|
||||
lcd_writef(&lcd, 26, 0, "%.2f %.2f %.2f", sensors->loadavg[0], sensors->loadavg[1], sensors->loadavg[2]);
|
||||
|
||||
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, 20, 1, "%d%c", sensors->sys.t_sensor, 0);
|
||||
|
||||
lcd_writef(&lcd, 0, 2, "%.0fW", sensors->cpu.ptotal);
|
||||
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, 0, 3, "%dMHz", sensors->cpu.avg_freq);
|
||||
lcd_writef(&lcd, 14, 3, "%c%s", 2, P_BYTES(sensors->home.usage.free, 1));
|
||||
|
||||
pthread_mutex_unlock(&control.sensors_mtx); // unlock sensor struct
|
||||
|
||||
lcd_flush_buf(&lcd);
|
||||
|
||||
Reference in New Issue
Block a user