Esteban Fuentealba 1 год назад
Родитель
Сommit
09fed0f035

+ 1 - 3
gb_cartridge_app.c

@@ -144,10 +144,8 @@ void gb_cartridge_app_app_free(GBCartridge* app) {
 
 
     // storage_file_free(app->file_path);
     // storage_file_free(app->file_path);
 
 
-
     view_dispatcher_free(app->view_dispatcher);
     view_dispatcher_free(app->view_dispatcher);
     scene_manager_free(app->scene_manager);
     scene_manager_free(app->scene_manager);
-    
 
 
     app->gui = NULL;
     app->gui = NULL;
     app->notification = NULL;
     app->notification = NULL;
@@ -210,6 +208,6 @@ int32_t gb_cartridge_app(void* p) {
     // Return previous state of expansion
     // Return previous state of expansion
     expansion_enable(expansion);
     expansion_enable(expansion);
     furi_record_close(RECORD_EXPANSION);
     furi_record_close(RECORD_EXPANSION);
-   
+
     return 0;
     return 0;
 }
 }

+ 4 - 4
scenes/gb_cartridge_scene_menu.c

@@ -104,10 +104,10 @@ bool gb_cartridge_scene_menu_on_event(void* context, SceneManagerEvent event) {
             scene_manager_set_scene_state(
             scene_manager_set_scene_state(
                 app->scene_manager, GBCartridgeSceneMenu, SubmenuIndexScene3);
                 app->scene_manager, GBCartridgeSceneMenu, SubmenuIndexScene3);
             scene_manager_next_scene(app->scene_manager, GBCartridgeSceneScene_3);
             scene_manager_next_scene(app->scene_manager, GBCartridgeSceneScene_3);
-        // } else if(event.event == SubmenuIndexScene4) {
-        //     scene_manager_set_scene_state(
-        //         app->scene_manager, GBCartridgeSceneMenu, SubmenuIndexScene4);
-        //     scene_manager_next_scene(app->scene_manager, GBCartridgeSceneScene_4);
+            // } else if(event.event == SubmenuIndexScene4) {
+            //     scene_manager_set_scene_state(
+            //         app->scene_manager, GBCartridgeSceneMenu, SubmenuIndexScene4);
+            //     scene_manager_next_scene(app->scene_manager, GBCartridgeSceneScene_4);
         } else if(event.event == SubmenuIndexScene5) {
         } else if(event.event == SubmenuIndexScene5) {
             scene_manager_set_scene_state(
             scene_manager_set_scene_state(
                 app->scene_manager, GBCartridgeSceneMenu, SubmenuIndexScene5);
                 app->scene_manager, GBCartridgeSceneMenu, SubmenuIndexScene5);

+ 5 - 7
uart.c

@@ -22,8 +22,6 @@ typedef enum {
 
 
 #define WORKER_ALL_RX_EVENTS (WorkerEvtStop | WorkerEvtRxDone)
 #define WORKER_ALL_RX_EVENTS (WorkerEvtStop | WorkerEvtRxDone)
 
 
-
-
 void uart_set_handle_rx_data_cb(
 void uart_set_handle_rx_data_cb(
     Uart* uart,
     Uart* uart,
     void (*handle_rx_data_cb)(uint8_t* buf, size_t len, void* context)) {
     void (*handle_rx_data_cb)(uint8_t* buf, size_t len, void* context)) {
@@ -44,7 +42,8 @@ static void wifi_marauder_uart_on_irq_cb(
     }
     }
 }
 }
 
 
-static void uart_on_irq_cb(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void* context) {
+static void
+    uart_on_irq_cb(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void* context) {
     Uart* uart = (Uart*)context;
     Uart* uart = (Uart*)context;
     UNUSED(handle);
     UNUSED(handle);
 
 
@@ -109,7 +108,7 @@ static int32_t uart_worker(void* context) {
     Uart* uart = (Uart*)context;
     Uart* uart = (Uart*)context;
 
 
     while(1) {
     while(1) {
-       uint32_t events =
+        uint32_t events =
             furi_thread_flags_wait(WORKER_ALL_RX_EVENTS, FuriFlagWaitAny, FuriWaitForever);
             furi_thread_flags_wait(WORKER_ALL_RX_EVENTS, FuriFlagWaitAny, FuriWaitForever);
         furi_check((events & FuriFlagError) == 0);
         furi_check((events & FuriFlagError) == 0);
 
 
@@ -163,14 +162,13 @@ Uart* _uart_init(void* app, FuriHalSerialId channel, const char* thread_name) {
         furi_delay_ms(5000);
         furi_delay_ms(5000);
     }
     }
     furi_check(uart->serial_handle);
     furi_check(uart->serial_handle);
-    furi_hal_serial_init(uart->serial_handle,  BAUDRATE);
+    furi_hal_serial_init(uart->serial_handle, BAUDRATE);
     furi_hal_serial_async_rx_start(
     furi_hal_serial_async_rx_start(
         uart->serial_handle,
         uart->serial_handle,
         channel == FuriHalSerialIdUsart ? uart_on_irq_cb : wifi_marauder_uart_on_irq_cb,
         channel == FuriHalSerialIdUsart ? uart_on_irq_cb : wifi_marauder_uart_on_irq_cb,
         uart,
         uart,
         false);
         false);
 
 
-
     return uart;
     return uart;
 }
 }
 
 
@@ -185,7 +183,7 @@ Uart* lp_uart_init(void* app) {
 void uart_free(Uart* uart) {
 void uart_free(Uart* uart) {
     furi_assert(uart);
     furi_assert(uart);
 
 
-   furi_thread_flags_set(furi_thread_get_id(uart->rx_thread), WorkerEvtStop);
+    furi_thread_flags_set(furi_thread_get_id(uart->rx_thread), WorkerEvtStop);
     furi_thread_join(uart->rx_thread);
     furi_thread_join(uart->rx_thread);
     furi_thread_free(uart->rx_thread);
     furi_thread_free(uart->rx_thread);
 
 

+ 8 - 2
views/gb_cartridge_scene_1.c

@@ -328,7 +328,10 @@ bool gb_cartridge_scene_1_input(InputEvent* event, void* context) {
                         ((GBCartridge*)instance->app)->uart,
                         ((GBCartridge*)instance->app)->uart,
                         gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
                         gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
                     const char gbcartridge_command[] = "gbcartridge -i\n";
                     const char gbcartridge_command[] = "gbcartridge -i\n";
-                    uart_tx(((GBCartridge*)instance->app)->uart, (uint8_t*)gbcartridge_command, strlen(gbcartridge_command));
+                    uart_tx(
+                        ((GBCartridge*)instance->app)->uart,
+                        (uint8_t*)gbcartridge_command,
+                        strlen(gbcartridge_command));
                 },
                 },
                 true);
                 true);
             consumed = true;
             consumed = true;
@@ -367,7 +370,10 @@ void gb_cartridge_scene_1_enter(void* context) {
         ((GBCartridge*)instance->app)->uart,
         ((GBCartridge*)instance->app)->uart,
         gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
         gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
     const char gbcartridge_command[] = "gbcartridge -i\n";
     const char gbcartridge_command[] = "gbcartridge -i\n";
-    uart_tx(((GBCartridge*)instance->app)->uart, (uint8_t*)gbcartridge_command, strlen(gbcartridge_command));
+    uart_tx(
+        ((GBCartridge*)instance->app)->uart,
+        (uint8_t*)gbcartridge_command,
+        strlen(gbcartridge_command));
 }
 }
 
 
 GBCartridgeScene1* gb_cartridge_scene_1_alloc() {
 GBCartridgeScene1* gb_cartridge_scene_1_alloc() {

+ 7 - 3
views/gb_cartridge_scene_2.c

@@ -276,7 +276,8 @@ bool gb_cartridge_scene_2_input(InputEvent* event, void* context) {
                            FSAM_WRITE,
                            FSAM_WRITE,
                            FSOM_CREATE_ALWAYS)) {
                            FSOM_CREATE_ALWAYS)) {
                         const char gbcartridge_command[] = "gbcartridge -d -o\n";
                         const char gbcartridge_command[] = "gbcartridge -d -o\n";
-                        uart_tx(app->uart, (uint8_t*)gbcartridge_command, strlen(gbcartridge_command));
+                        uart_tx(
+                            app->uart, (uint8_t*)gbcartridge_command, strlen(gbcartridge_command));
                     } else {
                     } else {
                         dialog_message_show_storage_error(app->dialogs, "Cannot open dump file");
                         dialog_message_show_storage_error(app->dialogs, "Cannot open dump file");
                     }
                     }
@@ -323,8 +324,11 @@ void gb_cartridge_scene_2_enter(void* context) {
                 model->cart_dump_rom_extension);
                 model->cart_dump_rom_extension);
             model->cart_dump_rom_filename_sequential = filename;
             model->cart_dump_rom_filename_sequential = filename;
             // Register callbacks to receive data
             // Register callbacks to receive data
