MX 2 лет назад
Родитель
Сommit
2e13c9c08b

+ 51 - 46
main_apps_sources/hex_viewer/hex_viewer.c

@@ -229,53 +229,58 @@ int32_t hex_viewer_app(void* p) {
         hex_viewer_read_file(hex_viewer);
         hex_viewer_read_file(hex_viewer);
 
 
         InputEvent input;
         InputEvent input;
-        while(furi_message_queue_get(hex_viewer->input_queue, &input, FuriWaitForever) ==
-              FuriStatusOk) {
-            if(input.key == InputKeyBack) {
-                break;
-            } else if(input.key == InputKeyUp) {
-                furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
-                if(hex_viewer->model->file_offset > 0) {
-                    hex_viewer->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
-                    if(!hex_viewer_read_file(hex_viewer)) break;
-                }
-                furi_mutex_release(hex_viewer->mutex);
-            } else if(input.key == InputKeyDown) {
-                furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
-                uint32_t last_byte_on_screen =
-                    hex_viewer->model->file_offset + hex_viewer->model->file_read_bytes;
-
-                if(hex_viewer->model->file_size > last_byte_on_screen) {
-                    hex_viewer->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
-                    if(!hex_viewer_read_file(hex_viewer)) break;
+        while(1) {
+            if(furi_message_queue_get(hex_viewer->input_queue, &input, 100) == FuriStatusOk) {
+                if(input.key == InputKeyBack) {
+                    break;
+                } else if(input.key == InputKeyUp) {
+                    furi_check(
+                        furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
+                    if(hex_viewer->model->file_offset > 0) {
+                        hex_viewer->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
+                        if(!hex_viewer_read_file(hex_viewer)) break;
+                    }
+                    furi_mutex_release(hex_viewer->mutex);
+                } else if(input.key == InputKeyDown) {
+                    furi_check(
+                        furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
+                    uint32_t last_byte_on_screen =
+                        hex_viewer->model->file_offset + hex_viewer->model->file_read_bytes;
+
+                    if(hex_viewer->model->file_size > last_byte_on_screen) {
+                        hex_viewer->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
+                        if(!hex_viewer_read_file(hex_viewer)) break;
+                    }
+                    furi_mutex_release(hex_viewer->mutex);
+                } else if(input.key == InputKeyLeft) {
+                    furi_check(
+                        furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
+                    hex_viewer->model->mode = !hex_viewer->model->mode;
+                    furi_mutex_release(hex_viewer->mutex);
+                } else if(input.key == InputKeyRight) {
+                    FuriString* buffer;
+                    buffer = furi_string_alloc();
+                    furi_string_printf(
+                        buffer,
+                        "File path: %s\nFile size: %lu (0x%lX)",
+                        furi_string_get_cstr(file_path),
+                        hex_viewer->model->file_size,
+                        hex_viewer->model->file_size);
+
+                    DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
+                    DialogMessage* message = dialog_message_alloc();
+                    dialog_message_set_header(
+                        message, "Hex Viewer v1.1", 16, 2, AlignLeft, AlignTop);
+                    dialog_message_set_icon(message, &I_hex_10px, 3, 2);
+                    dialog_message_set_text(
+                        message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
+                    dialog_message_set_buttons(message, NULL, NULL, "Back");
+                    dialog_message_show(dialogs, message);
+
+                    furi_string_free(buffer);
+                    dialog_message_free(message);
+                    furi_record_close(RECORD_DIALOGS);
                 }
                 }
-                furi_mutex_release(hex_viewer->mutex);
-            } else if(input.key == InputKeyLeft) {
-                furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
-                hex_viewer->model->mode = !hex_viewer->model->mode;
-                furi_mutex_release(hex_viewer->mutex);
-            } else if(input.key == InputKeyRight) {
-                FuriString* buffer;
-                buffer = furi_string_alloc();
-                furi_string_printf(
-                    buffer,
-                    "File path: %s\nFile size: %lu (0x%lX)",
-                    furi_string_get_cstr(file_path),
-                    hex_viewer->model->file_size,
-                    hex_viewer->model->file_size);
-
-                DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
-                DialogMessage* message = dialog_message_alloc();
-                dialog_message_set_header(message, "Hex Viewer v1.1", 16, 2, AlignLeft, AlignTop);
-                dialog_message_set_icon(message, &I_hex_10px, 3, 2);
-                dialog_message_set_text(
-                    message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
-                dialog_message_set_buttons(message, NULL, NULL, "Back");
-                dialog_message_show(dialogs, message);
-
-                furi_string_free(buffer);
-                dialog_message_free(message);
-                furi_record_close(RECORD_DIALOGS);
             }
             }
 
 
             view_port_update(hex_viewer->view_port);
             view_port_update(hex_viewer->view_port);

+ 23 - 22
main_apps_sources/ir_scope/ir_scope.c

@@ -140,30 +140,31 @@ int32_t ir_scope_app(void* p) {
 
 
     InputEvent event;
     InputEvent event;
     bool processing = true;
     bool processing = true;
-    while(processing &&
-          furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk) {
-        if(event.type == InputTypeRelease) {
-            furi_mutex_acquire(state.mutex, FuriWaitForever);
-
-            if(event.key == InputKeyBack) {
-                processing = false;
-            } else if(event.key == InputKeyUp) {
-                state.us_per_sample = MIN(1000, state.us_per_sample + 25);
-                state.autoscale = false;
-            } else if(event.key == InputKeyDown) {
-                state.us_per_sample = MAX(25, state.us_per_sample - 25);
-                state.autoscale = false;
-            } else if(event.key == InputKeyOk) {
-                state.autoscale = !state.autoscale;
-                if(state.autoscale)
-                    state_set_autoscale(&state);
-                else
-                    state.us_per_sample = 200;
+    while(processing) {
+        if(furi_message_queue_get(event_queue, &event, 100) == FuriStatusOk) {
+            if(event.type == InputTypeRelease) {
+                furi_mutex_acquire(state.mutex, FuriWaitForever);
+
+                if(event.key == InputKeyBack) {
+                    processing = false;
+                } else if(event.key == InputKeyUp) {
+                    state.us_per_sample = MIN(1000, state.us_per_sample + 25);
+                    state.autoscale = false;
+                } else if(event.key == InputKeyDown) {
+                    state.us_per_sample = MAX(25, state.us_per_sample - 25);
+                    state.autoscale = false;
+                } else if(event.key == InputKeyOk) {
+                    state.autoscale = !state.autoscale;
+                    if(state.autoscale)
+                        state_set_autoscale(&state);
+                    else
+                        state.us_per_sample = 200;
+                }
+
+                furi_mutex_release(state.mutex);
             }
             }
-
-            view_port_update(view_port);
-            furi_mutex_release(state.mutex);
         }
         }
+        view_port_update(view_port);
     }
     }
 
 
     // Clean up.
     // Clean up.

+ 51 - 49
main_apps_sources/text_viewer/text_viewer.c

@@ -223,56 +223,58 @@ int32_t text_viewer_app(void* p) {
         text_viewer_read_file(text_viewer);
         text_viewer_read_file(text_viewer);
 
 
         InputEvent input;
         InputEvent input;
-        while(furi_message_queue_get(text_viewer->input_queue, &input, FuriWaitForever) ==
-              FuriStatusOk) {
-            if(input.key == InputKeyBack) {
-                break;
-            } else if(input.key == InputKeyUp) {
-                furi_check(
-                    furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
-                if(text_viewer->model->file_offset > 0) {
-                    text_viewer->model->file_offset -= TEXT_VIEWER_BYTES_PER_LINE;
-                    if(!text_viewer_read_file(text_viewer)) break;
-                }
-                furi_mutex_release(text_viewer->mutex);
-            } else if(input.key == InputKeyDown) {
-                furi_check(
-                    furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
-                uint32_t last_byte_on_screen =
-                    text_viewer->model->file_offset + text_viewer->model->file_read_bytes;
-
-                if(text_viewer->model->file_size > last_byte_on_screen) {
-                    text_viewer->model->file_offset += TEXT_VIEWER_BYTES_PER_LINE;
-                    if(!text_viewer_read_file(text_viewer)) break;
+        while(1) {
+            if(furi_message_queue_get(text_viewer->input_queue, &input, 100) == FuriStatusOk) {
+                if(input.key == InputKeyBack) {
+                    break;
+                } else if(input.key == InputKeyUp) {
+                    furi_check(
+                        furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
+                    if(text_viewer->model->file_offset > 0) {
+                        text_viewer->model->file_offset -= TEXT_VIEWER_BYTES_PER_LINE;
+                        if(!text_viewer_read_file(text_viewer)) break;
+                    }
+                    furi_mutex_release(text_viewer->mutex);
+                } else if(input.key == InputKeyDown) {
+                    furi_check(
+                        furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
+                    uint32_t last_byte_on_screen =
+                        text_viewer->model->file_offset + text_viewer->model->file_read_bytes;
+
+                    if(text_viewer->model->file_size > last_byte_on_screen) {
+                        text_viewer->model->file_offset += TEXT_VIEWER_BYTES_PER_LINE;
+                        if(!text_viewer_read_file(text_viewer)) break;
+                    }
+                    furi_mutex_release(text_viewer->mutex);
+                } else if(input.key == InputKeyLeft) {
+                    furi_check(
+                        furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
+                    text_viewer->model->mode = !text_viewer->model->mode;
+                    furi_mutex_release(text_viewer->mutex);
+                } else if(input.key == InputKeyRight) {
+                    FuriString* buffer;
+                    buffer = furi_string_alloc();
+                    furi_string_printf(
+                        buffer,
+                        "File path: %s\nFile size: %lu (0x%lX)",
+                        furi_string_get_cstr(file_path),
+                        text_viewer->model->file_size,
+                        text_viewer->model->file_size);
+
+                    DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
+                    DialogMessage* message = dialog_message_alloc();
+                    dialog_message_set_header(
+                        message, "Text Viewer v1.1", 16, 2, AlignLeft, AlignTop);
+                    dialog_message_set_icon(message, &I_text_10px, 3, 2);
+                    dialog_message_set_text(
+                        message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
+                    dialog_message_set_buttons(message, NULL, NULL, "Back");
+                    dialog_message_show(dialogs, message);
+
+                    furi_string_free(buffer);
+                    dialog_message_free(message);
+                    furi_record_close(RECORD_DIALOGS);
                 }
                 }
-                furi_mutex_release(text_viewer->mutex);
-            } else if(input.key == InputKeyLeft) {
-                furi_check(
-                    furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
-                text_viewer->model->mode = !text_viewer->model->mode;
-                furi_mutex_release(text_viewer->mutex);
-            } else if(input.key == InputKeyRight) {
-                FuriString* buffer;
-                buffer = furi_string_alloc();
-                furi_string_printf(
-                    buffer,
-                    "File path: %s\nFile size: %lu (0x%lX)",
-                    furi_string_get_cstr(file_path),
-                    text_viewer->model->file_size,
-                    text_viewer->model->file_size);
-
-                DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
-                DialogMessage* message = dialog_message_alloc();
-                dialog_message_set_header(message, "Text Viewer v1.1", 16, 2, AlignLeft, AlignTop);
-                dialog_message_set_icon(message, &I_text_10px, 3, 2);
-                dialog_message_set_text(
-                    message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
-                dialog_message_set_buttons(message, NULL, NULL, "Back");
-                dialog_message_show(dialogs, message);
-
-                furi_string_free(buffer);
-                dialog_message_free(message);
-                furi_record_close(RECORD_DIALOGS);
             }
             }
             view_port_update(text_viewer->view_port);
             view_port_update(text_viewer->view_port);
         }
         }