From e5fa5ffda3cf516edff31015db1d803f0076f064 Mon Sep 17 00:00:00 2001 From: cool4uma Date: Mon, 9 Jan 2023 22:10:54 +0300 Subject: [PATCH] add of the ability to change baudrate --- scenes/uart_terminal_scene_console_output.c | 54 ++++++++++++++++++++- scenes/uart_terminal_scene_start.c | 2 +- uart_terminal_app_i.h | 3 +- uart_terminal_uart.c | 9 ++-- 4 files changed, 61 insertions(+), 7 deletions(-) diff --git a/scenes/uart_terminal_scene_console_output.c b/scenes/uart_terminal_scene_console_output.c index b1cb3598398..325c50df61a 100644 --- a/scenes/uart_terminal_scene_console_output.c +++ b/scenes/uart_terminal_scene_console_output.c @@ -30,9 +30,59 @@ void uart_terminal_scene_console_output_on_enter(void* context) { } else { text_box_set_focus(text_box, TextBoxFocusEnd); } + + //Change baudrate /////////////////////////////////////////////////////////////////////////// + if(0 == strncmp("2400", app->selected_tx_string, strlen("2400")) && app->BAUDRATE != 2400) { + uart_terminal_uart_free(app->uart); + app->BAUDRATE = 2400; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("9600", app->selected_tx_string, strlen("9600")) && app->BAUDRATE != 9600) { + uart_terminal_uart_free(app->uart); + app->BAUDRATE = 9600; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("19200", app->selected_tx_string, strlen("19200")) && app->BAUDRATE != 19200) { + uart_terminal_uart_free(app->uart); + ; + app->BAUDRATE = 19200; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("38400", app->selected_tx_string, strlen("38400")) && app->BAUDRATE != 38400) { + uart_terminal_uart_free(app->uart); + ; + app->BAUDRATE = 38400; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("57600", app->selected_tx_string, strlen("57600")) && app->BAUDRATE != 57600) { + uart_terminal_uart_free(app->uart); + app->BAUDRATE = 57600; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("230400", app->selected_tx_string, strlen("230400")) && + app->BAUDRATE != 230400) { + uart_terminal_uart_free(app->uart); + app->BAUDRATE = 230400; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("460800", app->selected_tx_string, strlen("460800")) && + app->BAUDRATE != 460800) { + uart_terminal_uart_free(app->uart); + app->BAUDRATE = 460800; + app->uart = uart_terminal_uart_init(app); + } + if(0 == strncmp("921600", app->selected_tx_string, strlen("921600")) && + app->BAUDRATE != 921600) { + uart_terminal_uart_free(app->uart); + app->BAUDRATE = 921600; + app->uart = uart_terminal_uart_init(app); + } + ///////////////////////////////////////////////////////////////////////////////////////////////////// + if(app->is_command) { furi_string_reset(app->text_box_store); app->text_box_store_strlen = 0; + if(0 == strncmp("help", app->selected_tx_string, strlen("help"))) { const char* help_msg = "UART terminal for Flipper\n\nI'm in github: cool4uma\n\nThis app is a modified\nWiFi Marauder companion,\nThanks 0xchocolate(github)\nfor great code and app.\n\n"; @@ -88,6 +138,6 @@ void uart_terminal_scene_console_output_on_exit(void* context) { // Automatically logut when exiting view //if(app->is_command) { - // uart_terminal_uart_tx((uint8_t*)("stopscan\n"), strlen("stopscan\n")); + // uart_terminal_uart_tx((uint8_t*)("exit\n"), strlen("exit\n")); //} -} +} \ No newline at end of file diff --git a/scenes/uart_terminal_scene_start.c b/scenes/uart_terminal_scene_start.c index 3b6172ab9d9..db783e9b2bc 100644 --- a/scenes/uart_terminal_scene_start.c +++ b/scenes/uart_terminal_scene_start.c @@ -26,7 +26,7 @@ const UART_TerminalItem items[NUM_MENU_ITEMS] = { {"Console", {"115200", "2400", "9600", "19200", "38400", "57600", "230400", "460800", "921600"}, 9, - {"", ""}, + {"115200", "2400", "9600", "19200", "38400", "57600", "230400", "460800", "921600"}, NO_ARGS, FOCUS_CONSOLE_TOGGLE, NO_TIP}, diff --git a/uart_terminal_app_i.h b/uart_terminal_app_i.h index e7ef8a55f05..6b1996eb514 100644 --- a/uart_terminal_app_i.h +++ b/uart_terminal_app_i.h @@ -16,6 +16,7 @@ #define UART_TERMINAL_TEXT_BOX_STORE_SIZE (4096) #define UART_TERMINAL_TEXT_INPUT_STORE_SIZE (512) +#define UART_CH (FuriHalUartIdUSART1) struct UART_TerminalApp { Gui* gui; @@ -27,7 +28,6 @@ struct UART_TerminalApp { size_t text_box_store_strlen; TextBox* text_box; UART_TextInput* text_input; - //Widget* widget; VariableItemList* var_item_list; @@ -39,6 +39,7 @@ struct UART_TerminalApp { bool is_custom_tx_string; bool focus_console_start; bool show_stopscan_tip; + int BAUDRATE; }; typedef enum { diff --git a/uart_terminal_uart.c b/uart_terminal_uart.c index 3a38dd4e5df..136bd5d387f 100644 --- a/uart_terminal_uart.c +++ b/uart_terminal_uart.c @@ -1,8 +1,8 @@ #include "uart_terminal_app_i.h" #include "uart_terminal_uart.h" -#define UART_CH (FuriHalUartIdUSART1) -#define BAUDRATE (115200) +//#define UART_CH (FuriHalUartIdUSART1) +//#define BAUDRATE (115200) struct UART_TerminalUart { UART_TerminalApp* app; @@ -66,7 +66,10 @@ UART_TerminalUart* uart_terminal_uart_init(UART_TerminalApp* app) { UART_TerminalUart* uart = malloc(sizeof(UART_TerminalUart)); furi_hal_console_disable(); - furi_hal_uart_set_br(UART_CH, BAUDRATE); + if(app->BAUDRATE == 0) { + app->BAUDRATE = 115200; + } + furi_hal_uart_set_br(UART_CH, app->BAUDRATE); furi_hal_uart_set_irq_cb(UART_CH, uart_terminal_uart_on_irq_cb, uart); uart->app = app;