-            uart_set_handle_rx_data_cb( app->uart, gameboy_rom_backup_handle_rx_data_cb); // setup callback for general log rx thread
-            uart_set_handle_rx_data_cb( app->lp_uart, dump_handle_rx_data_cb); // setup callback for general log rx thread
+            uart_set_handle_rx_data_cb(
+                app->uart,
+                gameboy_rom_backup_handle_rx_data_cb); // setup callback for general log rx thread
+            uart_set_handle_rx_data_cb(
+                app->lp_uart, dump_handle_rx_data_cb); // setup callback for general log rx thread
             app->is_writing_rom = true;
             app->is_writing_rom = true;
         },
         },
         false);
         false);

+ 8 - 3
views/gb_cartridge_scene_3.c

@@ -280,7 +280,8 @@ bool gb_cartridge_scene_3_input(InputEvent* event, void* context) {
                            FSAM_WRITE,
                            FSAM_WRITE,
                            FSOM_CREATE_ALWAYS)) {
                            FSOM_CREATE_ALWAYS)) {
                         const char gbcartridge_command[] = "gbcartridge -d -a\n";
                         const char gbcartridge_command[] = "gbcartridge -d -a\n";
-                        uart_tx(app->uart, (uint8_t*)gbcartridge_command, strlen(gbcartridge_command));
+                        uart_tx(
+                            app->uart, (uint8_t*)gbcartridge_command, strlen(gbcartridge_command));
                     } else {
                     } else {
                         dialog_message_show_storage_error(app->dialogs, "Cannot open dump file");
                         dialog_message_show_storage_error(app->dialogs, "Cannot open dump file");
                     }
                     }
