From 334bda6a91ea6d76c77ec6b29db98001ce86ad40 Mon Sep 17 00:00:00 2001 From: "DLABAL, Eduard" Date: Wed, 2 Apr 2025 19:07:38 +0200 Subject: [PATCH] uart dialog --- include/tui.h | 5 +++++ output/main | Bin 19376 -> 21576 bytes src/main.c | 15 +++++++++++++++ src/tui.c | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 56 insertions(+), 1 deletion(-) diff --git a/include/tui.h b/include/tui.h index 82fe874..8d1d04e 100644 --- a/include/tui.h +++ b/include/tui.h @@ -5,4 +5,9 @@ #include #include +#define MIN_X_TERMINAL_SIZE 80 +#define MIN_Y_TERMINAL_SIZE 30 + +void uartDialog(int terminal_x, int terminal_y); + #endif \ No newline at end of file diff --git a/output/main b/output/main index 02ef14f6cf11bef400d38def905fead13ff84202..daa5f499d6ca4424113bd6a2803170fc43eba5ee 100755 GIT binary patch literal 21576 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 #include #include +#include +#include +#include #include "users.h" +#include "tui.h" + + void *uartListener(void *arg) { @@ -15,11 +21,17 @@ void *uartListener(void *arg) int main(int argc, char const *argv[]) { int y_max, x_max; + char * uart_address; pthread_t uart_thread; initscr(); getmaxyx(stdscr, y_max, x_max); + if (x_max <= MIN_X_TERMINAL_SIZE || y_max <= MIN_Y_TERMINAL_SIZE) + { + puts("Terminal is too small. Exiting...\n"); + return EXIT_FAILURE; + } noecho(); noraw(); @@ -30,9 +42,12 @@ int main(int argc, char const *argv[]) erase(); refresh(); + uartDialog(x_max, y_max); + pthread_create(&uart_thread, NULL, uartListener, NULL); // + getch(); pthread_join(uart_thread, NULL); diff --git a/src/tui.c b/src/tui.c index 3f492c3..9f47f04 100644 --- a/src/tui.c +++ b/src/tui.c @@ -1,3 +1,38 @@ #include #include -#include \ No newline at end of file +#include +#include + +void uartDialog(int terminal_x, int terminal_y) +{ + char *prompt = "Please enter UART device address for RFID reader (probably /dev/ttyUSB0): "; + char *header = "Enter UART Address"; + + int win_height = 15; + int win_width = 80; + int start_y = (terminal_y - win_height) / 2; + int start_x = (terminal_x - win_width) / 2; + + start_color(); + init_pair(1, COLOR_BLACK, COLOR_WHITE); + + WINDOW *uartwin = newwin(win_height, win_width, start_y, start_x); + + wbkgd(uartwin, COLOR_PAIR(1)); + + box(uartwin, 0, 0); + wattron(uartwin, COLOR_PAIR(1)); + mvwprintw(uartwin, 0, (win_width - strlen(header)) / 2, "%s", header); + mvwprintw(uartwin, 3, (win_width - strlen(prompt)) / 2, "%s", prompt); + wattroff(uartwin, COLOR_PAIR(1)); + wrefresh(uartwin); + + getch(); + + wclear(uartwin); + wrefresh(uartwin); + touchwin(stdscr); + refresh(); + delwin(uartwin); + refresh(); +} \ No newline at end of file