diff --git a/.gitignore b/.gitignore index cd531cf..38f188a 100644 --- a/.gitignore +++ b/.gitignore @@ -51,4 +51,6 @@ modules.order Module.symvers Mkfile.old dkms.conf +output/ +.vscode/ diff --git a/output/main b/output/main index 8a6e964..0d57115 100755 Binary files a/output/main and b/output/main differ diff --git a/src/main.c b/src/main.c index 116373f..93995ed 100644 --- a/src/main.c +++ b/src/main.c @@ -12,7 +12,15 @@ void *uartListener(void *arg) { - + char *uart_address = (char *)arg; + int uart = open(uart_address, O_RDWR | O_NOCTTY | O_NDELAY); + if (uart == -1) + { + perror("Failed to open UART"); + return NULL; + } + + close(uart); return NULL; } @@ -27,12 +35,15 @@ int main(int argc, char const *argv[]) getmaxyx(stdscr, y_max, x_max); if (x_max <= MIN_X_TERMINAL_SIZE || y_max <= MIN_Y_TERMINAL_SIZE) { + endwin(); + clear(); puts("Terminal is too small. Exiting...\n"); return EXIT_FAILURE; } noecho(); noraw(); + cbreak(); start_color(); curs_set(0); @@ -42,7 +53,7 @@ int main(int argc, char const *argv[]) uartDialog(uart_address, x_max, y_max); - pthread_create(&uart_thread, NULL, uartListener, NULL); + pthread_create(&uart_thread, NULL, uartListener, uart_address); // diff --git a/src/tui.c b/src/tui.c index ee257ba..cd5bf2b 100644 --- a/src/tui.c +++ b/src/tui.c @@ -29,64 +29,76 @@ void uartDialog(char *uart_adress, int terminal_x, int terminal_y) wattroff(uartwin, COLOR_PAIR(1)); wrefresh(uartwin); - // menu... - int choice; + char choice; int highlight = 0; - keypad(uartwin, TRUE); + int text_x = (win_width - 52) / 2; + int button_x = (win_width - 7) / 2; + + keypad(uartwin, true); while (1) { - int text_x = (win_width - 52) / 2; + // Input array if (highlight == 0) - { wattron(uartwin, COLOR_PAIR(2)); - mvwprintw(uartwin, 5, text_x, "[__________________________________________________]"); - wattroff(uartwin, COLOR_PAIR(2)); - } + else + wattron(uartwin, COLOR_PAIR(1)); + mvwprintw(uartwin, 5, text_x, "[%50s]", input); + if (!strcmp(input, "\0")) + mvwprintw(uartwin, 5, text_x, "[__________________________________________________]"); - int button_x = (win_width - 7) / 2; - if (highlight == 1) - { - wattron(uartwin, COLOR_PAIR(2)); - mvwprintw(uartwin, 7, button_x, ""); + if (highlight == 0) wattroff(uartwin, COLOR_PAIR(2)); - } - mvwprintw(uartwin, 7, button_x, ""); + else + wattroff(uartwin, COLOR_PAIR(1)); + // Enter button + if (highlight == 1) + wattron(uartwin, COLOR_PAIR(2)); + else + wattron(uartwin, COLOR_PAIR(1)); + mvwprintw(uartwin, 7, button_x - 2, " %s ", ""); + if (highlight == 1) + wattroff(uartwin, COLOR_PAIR(2)); + else + wattroff(uartwin, COLOR_PAIR(1)); wrefresh(uartwin); + flushinp(); choice = wgetch(uartwin); + if (choice == '\t') { - highlight=!highlight; + highlight = !highlight; } - if (highlight == 0) + else if (choice == '\n') { - wattron(uartwin, COLOR_PAIR(2)); - mvwprintw(uartwin, 5, (win_width - 52) / 2, "[__________________________________________________]"); - echo(); - wmove(uartwin, 5, ((win_width - 52) / 2) + 1); - curs_set(1); - flushinp(); - wgetnstr(uartwin, input, 50); - curs_set(0); - wattroff(uartwin, COLOR_PAIR(2)); - noecho(); - } - else if (highlight == 1) - { - if (choice == '\n') + if (highlight == 0) { - wclear(uartwin); - wrefresh(uartwin); - touchwin(stdscr); - refresh(); - delwin(uartwin); - refresh(); - strcpy(uart_adress, input); - break; + mvwprintw(uartwin, 5, (win_width - 52) / 2, "[__________________________________________________]"); + echo(); + wmove(uartwin, 5, ((win_width - 52) / 2) + 1); + curs_set(1); + flushinp(); + wgetnstr(uartwin, input, 50); + curs_set(0); + noecho(); + } + else if (highlight == 1) + { + if (choice == '\n') + { + wclear(uartwin); + wrefresh(uartwin); + touchwin(stdscr); + refresh(); + delwin(uartwin); + refresh(); + strcpy(uart_adress, input); + break; + } } } }