@@ -324,8 +325,12 @@ void gb_cartridge_scene_3_enter(void* context) {
             model->cart_dump_ram_filename_sequential = filename;
             model->cart_dump_ram_filename_sequential = filename;
             app->is_writing_ram = true;
             app->is_writing_ram = true;
             // Register callbacks to receive data
             // Register callbacks to receive data
-            uart_set_handle_rx_data_cb( app->uart, gameboy_ram_backup_handle_rx_data_cb); // setup callback for general log rx thread
-            uart_set_handle_rx_data_cb( app->lp_uart, dump_ram_handle_rx_data_cb); // setup callback for general log rx thread
+            uart_set_handle_rx_data_cb(
+                app->uart,
+                gameboy_ram_backup_handle_rx_data_cb); // setup callback for general log rx thread
+            uart_set_handle_rx_data_cb(
+                app->lp_uart,
+                dump_ram_handle_rx_data_cb); // setup callback for general log rx thread
         },
         },
         false);
         false);
 }
 }

+ 99 - 121
views/gb_cartridge_scene_5.c

@@ -11,21 +11,19 @@
 #include <toolbox/stream/file_stream.h>
 #include <toolbox/stream/file_stream.h>
 #include "../helpers/gb_cartridge_speaker.h"
 #include "../helpers/gb_cartridge_speaker.h"
 #include "../helpers/sequential_file.h"
 #include "../helpers/sequential_file.h"
-#include <stdio.h>  // Para sprintf
+#include <stdio.h> // Para sprintf
 #include <string.h> // Para strlen
 #include <string.h> // Para strlen
 
 
 static uint64_t last_toggle_time = 0;
 static uint64_t last_toggle_time = 0;
-struct GBCartridgeScene5
-{
-    View *view;
+struct GBCartridgeScene5 {
+    View* view;
     GBCartridgeScene5Callback callback;
     GBCartridgeScene5Callback callback;
-    void *context;
-    GBCartridge *app;
+    void* context;
+    GBCartridge* app;
 };
 };
 
 
-typedef struct
-{
-    char *event_type;
+typedef struct {
+    char* event_type;
     int progress;
     int progress;
     int total_ram;
     int total_ram;
     int transfered;
     int transfered;
@@ -33,7 +31,7 @@ typedef struct
     int elapsed_time;
     int elapsed_time;
     int start_time;
     int start_time;
 
 
-    char *cart_dump_ram_filename_sequential;
+    char* cart_dump_ram_filename_sequential;
     bool rx_active;
     bool rx_active;
 
 
     char* event_title;
     char* event_title;
@@ -45,10 +43,9 @@ typedef struct
 
 
 } GameBoyCartridgeRAMWriteModel;
 } GameBoyCartridgeRAMWriteModel;
 
 
