From e65a407871b08220305348d3d220556b285b6f44 Mon Sep 17 00:00:00 2001 From: smayzy Date: Mon, 22 Dec 2025 21:43:19 +0100 Subject: [PATCH] add layout and remove update that was trash --- README.md | 12 ++++++ src/main.c | 121 +++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 97 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index ae1a657..46fd927 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,15 @@ # Dependencies - ncurses (libncursesw.so.6) + +# Data Shown +- speed (km/h) +- power (W) +- rpm (tr/min) +- bat (%) +- torque (Nm) +- eff (Wh/Km) +- bat_temp (°C) +- var_temp (°C) +- mot_temp (°C) +- warn (message) diff --git a/src/main.c b/src/main.c index 64d0d28..b058928 100644 --- a/src/main.c +++ b/src/main.c @@ -1,30 +1,17 @@ #include #include -#include -void get_data(int *speed, int *capacity) +void get_data(int *speed, int *power, int *bat, float *tq, int *rpm, int *eff, float *bat_temp, float *var_temp, float *mot_temp) { *speed = rand() % 201; - *capacity = rand() % 101; -} - -void update(WINDOW *win, int data, int max) -{ - int win_y, win_x; - char message[64]; - snprintf(message, sizeof(message), "%d", data); - - werase(win); - box(win, 0, 0); - - getmaxyx(win, win_y, win_x); - mvwprintw(win, win_y/2, win_x/4 - strlen(message)/2, "%s", message); - mvwprintw(win, win_y/2, win_x/2, "x"); - int i; - for (i = 0; i < ((data * (win_x / 3)) / max); i++) { - wprintw(win, "x"); - } - wrefresh(win); + *power = rand() % 1251; + *bat = rand() % 101; + *tq = 1.8 + (float)rand() / 3.5f * 1.7f; + *rpm = rand() % 6000; + *eff = rand() % 100; + *bat_temp = (float)rand() / (float)RAND_MAX * 150.0f; + *var_temp = (float)rand() / (float)RAND_MAX * 150.0f; + *mot_temp = (float)rand() / (float)RAND_MAX * 150.0f; } int main() @@ -38,31 +25,93 @@ int main() int y,x; getmaxyx(stdscr, y, x); - WINDOW *top_win; - WINDOW *bottom_win; + WINDOW *win_speed; + WINDOW *win_power; + WINDOW *win_bat; + WINDOW *win_tq; + WINDOW *win_rpm; + WINDOW *win_eff; + WINDOW *win_bat_temp; + WINDOW *win_var_temp; + WINDOW *win_mot_temp; + WINDOW *win_warn; - top_win = newwin(y/2, x, 0, 0); - bottom_win = newwin(y-y/2, x, y/2, 0); + int x2 = x / 2; + int x2r = x - x2; + int x3 = x / 3; + int x3r = x - 2 * x3; - box(top_win, 0, 0); - box(bottom_win, 0, 0); + int y2 = y / 2; + int y2r = y - y2; + int y4 = y2 / 2; + int y4r = y2 - y4; + int y6 = y2r / 3; + int y6r = y2r - 2 * y6; + win_speed = newwin(y2, x3, 0, 0); + win_power = newwin(y2, x3, 0, x3); + win_bat = newwin(y4, x3r, 0, x - x3r); + win_tq = newwin(y4r, x3r, y4, x - x3r); + win_rpm = newwin(y6, x2, y2, 0); + win_eff = newwin(y6, x2r, y2, x2); + win_bat_temp = newwin(y6, x3, y2 + y6, 0); + win_var_temp = newwin(y6, x3, y2 + y6, x3); + win_mot_temp = newwin(y6, x3r, y2 + y6, x - x3r); + win_warn = newwin(y6r, x, y - y6r, 0); + + box(win_speed , 0, 0); + box(win_power , 0, 0); + box(win_bat , 0, 0); + box(win_tq , 0, 0); + box(win_rpm , 0, 0); + box(win_eff , 0, 0); + box(win_bat_temp, 0, 0); + box(win_var_temp, 0, 0); + box(win_mot_temp, 0, 0); + box(win_warn , 0, 0); + + mvwprintw(win_speed, 0, 2, "speed (km/h)"); + mvwprintw(win_power, 0, 2, "power (W)"); + mvwprintw(win_bat, 0, 2, "batteries (%%)"); + mvwprintw(win_tq, 0, 2, "torque (N/m)"); + mvwprintw(win_rpm, 0, 2, "rpm (tr/min)"); + mvwprintw(win_eff, 0, 2, "efficiency (Wh/Km)"); + mvwprintw(win_bat_temp, 0, 2, "batteries temperature (deg C)"); + mvwprintw(win_var_temp, 0, 2, "variator temperature (deg C)"); + mvwprintw(win_mot_temp, 0, 2, "motor temperature (deg C)"); + mvwprintw(win_warn, 0, 2, "warnings (warnings + fixs)"); + refresh(); - wrefresh(top_win); - wrefresh(bottom_win); + wrefresh(win_speed); + wrefresh(win_power); + wrefresh(win_bat); + wrefresh(win_tq); + wrefresh(win_rpm); + wrefresh(win_eff); + wrefresh(win_bat_temp); + wrefresh(win_var_temp); + wrefresh(win_mot_temp); + wrefresh(win_warn); - int speed, capacity; + int speed, power, bat, rpm, eff; + float tq, bat_temp, var_temp, mot_temp; int ch = ERR; while(ch == ERR) { - get_data(&speed, &capacity); - update(top_win, speed, 200); - update(bottom_win, capacity, 100); + get_data(&speed, &power, &bat, &tq, &rpm, &eff, &bat_temp, &var_temp, &mot_temp); ch = getch(); }; - delwin(top_win); - delwin(bottom_win); + delwin(win_speed); + delwin(win_power); + delwin(win_bat); + delwin(win_tq); + delwin(win_rpm); + delwin(win_eff); + delwin(win_bat_temp); + delwin(win_var_temp); + delwin(win_mot_temp); + delwin(win_warn); endwin(); return 0;