From a82fdd3d33d6d34d1a51371f3a06726d8446c16d Mon Sep 17 00:00:00 2001 From: Drath Date: Mon, 4 May 2026 23:04:30 +0200 Subject: [PATCH] whole 1st line done basically --- include/lcd.h | 3 ++- include/sys.h | 12 ++++++++++++ src/sys.c | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 include/sys.h create mode 100644 src/sys.c diff --git a/include/lcd.h b/include/lcd.h index 3aac556..c8401e9 100644 --- a/include/lcd.h +++ b/include/lcd.h @@ -4,6 +4,7 @@ #define LCD_LINES 4 #define LCD_COLS 40 +#include #include struct lcd_t { @@ -24,7 +25,7 @@ void lcd_set_custom_char(struct lcd_t* lcd, uint8_t index, const lcd_glyph_t* gl void lcd_write_str(struct lcd_t* lcd, const char* str, uint8_t len); void lcd_write_str_pos(struct lcd_t* lcd, const char* str, uint8_t len, uint8_t posX, uint8_t posY); void lcd_write_buf(struct lcd_t* lcd, uint8_t row, uint8_t col, const char* str); -int lcd_writef(struct lcd_t *lcd, uint8_t offset, const char *fmt, ...); +void lcd_writef(struct lcd_t *lcd, uint8_t x, uint8_t y, const char *fmt, ...) __attribute__((format(printf, 4, 5))); void lcd_clear_buf(struct lcd_t* lcd); void lcd_flush_buf(struct lcd_t* lcd); char lcd_bar(struct lcd_t* lcd, uint8_t char_id, double value); diff --git a/include/sys.h b/include/sys.h new file mode 100644 index 0000000..1458a1e --- /dev/null +++ b/include/sys.h @@ -0,0 +1,12 @@ +#ifndef LINUXSMARTIE_SYS_H +#define LINUXSMARTIE_SYS_H + +struct time_date_t { + char date[12]; + char time[9]; +}; + +void sys_get_time(struct time_date_t *td); +void sys_get_load_avg(double *load_avg); + +#endif //LINUXSMARTIE_SYS_H \ No newline at end of file diff --git a/src/sys.c b/src/sys.c new file mode 100644 index 0000000..1cf0042 --- /dev/null +++ b/src/sys.c @@ -0,0 +1,18 @@ +#include "sys.h" + +#include +#include +#include + +void sys_get_time(struct time_date_t *td) { + 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]); +} + +void sys_get_load_avg(double *load_avg) { + getloadavg(load_avg, 3); +} \ No newline at end of file