-static bool select_ram_file(GBCartridge *app, File *file)
-{
+static bool select_ram_file(GBCartridge* app, File* file) {
     bool result = false;
     bool result = false;
-    FuriString *file_path = furi_string_alloc();
+    FuriString* file_path = furi_string_alloc();
     furi_string_set(file_path, MALVEKE_APP_FOLDER_RAMS);
     furi_string_set(file_path, MALVEKE_APP_FOLDER_RAMS);
     DialogsFileBrowserOptions browser_options;
     DialogsFileBrowserOptions browser_options;
     dialog_file_browser_set_basic_options(&browser_options, "sav", NULL);
     dialog_file_browser_set_basic_options(&browser_options, "sav", NULL);
@@ -59,16 +56,13 @@ static bool select_ram_file(GBCartridge *app, File *file)
     bool res = dialog_file_browser_show(app->dialogs, file_path, file_path, &browser_options);
     bool res = dialog_file_browser_show(app->dialogs, file_path, file_path, &browser_options);
     // UNUSED(res);
     // UNUSED(res);
     // FURI_LOG_I(TAG, "File selected: %s", furi_string_get_cstr(file_path));
     // FURI_LOG_I(TAG, "File selected: %s", furi_string_get_cstr(file_path));
-    if (res)
-    {   
+    if(res) {
         if(!storage_file_open(file, furi_string_get_cstr(file_path), FSAM_READ, FSOM_OPEN_EXISTING))
         if(!storage_file_open(file, furi_string_get_cstr(file_path), FSAM_READ, FSOM_OPEN_EXISTING))
         // if (!file_stream_open(stream, furi_string_get_cstr(file_path), FSAM_READ, FSOM_OPEN_EXISTING))
         // if (!file_stream_open(stream, furi_string_get_cstr(file_path), FSAM_READ, FSOM_OPEN_EXISTING))
         {
         {
             // FURI_LOG_D(TAG, "Cannot open file \"%s\"", furi_string_get_cstr(file_path));
             // FURI_LOG_D(TAG, "Cannot open file \"%s\"", furi_string_get_cstr(file_path));
             // file_stream_close(stream);
             // file_stream_close(stream);
-        }
-        else
-        {
+        } else {
             // FURI_LOG_D(TAG, "Open file \"%s\"", furi_string_get_cstr(file_path));
             // FURI_LOG_D(TAG, "Open file \"%s\"", furi_string_get_cstr(file_path));
             result = true;
             result = true;
         }
         }
@@ -82,13 +76,11 @@ static int32_t cartridge_writting_worker_thread(void* thread_context) {
     UNUSED(app);
     UNUSED(app);
     File* file = storage_file_alloc(app->storage);
     File* file = storage_file_alloc(app->storage);
 
 
-    if (select_ram_file(app, file))
-    {
+    if(select_ram_file(app, file)) {
         uint16_t fileSize = storage_file_size(file);
         uint16_t fileSize = storage_file_size(file);
-        
-        
-        FURI_LOG_I(TAG, "fileSize: %d " , fileSize);
-       with_view_model(
+
+        FURI_LOG_I(TAG, "fileSize: %d ", fileSize);
+        with_view_model(
             app->gb_cartridge_scene_5->view,
             app->gb_cartridge_scene_5->view,
             GameBoyCartridgeRAMWriteModel * model,
             GameBoyCartridgeRAMWriteModel * model,
             {
             {
@@ -97,24 +89,27 @@ static int32_t cartridge_writting_worker_thread(void* thread_context) {
             },
             },
             true);
             true);
 
 
-
         char gbcartridge_start_command[80]; // A reasonably sized buffer.
         char gbcartridge_start_command[80]; // A reasonably sized buffer.
-        snprintf(gbcartridge_start_command, sizeof(gbcartridge_start_command), "gbcartridge -w -a %d\n", fileSize);
-   
-        uart_tx(app->uart, (uint8_t *)gbcartridge_start_command, strlen(gbcartridge_start_command));
-        
+        snprintf(
+            gbcartridge_start_command,
+            sizeof(gbcartridge_start_command),
+            "gbcartridge -w -a %d\n",
+            fileSize);
+
+        uart_tx(app->uart, (uint8_t*)gbcartridge_start_command, strlen(gbcartridge_start_command));
+
         furi_delay_ms(500); // wait
         furi_delay_ms(500); // wait
         uint8_t* the_savefile = NULL;
         uint8_t* the_savefile = NULL;
         size_t savefile_size = 0;
         size_t savefile_size = 0;
         with_view_model(
         with_view_model(
-                app->gb_cartridge_scene_5->view,
-                GameBoyCartridgeRAMWriteModel * model,
-                {
-                    model->event_title = "Transferring...";
-                    model->transfered = 0;
-                    model->start_time = furi_hal_rtc_get_timestamp(); // Registra el tiempo de inicio
-                },
-                true);
+            app->gb_cartridge_scene_5->view,
+            GameBoyCartridgeRAMWriteModel * model,
+            {
+                model->event_title = "Transferring...";
+                model->transfered = 0;
+                model->start_time = furi_hal_rtc_get_timestamp(); // Registra el tiempo de inicio
+            },
+            true);
         the_savefile = malloc(fileSize); // to be freed by caller
         the_savefile = malloc(fileSize); // to be freed by caller
         uint8_t* buf_ptr = the_savefile;
         uint8_t* buf_ptr = the_savefile;
         size_t read = 0;
         size_t read = 0;
@@ -131,9 +126,7 @@ static int32_t cartridge_writting_worker_thread(void* thread_context) {
         with_view_model(
         with_view_model(
             app->gb_cartridge_scene_5->view,
             app->gb_cartridge_scene_5->view,
             GameBoyCartridgeRAMWriteModel * model,
             GameBoyCartridgeRAMWriteModel * model,
-            {
-                model->event_title = "Writing Cartridge...";
-            },
+            { model->event_title = "Writing Cartridge..."; },
             true);
             true);
         free(the_savefile);
         free(the_savefile);
 
 
@@ -141,40 +134,34 @@ static int32_t cartridge_writting_worker_thread(void* thread_context) {
             storage_file_close(file);
             storage_file_close(file);
         }
         }
     }
     }
-    
+
     return 0;
     return 0;
 }
 }
 void gb_cartridge_scene_5_set_callback(
 void gb_cartridge_scene_5_set_callback(
-    GBCartridgeScene5 *instance,
+    GBCartridgeScene5* instance,
     GBCartridgeScene5Callback callback,
     GBCartridgeScene5Callback callback,
-    void *context)
-{
+    void* context) {
     furi_assert(instance);
     furi_assert(instance);
     furi_assert(callback);
     furi_assert(callback);
     instance->callback = callback;
     instance->callback = callback;
     instance->context = context;
     instance->context = context;
 }
 }
-static void drawProgressBar(Canvas *canvas, int progress)
-{
-    for (int x = 0; x < 64 - 14 - UI_PADDING - UI_PADDING - UI_PADDING - UI_PADDING; x += 5)
-    {
-        for (int row = 0; row < 20; row += 5)
-        {
-            if (progress > 0)
-            {
-                canvas_draw_box(canvas, 14 /*ARROW*/ + UI_PADDING + 2 + x + 4, /*45*/ 26 + row, 4, 4);
+static void drawProgressBar(Canvas* canvas, int progress) {
+    for(int x = 0; x < 64 - 14 - UI_PADDING - UI_PADDING - UI_PADDING - UI_PADDING; x += 5) {
+        for(int row = 0; row < 20; row += 5) {
+            if(progress > 0) {
+                canvas_draw_box(
+                    canvas, 14 /*ARROW*/ + UI_PADDING + 2 + x + 4, /*45*/ 26 + row, 4, 4);
                 progress--;
                 progress--;
-            }
-            else
-            {
-                canvas_draw_frame(canvas, 14 /*ARROW*/ + UI_PADDING + 2 + x + 4, /*45*/ 26 + row, 4, 4);
+            } else {
+                canvas_draw_frame(
+                    canvas, 14 /*ARROW*/ + UI_PADDING + 2 + x + 4, /*45*/ 26 + row, 4, 4);
             }
             }
         }
         }
     }
     }
 }
 }
 
 
-void gb_cartridge_scene_5_draw(Canvas *canvas, GameBoyCartridgeRAMWriteModel *model)
-{
+void gb_cartridge_scene_5_draw(Canvas* canvas, GameBoyCartridgeRAMWriteModel* model) {
     // Clear the screen.
     // Clear the screen.
     canvas_set_color(canvas, ColorBlack);
     canvas_set_color(canvas, ColorBlack);
 
 
@@ -187,57 +174,64 @@ void gb_cartridge_scene_5_draw(Canvas *canvas, GameBoyCartridgeRAMWriteModel *mo
     canvas_set_font(canvas, FontPrimary);
     canvas_set_font(canvas, FontPrimary);
     char progressText[42];
     char progressText[42];
     int progress = 0;
     int progress = 0;
-    if (model->total_ram > 0 && model->transfered > 0)
-    {
+    if(model->total_ram > 0 && model->transfered > 0) {
         progress = model->transfered * 100 / model->total_ram;
         progress = model->transfered * 100 / model->total_ram;
     }
     }
     snprintf(progressText, sizeof(progressText), "%d%% Write RAM...", progress);
     snprintf(progressText, sizeof(progressText), "%d%% Write RAM...", progress);
     canvas_draw_str_aligned(canvas, 128 / 2, 0, AlignCenter, AlignTop, progressText);
     canvas_draw_str_aligned(canvas, 128 / 2, 0, AlignCenter, AlignTop, progressText);
     canvas_set_font(canvas, FontSecondary);
     canvas_set_font(canvas, FontSecondary);
 
 
-    canvas_draw_str_aligned(canvas, 128/2, 12, AlignCenter, AlignTop, model->event_title);
+    canvas_draw_str_aligned(canvas, 128 / 2, 12, AlignCenter, AlignTop, model->event_title);
 
 
     char total_ram_str[20];
     char total_ram_str[20];
-    snprintf(total_ram_str, sizeof(total_ram_str), "of %.2lf MiB", (double)(model->total_ram / 1024.0 / 1024.0));
+    snprintf(
+        total_ram_str,
+        sizeof(total_ram_str),
+        "of %.2lf MiB",
+        (double)(model->total_ram / 1024.0 / 1024.0));
 
 
     char transfered_ram_str[20];
     char transfered_ram_str[20];
-    snprintf(transfered_ram_str, sizeof(transfered_ram_str), "%.2lf MiB", (double)(model->transfered / 1024.0 / 1024.0));
+    snprintf(
+        transfered_ram_str,
+        sizeof(transfered_ram_str),
+        "%.2lf MiB",
+        (double)(model->transfered / 1024.0 / 1024.0));
 
 
     // Calcula la Tasa de Transferencia en KiB/s
     // Calcula la Tasa de Transferencia en KiB/s
     char transfer_rate_str[20];
     char transfer_rate_str[20];
-    if (model->transfered > 0 && model->elapsed_time > 0)
-    {
-        double transfer_rate_kibps = (double)model->transfered / ((double)model->elapsed_time) / (double)1024.0;
+    if(model->transfered > 0 && model->elapsed_time > 0) {
+        double transfer_rate_kibps =
+            (double)model->transfered / ((double)model->elapsed_time) / (double)1024.0;
         snprintf(transfer_rate_str, sizeof(transfer_rate_str), "%.2lf KiB/s", transfer_rate_kibps);
         snprintf(transfer_rate_str, sizeof(transfer_rate_str), "%.2lf KiB/s", transfer_rate_kibps);
-    }
-    else
-    {
+    } else {
         snprintf(transfer_rate_str, sizeof(transfer_rate_str), "0 KiB/s");
         snprintf(transfer_rate_str, sizeof(transfer_rate_str), "0 KiB/s");
     }
     }
 
 
-    canvas_draw_str_aligned(canvas, (128 / 2) + UI_PADDING, 22 + 2, AlignLeft, AlignTop, transfered_ram_str);
-    canvas_draw_str_aligned(canvas, (128 / 2) + UI_PADDING, 30 + 2, AlignLeft, AlignTop, total_ram_str);
-    canvas_draw_str_aligned(canvas, (128 / 2) + UI_PADDING, 38 + 2, AlignLeft, AlignTop, transfer_rate_str);
+    canvas_draw_str_aligned(
+        canvas, (128 / 2) + UI_PADDING, 22 + 2, AlignLeft, AlignTop, transfered_ram_str);
+    canvas_draw_str_aligned(
+        canvas, (128 / 2) + UI_PADDING, 30 + 2, AlignLeft, AlignTop, total_ram_str);
+    canvas_draw_str_aligned(
+        canvas, (128 / 2) + UI_PADDING, 38 + 2, AlignLeft, AlignTop, transfer_rate_str);
 
 
-    if (model->rx_active)
-    {
+    if(model->rx_active) {
         canvas_draw_icon_ex(canvas, UI_PADDING, 28, &I_ArrowUpFilled_14x15, IconRotation180);
         canvas_draw_icon_ex(canvas, UI_PADDING, 28, &I_ArrowUpFilled_14x15, IconRotation180);
-    }
-    else
-    {
+    } else {
         canvas_draw_icon_ex(canvas, UI_PADDING, 28, &I_ArrowUpEmpty_14x15, IconRotation180);
         canvas_draw_icon_ex(canvas, UI_PADDING, 28, &I_ArrowUpEmpty_14x15, IconRotation180);
     }
     }
 
 
     char totalText[42];
     char totalText[42];
     snprintf(totalText, sizeof(totalText), "%d", model->total_ram);
     snprintf(totalText, sizeof(totalText), "%d", model->total_ram);
 
 
-    drawProgressBar(canvas, (progress * UI_PROGRESS_ROWS * UI_PROGRESS_COLS) / 100); // Pinta las primeras 10 cajas de negro
-    
+    drawProgressBar(
+        canvas,
+        (progress * UI_PROGRESS_ROWS * UI_PROGRESS_COLS) /
+            100); // Pinta las primeras 10 cajas de negro
+
     elements_button_center(canvas, "Write");
     elements_button_center(canvas, "Write");
 }
 }
 
 
-static void gb_cartridge_scene_5_model_init(GameBoyCartridgeRAMWriteModel *const model)
-{
+static void gb_cartridge_scene_5_model_init(GameBoyCartridgeRAMWriteModel* const model) {
     model->progress = 0;
     model->progress = 0;
     model->total_ram = 0;
     model->total_ram = 0;
     model->transfered = 0;
     model->transfered = 0;
@@ -252,8 +246,6 @@ void gameboy_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
     UNUSED(buf);
     UNUSED(buf);
     GBCartridge* instance = context;
     GBCartridge* instance = context;
 
 
-           
-
     with_view_model(
     with_view_model(
         instance->gb_cartridge_scene_5->view,
         instance->gb_cartridge_scene_5->view,
         GameBoyCartridgeRAMWriteModel * model,
         GameBoyCartridgeRAMWriteModel * model,
@@ -262,12 +254,11 @@ void gameboy_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
 
 
             uint64_t current_time = furi_hal_rtc_get_timestamp();
             uint64_t current_time = furi_hal_rtc_get_timestamp();
             model->elapsed_time = current_time - model->start_time;
             model->elapsed_time = current_time - model->start_time;
-            if (current_time - last_toggle_time >= 0.2) {
+            if(current_time - last_toggle_time >= 0.2) {
                 model->rx_active = !model->rx_active;
                 model->rx_active = !model->rx_active;
                 last_toggle_time = current_time;
                 last_toggle_time = current_time;
             }
             }
 
 
-
             cJSON* json = cJSON_Parse((char*)buf);
             cJSON* json = cJSON_Parse((char*)buf);
             if(json == NULL) {
             if(json == NULL) {
             } else {
             } else {
@@ -293,16 +284,15 @@ void gameboy_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
                 } else {
                 } else {
                     model->value = 0;
                     model->value = 0;
                 }
                 }
-                
             }
             }
-            if (strcmp(model->event_type, "progress") == 0) {
+            if(strcmp(model->event_type, "progress") == 0) {
                 //  progress
                 //  progress
                 cJSON* progress = cJSON_GetObjectItemCaseSensitive(json, "progress");
                 cJSON* progress = cJSON_GetObjectItemCaseSensitive(json, "progress");
                 if(cJSON_IsNumber(progress)) {
                 if(cJSON_IsNumber(progress)) {
                     model->transfered += progress->valueint;
                     model->transfered += progress->valueint;
                 }
                 }
             }
             }
-            if (strcmp(model->event_type, "success") == 0) {
+            if(strcmp(model->event_type, "success") == 0) {
                 notification_success(instance->notification);
                 notification_success(instance->notification);
                 model->transfered = model->total_ram;
                 model->transfered = model->total_ram;
                 model->event_title = "Done!";
                 model->event_title = "Done!";
@@ -310,22 +300,19 @@ void gameboy_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
         },
         },
         true);
         true);
 }
 }
-bool gb_cartridge_scene_5_input(InputEvent *event, void *context)
-{
+bool gb_cartridge_scene_5_input(InputEvent* event, void* context) {
     furi_assert(context);
     furi_assert(context);
-    GBCartridgeScene5 *instance = context;
+    GBCartridgeScene5* instance = context;
 
 
-    if (event->type == InputTypeRelease)
-    {
-        switch (event->key)
-        {
+    if(event->type == InputTypeRelease) {
+        switch(event->key) {
         case InputKeyBack:
         case InputKeyBack:
             with_view_model(
             with_view_model(
                 instance->view,
                 instance->view,
                 GameBoyCartridgeRAMWriteModel * model,
                 GameBoyCartridgeRAMWriteModel * model,
                 {
                 {
                     UNUSED(model);
                     UNUSED(model);
-                    GBCartridge *app = (GBCartridge *)instance->context;
+                    GBCartridge* app = (GBCartridge*)instance->context;
                     // Unregister rx callback
                     // Unregister rx callback
                     uart_set_handle_rx_data_cb(app->uart, NULL);
                     uart_set_handle_rx_data_cb(app->uart, NULL);
                     uart_set_handle_rx_data_cb(app->lp_uart, NULL);
                     uart_set_handle_rx_data_cb(app->lp_uart, NULL);
@@ -339,13 +326,11 @@ bool gb_cartridge_scene_5_input(InputEvent *event, void *context)
         case InputKeyLeft:
         case InputKeyLeft:
         case InputKeyRight:
         case InputKeyRight:
             break;
             break;
-        case InputKeyOk:
-        {
-            GBCartridge *app = ((GBCartridge *)instance->context);
+        case InputKeyOk: {
+            GBCartridge* app = ((GBCartridge*)instance->context);
             uart_set_handle_rx_data_cb(app->uart, gameboy_handle_rx_data_cb);
             uart_set_handle_rx_data_cb(app->uart, gameboy_handle_rx_data_cb);
             cartridge_writting_worker_thread(app);
             cartridge_writting_worker_thread(app);
-        }
-            break;
+        } break;
         case InputKeyMAX:
         case InputKeyMAX:
             break;
             break;
         }
         }
@@ -354,19 +339,16 @@ bool gb_cartridge_scene_5_input(InputEvent *event, void *context)
     return true;
     return true;
 }
 }
 
 
-void gb_cartridge_scene_5_exit(void *context)
-{
+void gb_cartridge_scene_5_exit(void* context) {
     furi_assert(context);
     furi_assert(context);
-    GBCartridge *app = context;
+    GBCartridge* app = context;
     gb_cartridge_stop_all_sound(app);
     gb_cartridge_stop_all_sound(app);
 }
 }
 
 
-void gb_cartridge_scene_5_enter(void *context)
-{
-    
+void gb_cartridge_scene_5_enter(void* context) {
     furi_assert(context);
     furi_assert(context);
-    GBCartridgeScene5 *instance = context;
-    GBCartridge *app = (GBCartridge *)instance->context;
+    GBCartridgeScene5* instance = context;
+    GBCartridge* app = (GBCartridge*)instance->context;
 
 
     UNUSED(app);
     UNUSED(app);
     with_view_model(
     with_view_model(
@@ -379,11 +361,11 @@ void gb_cartridge_scene_5_enter(void *context)
         false);
         false);
 }
 }
 
 
-GBCartridgeScene5 *gb_cartridge_scene_5_alloc()
-{
-    GBCartridgeScene5 *instance = malloc(sizeof(GBCartridgeScene5));
+GBCartridgeScene5* gb_cartridge_scene_5_alloc() {
+    GBCartridgeScene5* instance = malloc(sizeof(GBCartridgeScene5));
     instance->view = view_alloc();
     instance->view = view_alloc();
-    view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(GameBoyCartridgeRAMWriteModel));
+    view_allocate_model(
+        instance->view, ViewModelTypeLocking, sizeof(GameBoyCartridgeRAMWriteModel));
 
 
     view_set_context(instance->view, instance);
     view_set_context(instance->view, instance);
     view_set_draw_callback(instance->view, (ViewDrawCallback)gb_cartridge_scene_5_draw);
     view_set_draw_callback(instance->view, (ViewDrawCallback)gb_cartridge_scene_5_draw);
@@ -394,16 +376,13 @@ GBCartridgeScene5 *gb_cartridge_scene_5_alloc()
     with_view_model(
     with_view_model(
         instance->view,
         instance->view,
         GameBoyCartridgeRAMWriteModel * model,
         GameBoyCartridgeRAMWriteModel * model,
-        {
-            gb_cartridge_scene_5_model_init(model);
-        },
+        { gb_cartridge_scene_5_model_init(model); },
         true);
         true);
 
 
     return instance;
     return instance;
 }
 }
 
 
-void gb_cartridge_scene_5_free(GBCartridgeScene5 *instance)
-{
+void gb_cartridge_scene_5_free(GBCartridgeScene5* instance) {
     GBCartridge* app = instance->context;
     GBCartridge* app = instance->context;
     UNUSED(app);
     UNUSED(app);
     furi_assert(instance);
     furi_assert(instance);
@@ -411,8 +390,7 @@ void gb_cartridge_scene_5_free(GBCartridgeScene5 *instance)
     free(instance);
     free(instance);
 }
 }
 
 
-View *gb_cartridge_scene_5_get_view(GBCartridgeScene5 *instance)
-{
+View* gb_cartridge_scene_5_get_view(GBCartridgeScene5* instance) {
     furi_assert(instance);
     furi_assert(instance);
 
 
     return instance->view;
     return instance->view;