Esteban Fuentealba 2 лет назад
Родитель
Сommit
f9bfd629d2

+ 26 - 5
gb_cartridge_app.c

@@ -25,6 +25,23 @@ GBCartridge* gb_cartridge_app_app_alloc() {
     app->storage = furi_record_open(RECORD_STORAGE);
     app->notification = furi_record_open(RECORD_NOTIFICATION);
     
+    //  Create MALVEKE dir
+    if(storage_common_stat(app->storage, MALVEKE_APP_FOLDER, NULL) == FSE_NOT_EXIST) {
+        storage_simply_mkdir(app->storage, MALVEKE_APP_FOLDER);
+    }
+    //  Create MALVEKE RAM dir
+    if(storage_common_stat(app->storage, MALVEKE_APP_FOLDER_RAMS, NULL) == FSE_NOT_EXIST) {
+        storage_simply_mkdir(app->storage, MALVEKE_APP_FOLDER_RAMS);
+    }
+    //  Create MALVEKE ROM dir
+    if(storage_common_stat(app->storage, MALVEKE_APP_FOLDER_ROMS, NULL) == FSE_NOT_EXIST) {
+        storage_simply_mkdir(app->storage, MALVEKE_APP_FOLDER_ROMS);
+    }
+    //  Create MALVEKE Photos dir
+    if(storage_common_stat(app->storage, MALVEKE_APP_FOLDER_PHOTOS, NULL) == FSE_NOT_EXIST) {
+        storage_simply_mkdir(app->storage, MALVEKE_APP_FOLDER_PHOTOS);
+    }
+    
     //Turn backlight on, believe me this makes testing your app easier
     notification_message(app->notification, &sequence_display_backlight_on);
 
@@ -47,6 +64,14 @@ GBCartridge* gb_cartridge_app_app_alloc() {
     app->led = 1;
     app->save_settings = 1;
 
+    app->cart_title = " - ";
+    app->cart_dump_rom_filename  = "malveke_rom";
+    app->cart_dump_rom_extension = "gb";
+
+    app->cart_dump_ram_filename = "malveke_ram";
+    app->cart_dump_ram_extension = "sav";
+
+
     // Used for File Browser
     app->dialogs = furi_record_open(RECORD_DIALOGS);
     app->file_path = furi_string_alloc();
@@ -56,11 +81,7 @@ GBCartridge* gb_cartridge_app_app_alloc() {
 
     app->uart = usart_init(app);
     app->lp_uart = lp_uart_init(app);
-    
-    FURI_LOG_I(TAG, "Hola1!");
-    FURI_LOG_D(TAG, "Hola2!");
-    FURI_LOG_E(TAG, "Hola3!");
-    FURI_LOG_W(TAG, "Hola4!");
+
     
     view_dispatcher_add_view(app->view_dispatcher, GBCartridgeViewIdMenu, variable_item_list_get_view(app->submenu));
     app->gb_cartridge_startscreen = gb_cartridge_startscreen_alloc();

+ 0 - 3
gb_cartridge_app.h

@@ -27,9 +27,6 @@
 
 #define TAG "GBCartridge"
 
-#define SUBGHZ_APP_EXTENSION ".sub"
-#define SUBGHZ_APP_FOLDER ANY_PATH("subghz")
-
 #define MALVEKE_APP_FOLDER_USER "apps_data/malveke"
 #define MALVEKE_APP_FOLDER EXT_PATH(MALVEKE_APP_FOLDER_USER)
 #define MALVEKE_APP_FOLDER_ROMS MALVEKE_APP_FOLDER "/roms"

+ 30 - 29
scenes/gb_cartridge_scene_menu.c

@@ -32,27 +32,27 @@ void gb_cartridge_scene_menu_submenu_callback(void* context, uint32_t index) {
     GBCartridge* app = context;
     view_dispatcher_send_custom_event(app->view_dispatcher, index);
 }
-static char* rom_option_uppercase(uint32_t index) {
-    const char *gameboy_rom_option = gameboy_rom_option_text[index];
-    char *gameboy_rom_option_uppercase = (char*)malloc(strlen(gameboy_rom_option) + 1); // +1 para el carácter nulo
+// static char* rom_option_uppercase(uint32_t index) {
+//     const char *gameboy_rom_option = gameboy_rom_option_text[index];
+//     char *gameboy_rom_option_uppercase = (char*)malloc(strlen(gameboy_rom_option) + 1); // +1 para el carácter nulo
 
-    if (gameboy_rom_option_uppercase) {
-        strcpy(gameboy_rom_option_uppercase, gameboy_rom_option);
-        toUpperCase(gameboy_rom_option_uppercase);
-    } else {
-        // Manejo de error en caso de falta de memoria
-        return NULL;
-    }
+//     if (gameboy_rom_option_uppercase) {
+//         strcpy(gameboy_rom_option_uppercase, gameboy_rom_option);
+//         toUpperCase(gameboy_rom_option_uppercase);
+//     } else {
+//         // Manejo de error en caso de falta de memoria
+//         return NULL;
+//     }
 
-    return gameboy_rom_option_uppercase;
-}
-static void gameboy_cartridge_set_rom_option(VariableItem* item) {
-    GBCartridge* app = variable_item_get_context(item);
-    uint8_t index = variable_item_get_current_value_index(item);
-    variable_item_set_current_value_text(item, rom_option_uppercase(index));
-    app->gameboy_rom_option_selected_index = gameboy_rom_option_value[index];
-    app->gameboy_rom_option_selected_text = (char*)gameboy_rom_option_text[index];
-}
+//     return gameboy_rom_option_uppercase;
+// }
+// static void gameboy_cartridge_set_rom_option(VariableItem* item) {
+//     GBCartridge* app = variable_item_get_context(item);
+//     uint8_t index = variable_item_get_current_value_index(item);
+//     variable_item_set_current_value_text(item, rom_option_uppercase(index));
+//     app->gameboy_rom_option_selected_index = gameboy_rom_option_value[index];
+//     app->gameboy_rom_option_selected_text = (char*)gameboy_rom_option_text[index];
+// }
 
 void gb_cartridge_scene_menu_on_enter(void* context) {
     GBCartridge* app = context;
@@ -61,19 +61,20 @@ void gb_cartridge_scene_menu_on_enter(void* context) {
     variable_item_list_add(app->submenu, "Dump ROM Cartridge", 1, NULL, NULL);
     variable_item_list_add(app->submenu, "Dump RAM Cartridge", 1, NULL, NULL);
 
-    VariableItem* item = variable_item_list_add(
-        app->submenu,
-        "Write ROM",
-        2,
-        gameboy_cartridge_set_rom_option,
-        app);
-    app->gameboy_rom_option_selected_index = value_index_uint32(app->gameboy_rom_option_selected_index, gameboy_rom_option_value, 2);
-    variable_item_set_current_value_index(item, app->gameboy_rom_option_selected_index);
-    variable_item_set_current_value_text(item, rom_option_uppercase(app->gameboy_rom_option_selected_index));
+    //  TODO: Implements Write ROM
+    // VariableItem* item = variable_item_list_add(
+    //     app->submenu,
+    //     "Write ROM",
+    //     2,
+    //     gameboy_cartridge_set_rom_option,
+    //     app);
+    // app->gameboy_rom_option_selected_index = value_index_uint32(app->gameboy_rom_option_selected_index, gameboy_rom_option_value, 2);
+    // variable_item_set_current_value_index(item, app->gameboy_rom_option_selected_index);
+    // variable_item_set_current_value_text(item, rom_option_uppercase(app->gameboy_rom_option_selected_index));
     
 
     variable_item_list_add(app->submenu, "Write RAM", 1, NULL, NULL);
-    variable_item_list_add(app->submenu, "Settings", 1, NULL, NULL);
+    // variable_item_list_add(app->submenu, "Settings", 1, NULL, NULL);
 
     variable_item_list_set_enter_callback(app->submenu, gb_cartridge_scene_menu_submenu_callback, app);
 

+ 6 - 1
views/gb_cartridge_scene_2.c

@@ -220,6 +220,11 @@ bool gb_cartridge_scene_2_input(InputEvent* event, void* context) {
                         UNUSED(model);
                         GBCartridge* app = (GBCartridge*)instance->context;
                         UNUSED(app);
+
+                        model->total_rom = 0;
+                        model->transfered = 0;
+                        model->elapsed_time = 0;
+
                         // // Unregister rx callback
                         uart_set_handle_rx_data_cb(app->uart, NULL);
                         uart_set_handle_rx_data_cb(app->lp_uart, NULL);
@@ -295,7 +300,7 @@ void gb_cartridge_scene_2_enter(void* context) {
             model->total_rom =  app->rom_banks * 16 * 1024;
             // char *filename = strrchr(model->cart_dump_rom_filename_sequential, '/');
             // filename++;
-            char *filename = sequential_file_resolve_path(app->storage, MALVEKE_APP_FOLDER, app->cart_dump_rom_filename, model->cart_dump_rom_extension);
+            char *filename = sequential_file_resolve_path(app->storage, MALVEKE_APP_FOLDER_ROMS, app->cart_dump_rom_filename, model->cart_dump_rom_extension);
             model->cart_dump_rom_filename_sequential =  filename;
              // 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

+ 5 - 2
views/gb_cartridge_scene_3.c

@@ -229,6 +229,9 @@ bool gb_cartridge_scene_3_input(InputEvent* event, void* context) {
                         UNUSED(model);
                         GBCartridge* app = (GBCartridge*)instance->context;
                         UNUSED(app);
+                        model->total_ram = 0;
+                        model->transfered = 0;
+                        model->elapsed_time = 0;
                         // Unregister rx callback
                         uart_set_handle_rx_data_cb(app->uart, NULL);
                         uart_set_handle_rx_data_cb(app->lp_uart, NULL);
@@ -300,9 +303,9 @@ void gb_cartridge_scene_3_enter(void* context) {
             // gb_cartridge_scene_3_model_init(model);
             // model->cart_dump_ram_filename  = app->cart_dump_ram_filename;
             // model->cart_dump_ram_extension = app->cart_dump_ram_extension;
-            // char *filename = strrchr(sequential_file_resolve_path(app->storage, MALVEKE_APP_FOLDER, app->cart_dump_ram_filename, app->cart_dump_ram_extension), '/');
+            // char *filename = strrchr(sequential_file_resolve_path(app->storage, MALVEKE_APP_FOLDER_RAMS, app->cart_dump_ram_filename, app->cart_dump_ram_extension), '/');
             // filename++;
-            char *filename = sequential_file_resolve_path(app->storage, MALVEKE_APP_FOLDER, app->cart_dump_ram_filename, app->cart_dump_ram_extension);
+            char *filename = sequential_file_resolve_path(app->storage, MALVEKE_APP_FOLDER_RAMS, app->cart_dump_ram_filename, app->cart_dump_ram_extension);
             model->cart_dump_ram_filename_sequential =  filename;
             app->is_writing_ram = true;
              // Register callbacks to receive data

+ 2 - 2
views/gb_cartridge_scene_5.c

@@ -52,10 +52,10 @@ static bool select_ram_file(GBCartridge *app, File *file)
 {
     bool result = false;
     FuriString *file_path = furi_string_alloc();
-    furi_string_set(file_path, MALVEKE_APP_FOLDER);
+    furi_string_set(file_path, MALVEKE_APP_FOLDER_RAMS);
     DialogsFileBrowserOptions browser_options;
     dialog_file_browser_set_basic_options(&browser_options, "sav", NULL);
-    browser_options.base_path = MALVEKE_APP_FOLDER;
+    browser_options.base_path = MALVEKE_APP_FOLDER_RAMS;
     browser_options.skip_assets = true;
 
     // Input events and views are managed by file_browser