diff --git a/include/sys.h b/include/sys.h index 2a89dbe..bf71827 100644 --- a/include/sys.h +++ b/include/sys.h @@ -3,10 +3,8 @@ #include -struct time_date_t { - char date[12]; - char time[12]; -}; +#define SYS_GET_TIME_STR(t) sys_get_time_string((char[16]){0}, 16, t) +#define SYS_GET_DATE_STR(t) sys_get_date_string((char[16]){0}, 16, t) struct memory_t { uint64_t free; @@ -28,10 +26,12 @@ struct network_t { struct syssensors_t { char hwmon[64]; // uint16_t fan_speed[1]; // just one fan (pump) we monitor - int16_t t_sensor; // ntc temp sensor + int16_t t_sensor; // ntc temp sensor }; -void sys_get_time(struct time_date_t *td); +char *sys_get_time_string(char *buf, size_t bufsz, time_t t); + +char *sys_get_date_string(char *buf, size_t bufsz, time_t t); void sys_get_load_avg(double *load_avg); diff --git a/src/main.c b/src/main.c index 712f1a4..0e92539 100644 --- a/src/main.c +++ b/src/main.c @@ -28,6 +28,7 @@ struct control_t { } control; struct sensors_t { // NOLINT yes it is + time_t ts; struct memory_t ram; struct disk_t home; struct disk_t gry; @@ -36,7 +37,6 @@ struct sensors_t { // NOLINT yes it is struct cpu_sensors_t cpu; struct gpu_sensors_t gpu; struct aio_t aio; - struct time_date_t td; double loadavg[3]; }; @@ -62,7 +62,7 @@ static void *sensors_thread(void *arg) { pthread_mutex_lock(&control.sensors_mtx); { - sys_get_time(&sensors->td); + sensors->ts = time(nullptr); sys_get_load_avg(sensors->loadavg); sys_get_ram(&sensors->ram); sys_get_disk(&sensors->home); @@ -134,7 +134,7 @@ static void *display_thread(void *arg) { lcd_writef(&lcd, 0, 0, "%c%s", 2, P_BYTES(sensors->home.usage.free, 1)); lcd_writef(&lcd, 7, 0, "%c%s", 5, P_BYTES(sensors->gry.usage.free, 1)); - lcd_writef(&lcd, 15, 0, "%s%c", sensors->td.time, lcd_bar(&lcd, 6, sensors->gpu.usage_core / 100.0)); + lcd_writef(&lcd, 15, 0, "%s%c", SYS_GET_TIME_STR(sensors->ts), lcd_bar(&lcd, 6, sensors->gpu.usage_core / 100.0)); lcd_writef(&lcd, 26, 0, "%s %s %s", P_NUM(sensors->loadavg[0]), P_NUM(sensors->loadavg[1]), P_NUM(sensors->loadavg[2])); lcd_writef(&lcd, 0, 1, "%d/%d%c", sensors->cpu.tctl, sensors->cpu.tccd1, 0); diff --git a/src/sys.c b/src/sys.c index 2240fa9..59c7e97 100644 --- a/src/sys.c +++ b/src/sys.c @@ -8,13 +8,18 @@ #include "sys.h" #include "utils.h" -void sys_get_time(struct time_date_t *td) { +char *sys_get_time_string(char *buf, const size_t bufsz, const time_t t) { + const struct tm *tm = localtime(&t); + snprintf(buf, bufsz, "%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec); + return buf; +} + +char *sys_get_date_string(char *buf, const size_t bufsz, const time_t t) { + const struct tm *tm = localtime(&t); constexpr char months[][4] = {"sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paz", "lis", "gru"}; constexpr char wdays[][4] = {"Nie", "Pon", "Wto", "Sro", "Czw", "Pia", "Sob"}; - const time_t t = time(nullptr); - const struct tm *tm = localtime(&t); - snprintf(td->time, sizeof(td->time), "%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec); - snprintf(td->date, sizeof(td->date), "%s, %02d %s", wdays[tm->tm_wday], tm->tm_mday, months[tm->tm_mon]); + snprintf(buf, bufsz, "%s, %02d %s", wdays[tm->tm_wday], tm->tm_mday, months[tm->tm_mon]); + return buf; } void sys_get_load_avg(double *load_avg) {