Prechádzať zdrojové kódy

Merge uart_terminal from https://github.com/xMasterX/all-the-plugins

# Conflicts:
#	uart_terminal/scenes/uart_terminal_scene.h
#	uart_terminal/scenes/uart_terminal_scene_text_input.c
Willy-JL 1 rok pred
rodič
commit
75362a4f28

+ 1 - 1
uart_terminal/application.fam

@@ -10,6 +10,6 @@ App(
     fap_category="GPIO",
     fap_icon_assets="assets",
     fap_author="@cool4uma & @rnadyrshin & (some fixes by @xMasterX)",
-    fap_version="1.5",
+    fap_version="1.6",
     fap_description="Control various devices via the Flipper Zero UART interface.",
 )

+ 1 - 0
uart_terminal/scenes/uart_terminal_scene.h

@@ -31,5 +31,6 @@ extern const SceneManagerHandlers uart_terminal_scene_handlers;
 #define UART_PINS_ITEM_IDX (0)
 #define BAUDRATE_ITEM_IDX  (1)
 #define HEX_MODE_ITEM_IDX  (2)
+#define CR_MODE_ITEM_IDX   (3)
 
 #define DEFAULT_BAUDRATE_OPT_IDX (18)

+ 1 - 1
uart_terminal/scenes/uart_terminal_scene_help.c

@@ -14,7 +14,7 @@ void uart_terminal_scene_help_on_enter(void* context) {
     temp_str = furi_string_alloc();
     furi_string_printf(
         temp_str,
-        "\nUART 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");
+        "\nUART terminal for Flipper\n\nAT Command is using CR+LF\nSend command is using CR\nmode from Setup\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");
     furi_string_cat_printf(temp_str, "Press BACK to return\n");
 
     widget_add_text_box_element(

+ 12 - 1
uart_terminal/scenes/uart_terminal_scene_setup.c

@@ -16,6 +16,7 @@ static const UART_Terminal_Setup_Item items[SETUP_MENU_ITEMS] = {
                       "38400",  "56000",  "57600",  "76800", "115200", "128000", "230400",
                       "250000", "256000", "460800", "921600"}},
     {"HEX mode", 2, {"OFF", "ON"}},
+    {"CR mode", 2, {"Newline", "CR+LF"}},
 };
 
 static void uart_terminal_scene_setup_var_list_enter_callback(void* context, uint32_t index) {
@@ -64,6 +65,11 @@ static void uart_terminal_scene_setup_var_list_change_callback(VariableItem* ite
             }
         }
     }
+
+    // CR mode
+    if(app->setup_selected_menu_index == CR_MODE_ITEM_IDX) {
+        app->TERMINAL_MODE = item_index;
+    }
 }
 
 void uart_terminal_scene_setup_on_enter(void* context) {
@@ -81,7 +87,12 @@ void uart_terminal_scene_setup_on_enter(void* context) {
             items[i].num_options_menu,
             uart_terminal_scene_setup_var_list_change_callback,
             app);
-        variable_item_set_current_value_index(item, app->setup_selected_option_index[i]);
+        if(i == CR_MODE_ITEM_IDX) {
+            app->setup_selected_option_index[CR_MODE_ITEM_IDX] = app->TERMINAL_MODE;
+            variable_item_set_current_value_index(item, app->setup_selected_option_index[i]);
+        } else {
+            variable_item_set_current_value_index(item, app->setup_selected_option_index[i]);
+        }
         variable_item_set_current_value_text(
             item, items[i].options_menu[app->setup_selected_option_index[i]]);
     }

+ 7 - 0
uart_terminal/scenes/uart_terminal_scene_start.c

@@ -112,6 +112,13 @@ static void uart_terminal_scene_start_var_list_change_callback(VariableItem* ite
 
 void uart_terminal_scene_start_on_enter(void* context) {
     UART_TerminalApp* app = context;
+
+    // Restore terminal mode
+    if(app->atmode_was_set == true) {
+        app->TERMINAL_MODE = app->old_term_mode;
+        app->atmode_was_set = false;
+    }
+
     VariableItemList* var_item_list = app->var_item_list;
 
     for(int i = 0; i < START_MENU_ITEMS; ++i) {

+ 5 - 2
uart_terminal/scenes/uart_terminal_scene_text_input.c

@@ -26,10 +26,13 @@ void uart_terminal_scene_text_input_on_enter(void* context) {
     TextInput* text_input = app->text_input;
     // Add help message to header
     if(0 == strncmp("AT", app->selected_tx_string, strlen("AT"))) {
-        app->TERMINAL_MODE = 1;
+        if(app->TERMINAL_MODE == 0) {
+            app->old_term_mode = app->TERMINAL_MODE;
+            app->TERMINAL_MODE = 1;
+            app->atmode_was_set = true;
+        }
         text_input_set_header_text(text_input, "Send AT command to UART");
     } else {
-        app->TERMINAL_MODE = 0;
         text_input_set_header_text(text_input, "Send command to UART");
     }
     text_input_set_result_callback(

+ 4 - 0
uart_terminal/uart_terminal_app.c

@@ -77,6 +77,10 @@ UART_TerminalApp* uart_terminal_app_alloc() {
 
     app->setup_selected_option_index[BAUDRATE_ITEM_IDX] = DEFAULT_BAUDRATE_OPT_IDX;
 
+    app->old_term_mode = 0;
+    app->TERMINAL_MODE = 0;
+    app->atmode_was_set = false;
+
     scene_manager_next_scene(app->scene_manager, UART_TerminalSceneStart);
 
     return app;

+ 4 - 2
uart_terminal/uart_terminal_app_i.h

@@ -15,7 +15,7 @@
 #include "uart_hex_input.h"
 
 #define START_MENU_ITEMS (7)
-#define SETUP_MENU_ITEMS (3)
+#define SETUP_MENU_ITEMS (4)
 
 #define UART_TERMINAL_TEXT_BOX_STORE_SIZE   (4096)
 #define UART_TERMINAL_TEXT_INPUT_STORE_SIZE (512)
@@ -48,7 +48,9 @@ struct UART_TerminalApp {
     uint8_t new_uart_ch;
     int BAUDRATE;
     int NEW_BAUDRATE;
-    int TERMINAL_MODE; //1=AT mode, 0=other mode
+    uint8_t TERMINAL_MODE; //1=AT mode, 0=other mode
+    uint8_t old_term_mode; //1=AT mode, 0=other mode
+    bool atmode_was_set;
 };
 
 typedef enum {