Ver Fonte

Apply ufbt format

Esteban Fuentealba há 1 ano atrás
pai
commit
57af5a6821

+ 191 - 0
.clang-format

@@ -0,0 +1,191 @@
+---
+Language:        Cpp
+AccessModifierOffset: -4
+AlignAfterOpenBracket: AlwaysBreak
+AlignArrayOfStructures: None
+AlignConsecutiveMacros: None
+AlignConsecutiveAssignments: None
+AlignConsecutiveBitFields: None
+AlignConsecutiveDeclarations: None
+AlignEscapedNewlines: Left
+AlignOperands:   Align
+AlignTrailingComments: false
+AllowAllArgumentsOnNextLine: true
+AllowAllParametersOfDeclarationOnNextLine: false
+AllowShortEnumsOnASingleLine: true
+AllowShortBlocksOnASingleLine: Never
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: None
+AllowShortLambdasOnASingleLine: All
+AllowShortIfStatementsOnASingleLine: WithoutElse
+AllowShortLoopsOnASingleLine: true
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: Yes
+AttributeMacros:
+  - __capability
+BinPackArguments: false
+BinPackParameters: false
+BraceWrapping:
+  AfterCaseLabel:  false
+  AfterClass:      false
+  AfterControlStatement: Never
+  AfterEnum:       false
+  AfterFunction:   false
+  AfterNamespace:  false
+  AfterObjCDeclaration: false
+  AfterStruct:     false
+  AfterUnion:      false
+  AfterExternBlock: false
+  BeforeCatch:     false
+  BeforeElse:      false
+  BeforeLambdaBody: false
+  BeforeWhile:     false
+  IndentBraces:    false
+  SplitEmptyFunction: true
+  SplitEmptyRecord: true
+  SplitEmptyNamespace: true
+BreakBeforeBinaryOperators: None
+BreakBeforeConceptDeclarations: true
+BreakBeforeBraces: Attach
+BreakBeforeInheritanceComma: false
+BreakInheritanceList: BeforeColon
+BreakBeforeTernaryOperators: false
+BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeComma
+BreakAfterJavaFieldAnnotations: false
+BreakStringLiterals: false
+ColumnLimit:     99
+CommentPragmas:  '^ IWYU pragma:'
+QualifierAlignment: Leave
+CompactNamespaces: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
+DeriveLineEnding: true
+DerivePointerAlignment: false
+DisableFormat:   false
+EmptyLineAfterAccessModifier: Never
+EmptyLineBeforeAccessModifier: LogicalBlock
+ExperimentalAutoDetectBinPacking: false
+PackConstructorInitializers: BinPack
+BasedOnStyle:    ''
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+AllowAllConstructorInitializersOnNextLine: true
+FixNamespaceComments: false
+ForEachMacros:
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IfMacros:
+  - KJ_IF_MAYBE
+IncludeBlocks:   Preserve
+IncludeCategories:
+  - Regex:           '.*'
+    Priority:        1
+    SortPriority:    0
+    CaseSensitive:   false
+  - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
+    Priority:        3
+    SortPriority:    0
+    CaseSensitive:   false
+  - Regex:           '.*'
+    Priority:        1
+    SortPriority:    0
+    CaseSensitive:   false
+IncludeIsMainRegex: '(Test)?$'
+IncludeIsMainSourceRegex: ''
+IndentAccessModifiers: false
+IndentCaseLabels: false
+IndentCaseBlocks: false
+IndentGotoLabels: true
+IndentPPDirectives: None
+IndentExternBlock: AfterExternBlock
+IndentRequires:  false
+IndentWidth:     4
+IndentWrappedFunctionNames: true
+InsertTrailingCommas: None
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
+KeepEmptyLinesAtTheStartOfBlocks: false
+LambdaBodyIndentation: Signature
+MacroBlockBegin: ''
+MacroBlockEnd:   ''
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCBinPackProtocolList: Auto
+ObjCBlockIndentWidth: 4
+ObjCBreakBeforeNestedBlockParam: true
+ObjCSpaceAfterProperty: true
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakAssignment: 10
+PenaltyBreakBeforeFirstCallParameter: 30
+PenaltyBreakComment: 10
+PenaltyBreakFirstLessLess: 0
+PenaltyBreakOpenParenthesis: 0
+PenaltyBreakString: 10
+PenaltyBreakTemplateDeclaration: 10
+PenaltyExcessCharacter: 100
+PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyIndentedWhitespace: 0
+PointerAlignment: Left
+PPIndentWidth:   -1
+ReferenceAlignment: Pointer
+ReflowComments:  false
+RemoveBracesLLVM: false
+SeparateDefinitionBlocks: Leave
+ShortNamespaceLines: 1
+SortIncludes:    Never
+SortJavaStaticImport: Before
+SortUsingDeclarations: false
+SpaceAfterCStyleCast: false
+SpaceAfterLogicalNot: false
+SpaceAfterTemplateKeyword: true
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeCaseColon: false
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
+SpaceBeforeParens: Never
+SpaceBeforeParensOptions:
+  AfterControlStatements: false
+  AfterForeachMacros: false
+  AfterFunctionDefinitionName: false
+  AfterFunctionDeclarationName: false
+  AfterIfMacros:   false
+  AfterOverloadedOperator: false
+  BeforeNonEmptyParentheses: false
+SpaceAroundPointerQualifiers: Default
+SpaceBeforeRangeBasedForLoopColon: true
+SpaceInEmptyBlock: false
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles:  Never
+SpacesInConditionalStatement: false
+SpacesInContainerLiterals: false
+SpacesInCStyleCastParentheses: false
+SpacesInLineCommentPrefix:
+  Minimum:         1
+  Maximum:         -1
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+SpaceBeforeSquareBrackets: false
+BitFieldColonSpacing: Both
+Standard:        c++03
+StatementAttributeLikeMacros:
+  - Q_EMIT
+StatementMacros:
+  - Q_UNUSED
+  - QT_REQUIRE_VERSION
+TabWidth:        4
+UseCRLF:         false
+UseTab:          Never
+WhitespaceSensitiveMacros:
+  - STRINGIZE
+  - PP_STRINGIZE
+  - BOOST_PP_STRINGIZE
+  - NS_SWIFT_NAME
+  - CF_SWIFT_NAME
+...
+

+ 29 - 23
gba_cartridge_app.c

@@ -24,7 +24,7 @@ GBACartridge* gba_cartridge_app_app_alloc() {
     app->gui = furi_record_open(RECORD_GUI);
     app->storage = furi_record_open(RECORD_STORAGE);
     app->notification = furi_record_open(RECORD_NOTIFICATION);
-    
+
     //Turn backlight on, believe me this makes testing your app easier
     notification_message(app->notification, &sequence_display_backlight_on);
 
@@ -34,29 +34,37 @@ GBACartridge* gba_cartridge_app_app_alloc() {
 
     app->scene_manager = scene_manager_alloc(&gba_cartridge_scene_handlers, app);
     view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
-    view_dispatcher_set_navigation_event_callback(app->view_dispatcher, gba_cartridge_app_navigation_event_callback);
-    view_dispatcher_set_tick_event_callback(app->view_dispatcher, gba_cartridge_app_tick_event_callback, 100);
-    view_dispatcher_set_custom_event_callback(app->view_dispatcher, gba_cartridge_app_custom_event_callback);
+    view_dispatcher_set_navigation_event_callback(
+        app->view_dispatcher, gba_cartridge_app_navigation_event_callback);
+    view_dispatcher_set_tick_event_callback(
+        app->view_dispatcher, gba_cartridge_app_tick_event_callback, 100);
+    view_dispatcher_set_custom_event_callback(
+        app->view_dispatcher, gba_cartridge_app_custom_event_callback);
     app->submenu = variable_item_list_alloc();
 
-
     // Used for File Browser
     app->dialogs = furi_record_open(RECORD_DIALOGS);
     app->file_path = furi_string_alloc();
 
-
     app->uart = usart_init(app);
     app->lp_uart = lp_uart_init(app);
-    
-    view_dispatcher_add_view(app->view_dispatcher, GBACartridgeViewIdMenu, variable_item_list_get_view(app->submenu));
+
+    view_dispatcher_add_view(
+        app->view_dispatcher, GBACartridgeViewIdMenu, variable_item_list_get_view(app->submenu));
     app->gba_cartridge_startscreen = gba_cartridge_startscreen_alloc();
-    view_dispatcher_add_view(app->view_dispatcher, GBACartridgeViewIdStartscreen, gba_cartridge_startscreen_get_view(app->gba_cartridge_startscreen));
+    view_dispatcher_add_view(
+        app->view_dispatcher,
+        GBACartridgeViewIdStartscreen,
+        gba_cartridge_startscreen_get_view(app->gba_cartridge_startscreen));
     app->gba_cartridge_scene_1 = gba_cartridge_scene_1_alloc();
-    view_dispatcher_add_view(app->view_dispatcher, GBACartridgeViewIdScene1, gba_cartridge_scene_1_get_view(app->gba_cartridge_scene_1));
-    
+    view_dispatcher_add_view(
+        app->view_dispatcher,
+        GBACartridgeViewIdScene1,
+        gba_cartridge_scene_1_get_view(app->gba_cartridge_scene_1));
+
     //  Enable 5v
     // furi_hal_power_enable_otg();
-    // furi_delay_ms(1); 
+    // furi_delay_ms(1);
     return app;
 }
 
@@ -73,12 +81,12 @@ void gba_cartridge_app_app_free(GBACartridge* app) {
     view_dispatcher_free(app->view_dispatcher);
     furi_record_close(RECORD_GUI);
     furi_record_close(RECORD_STORAGE);
-    
+
     app->gui = NULL;
     app->notification = NULL;
     app->storage = NULL;
 
-    //  
+    //
     uart_free(app->uart);
     uart_free(app->lp_uart);
     // Close File Browser
@@ -96,24 +104,22 @@ int32_t gba_cartridge_app(void* p) {
     expansion_disable(expansion);
 
     GBACartridge* app = gba_cartridge_app_app_alloc();
-    
+
     view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
-    
-    scene_manager_next_scene(app->scene_manager, GBACartridgeSceneStartscreen); //Start with start screen
-   
+
+    scene_manager_next_scene(
+        app->scene_manager, GBACartridgeSceneStartscreen); //Start with start screen
+
     furi_hal_power_suppress_charge_enter();
 
     view_dispatcher_run(app->view_dispatcher);
-    
+
     furi_hal_power_suppress_charge_exit();
     gba_cartridge_app_app_free(app);
 
     // Return previous state of expansion
     expansion_enable(expansion);
     furi_record_close(RECORD_EXPANSION);
-    
+
     return 0;
 }
-
-
-

+ 1 - 8
gba_cartridge_app.h

@@ -33,7 +33,6 @@
 #define MALVEKE_APP_FOLDER_RAMS MALVEKE_APP_FOLDER "/rams"
 #define MALVEKE_APP_FOLDER_PHOTOS MALVEKE_APP_FOLDER "/photos"
 
-
 #define UI_PADDING 3
 #define UI_PROGRESS_COLS 8
 #define UI_PROGRESS_ROWS 4
@@ -51,7 +50,7 @@ typedef struct {
     VariableItemList* variable_item_list;
     GBACartridgeStartscreen* gba_cartridge_startscreen;
     GBACartridgeScene1* gba_cartridge_scene_1;
-    
+
     DialogsApp* dialogs; // File Browser
     FuriString* file_path; // File Browser
     ButtonMenu* button_menu; // Button Menu
@@ -69,7 +68,6 @@ typedef struct {
     File* cart_rom;
     File* cart_ram;
 
-
     FuriThread* thread;
     bool is_writing_rom;
     bool is_writing_ram;
@@ -79,13 +77,8 @@ typedef struct {
 
 } GBACartridge;
 
-
 typedef enum {
     GBACartridgeViewIdStartscreen,
     GBACartridgeViewIdMenu,
     GBACartridgeViewIdScene1,
 } GBACartridgeViewId;
-
-
-
-

+ 0 - 1
helpers/cJSON.c

@@ -57,7 +57,6 @@
 
 #include "cJSON.h"
 
-
 /* define our own boolean type */
 #ifdef true
 #undef true

+ 2 - 1
helpers/gba_cartridge_custom_event.h

@@ -36,7 +36,8 @@ static inline uint32_t gba_cartridge_custom_menu_event_pack(uint16_t type, int16
     GBACartridgeCustomEventMenu event = {.content = {.type = type, .value = value}};
     return event.packed_value;
 }
-static inline void gba_cartridge_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
+static inline void
+    gba_cartridge_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
     GBACartridgeCustomEventMenu event = {.packed_value = packed_value};
     if(type) *type = event.content.type;
     if(value) *value = event.content.value;

+ 2 - 5
malveke_notifications.c

@@ -1,6 +1,5 @@
 #include "malveke_notifications.h"
 
-
 const NotificationMessage message_delay_note_325 = {
     .type = NotificationMessageTypeDelay,
     .data.delay.length = 325,
@@ -14,7 +13,6 @@ const NotificationMessage message_delay_note_216 = {
     .data.delay.length = 216,
 };
 
-
 const NotificationMessage message_delay_note_1302 = {
     .type = NotificationMessageTypeDelay,
     .data.delay.length = 1302,
@@ -49,13 +47,12 @@ static const NotificationSequence sequence_get_item = {
 
     &message_vibro_on,
 
-
     &message_note_1047,
     &message_delay_note_325,
     &message_sound_off,
 
     &message_vibro_off,
-    
+
     &message_note_1047,
     &message_delay_note_108,
     &message_sound_off,
@@ -87,6 +84,6 @@ static const NotificationSequence sequence_get_item = {
     NULL,
 };
 
-void notification_success(NotificationApp *notification) {
+void notification_success(NotificationApp* notification) {
     notification_message(notification, &sequence_get_item);
 }

+ 1 - 1
malveke_notifications.h

@@ -16,5 +16,5 @@
 // extern const NotificationMessage message_note_1047;
 // extern const NotificationMessage message_note_1109;
 
-void notification_success(NotificationApp *notification);
+void notification_success(NotificationApp* notification);
 #endif // MALVEKE_NOTIFICATIONS_H

+ 3 - 2
scenes/gba_cartridge_scene_menu.c

@@ -20,7 +20,8 @@ void gba_cartridge_scene_menu_on_enter(void* context) {
     // variable_item_list_add(app->submenu, "Write ROM", 1, NULL, NULL);
     // variable_item_list_add(app->submenu, "Write RAM", 1, NULL, NULL);
 
-    variable_item_list_set_enter_callback(app->submenu, gba_cartridge_scene_menu_submenu_callback, app);
+    variable_item_list_set_enter_callback(
+        app->submenu, gba_cartridge_scene_menu_submenu_callback, app);
 
     view_dispatcher_switch_to_view(app->view_dispatcher, GBACartridgeViewIdMenu);
 }
@@ -39,7 +40,7 @@ bool gba_cartridge_scene_menu_on_event(void* context, SceneManagerEvent event) {
                 app->scene_manager, GBACartridgeSceneMenu, SubmenuIndexScene1);
             scene_manager_next_scene(app->scene_manager, GBACartridgeSceneScene_1);
             return true;
-        } 
+        }
     }
     return false;
 }

+ 21 - 20
scenes/gba_cartridge_scene_scene_1.c

@@ -11,37 +11,38 @@ void gba_cartridge_scene_1_callback(GBACartridgeCustomEvent event, void* context
 void gba_cartridge_scene_scene_1_on_enter(void* context) {
     furi_assert(context);
     GBACartridge* app = context;
-    gba_cartridge_scene_1_set_callback(app->gba_cartridge_scene_1, gba_cartridge_scene_1_callback, app);
+    gba_cartridge_scene_1_set_callback(
+        app->gba_cartridge_scene_1, gba_cartridge_scene_1_callback, app);
     view_dispatcher_switch_to_view(app->view_dispatcher, GBACartridgeViewIdScene1);
 }
 
 bool gba_cartridge_scene_scene_1_on_event(void* context, SceneManagerEvent event) {
     GBACartridge* app = context;
     bool consumed = false;
-    
+
     if(event.type == SceneManagerEventTypeCustom) {
         switch(event.event) {
-            case GBACartridgeCustomEventScene1Left:
-            case GBACartridgeCustomEventScene1Right:
-                break;
-            case GBACartridgeCustomEventScene1Up:
-            case GBACartridgeCustomEventScene1Down:
-                break;
-            case GBACartridgeCustomEventScene1Back:
-                notification_message(app->notification, &sequence_reset_red);
-                notification_message(app->notification, &sequence_reset_green);
-                notification_message(app->notification, &sequence_reset_blue);
+        case GBACartridgeCustomEventScene1Left:
+        case GBACartridgeCustomEventScene1Right:
+            break;
+        case GBACartridgeCustomEventScene1Up:
+        case GBACartridgeCustomEventScene1Down:
+            break;
+        case GBACartridgeCustomEventScene1Back:
+            notification_message(app->notification, &sequence_reset_red);
+            notification_message(app->notification, &sequence_reset_green);
+            notification_message(app->notification, &sequence_reset_blue);
 
-                if(!scene_manager_search_and_switch_to_previous_scene(
-                    app->scene_manager, GBACartridgeSceneMenu)) {
-                        scene_manager_stop(app->scene_manager);
-                        view_dispatcher_stop(app->view_dispatcher);
-                    }
-                consumed = true;
-                break;
+            if(!scene_manager_search_and_switch_to_previous_scene(
+                   app->scene_manager, GBACartridgeSceneMenu)) {
+                scene_manager_stop(app->scene_manager);
+                view_dispatcher_stop(app->view_dispatcher);
+            }
+            consumed = true;
+            break;
         }
     }
-    
+
     return consumed;
 }
 

+ 25 - 24
scenes/gba_cartridge_scene_startscreen.c

@@ -11,40 +11,41 @@ void gba_cartridge_scene_startscreen_callback(GBACartridgeCustomEvent event, voi
 void gba_cartridge_scene_startscreen_on_enter(void* context) {
     furi_assert(context);
     GBACartridge* app = context;
-    gba_cartridge_startscreen_set_callback(app->gba_cartridge_startscreen, gba_cartridge_scene_startscreen_callback, app);
+    gba_cartridge_startscreen_set_callback(
+        app->gba_cartridge_startscreen, gba_cartridge_scene_startscreen_callback, app);
     view_dispatcher_switch_to_view(app->view_dispatcher, GBACartridgeViewIdStartscreen);
 }
 
 bool gba_cartridge_scene_startscreen_on_event(void* context, SceneManagerEvent event) {
     GBACartridge* app = context;
     bool consumed = false;
-    
+
     if(event.type == SceneManagerEventTypeCustom) {
         switch(event.event) {
-            case GBACartridgeCustomEventStartscreenLeft:
-            case GBACartridgeCustomEventStartscreenRight:
-                break;
-            case GBACartridgeCustomEventStartscreenUp:
-            case GBACartridgeCustomEventStartscreenDown:
-                break;
-            case GBACartridgeCustomEventStartscreenOk:
-                scene_manager_next_scene(app->scene_manager, GBACartridgeSceneMenu);
-                consumed = true;
-                break;
-            case GBACartridgeCustomEventStartscreenBack:
-                notification_message(app->notification, &sequence_reset_red);
-                notification_message(app->notification, &sequence_reset_green);
-                notification_message(app->notification, &sequence_reset_blue);
-                if(!scene_manager_search_and_switch_to_previous_scene(
-                    app->scene_manager, GBACartridgeSceneStartscreen)) {
-                        scene_manager_stop(app->scene_manager);
-                        view_dispatcher_stop(app->view_dispatcher);
-                    }
-                consumed = true;
-                break;
+        case GBACartridgeCustomEventStartscreenLeft:
+        case GBACartridgeCustomEventStartscreenRight:
+            break;
+        case GBACartridgeCustomEventStartscreenUp:
+        case GBACartridgeCustomEventStartscreenDown:
+            break;
+        case GBACartridgeCustomEventStartscreenOk:
+            scene_manager_next_scene(app->scene_manager, GBACartridgeSceneMenu);
+            consumed = true;
+            break;
+        case GBACartridgeCustomEventStartscreenBack:
+            notification_message(app->notification, &sequence_reset_red);
+            notification_message(app->notification, &sequence_reset_green);
+            notification_message(app->notification, &sequence_reset_blue);
+            if(!scene_manager_search_and_switch_to_previous_scene(
+                   app->scene_manager, GBACartridgeSceneStartscreen)) {
+                scene_manager_stop(app->scene_manager);
+                view_dispatcher_stop(app->view_dispatcher);
+            }
+            consumed = true;
+            break;
         }
     }
-    
+
     return consumed;
 }
 

+ 5 - 7
uart.c

@@ -22,8 +22,6 @@ typedef enum {
 
 #define WORKER_ALL_RX_EVENTS (WorkerEvtStop | WorkerEvtRxDone)
 
-
-
 void uart_set_handle_rx_data_cb(
     Uart* uart,
     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;
     UNUSED(handle);
 
@@ -109,7 +108,7 @@ static int32_t uart_worker(void* context) {
     Uart* uart = (Uart*)context;
 
     while(1) {
-       uint32_t events =
+        uint32_t events =
             furi_thread_flags_wait(WORKER_ALL_RX_EVENTS, FuriFlagWaitAny, FuriWaitForever);
         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_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(
         uart->serial_handle,
         channel == FuriHalSerialIdUsart ? uart_on_irq_cb : wifi_marauder_uart_on_irq_cb,
         uart,
         false);
 
-
     return uart;
 }
 
@@ -185,7 +183,7 @@ Uart* lp_uart_init(void* app) {
 void uart_free(Uart* 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_free(uart->rx_thread);
 

+ 100 - 117
views/gba_cartridge_scene_1.c

@@ -4,8 +4,8 @@
 #include <input/input.h>
 #include <gui/elements.h>
 #include <dolphin/dolphin.h>
-#include <stdio.h>   // Para sprintf
-#include <string.h>  // Para strlen
+#include <stdio.h> // Para sprintf
+#include <string.h> // Para strlen
 
 struct GBACartridgeScene1 {
     View* view;
@@ -14,7 +14,7 @@ struct GBACartridgeScene1 {
     GBACartridge* app;
 };
 
-typedef struct  {
+typedef struct {
     char* cart_title;
     char* cart_serial;
     char* cart_checksum;
@@ -29,8 +29,6 @@ typedef struct  {
 
 } GameBoyCartridgeModel;
 
-
-
 void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
     furi_assert(context);
     UNUSED(len);
@@ -42,39 +40,37 @@ void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* conte
         GameBoyCartridgeModel * model,
         {
             cJSON* json = cJSON_Parse((char*)buf);
-            if (json == NULL) {
+            if(json == NULL) {
                 model->cart_title = "Parse error";
-            } else {;
+            } else {
+                ;
                 //  Title to LONG
                 // cJSON* title =  cJSON_GetObjectItemCaseSensitive(json, "title");
                 // if (cJSON_IsString(title) && (title->valuestring != NULL))
                 // {
                 //     model->cart_title = strdup(title->valuestring);
-                    
+
                 // } else {
                 //     model->cart_title = "None";
                 // }
                 //  Title
-                cJSON* title =  cJSON_GetObjectItemCaseSensitive(json, "rom_title");
-                if (cJSON_IsString(title) && (title->valuestring != NULL))
-                {
+                cJSON* title = cJSON_GetObjectItemCaseSensitive(json, "rom_title");
+                if(cJSON_IsString(title) && (title->valuestring != NULL)) {
                     model->cart_title = strdup(title->valuestring);
-                    
+
                 } else {
                     model->cart_title = "None";
                 }
                 //  Serial
-                cJSON* serial =  cJSON_GetObjectItemCaseSensitive(json, "serial");
-                if (cJSON_IsString(serial) && (serial->valuestring != NULL))
-                {
+                cJSON* serial = cJSON_GetObjectItemCaseSensitive(json, "serial");
+                if(cJSON_IsString(serial) && (serial->valuestring != NULL)) {
                     model->cart_serial = strdup(serial->valuestring);
                 } else {
                     model->cart_serial = "";
-                }                
+                }
                 //  Checksum
-                cJSON* checksum =  cJSON_GetObjectItemCaseSensitive(json, "checksum");
-                if (cJSON_IsString(checksum) && (checksum->valuestring != NULL))
-                {
+                cJSON* checksum = cJSON_GetObjectItemCaseSensitive(json, "checksum");
+                if(cJSON_IsString(checksum) && (checksum->valuestring != NULL)) {
                     model->cart_checksum = strdup(checksum->valuestring);
                 } else {
                     model->cart_checksum = "None";
@@ -82,35 +78,32 @@ void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* conte
                 //  ROMSize
 
                 cJSON* ROMSize = cJSON_GetObjectItemCaseSensitive(json, "ROMSize");
-                if (cJSON_IsNumber(ROMSize)) {
-                    char buffer[20];  // Tamaño suficiente para almacenar un entero
+                if(cJSON_IsNumber(ROMSize)) {
+                    char buffer[20]; // Tamaño suficiente para almacenar un entero
                     snprintf(buffer, sizeof(buffer), "%d", ROMSize->valueint);
-                    model->cart_ROMSize = strdup(buffer);  // Asigna una copia dinámica de la cadena
+                    model->cart_ROMSize = strdup(buffer); // Asigna una copia dinámica de la cadena
                 } else {
-                    model->cart_ROMSize = NULL;  // Puedes asignar NULL o cualquier otro valor predeterminado
+                    model->cart_ROMSize =
+                        NULL; // Puedes asignar NULL o cualquier otro valor predeterminado
                 }
 
                 //  RAMSize
-                cJSON* RAMSize =  cJSON_GetObjectItemCaseSensitive(json, "RAMSize");
-                if (cJSON_IsString(RAMSize) && (RAMSize->valuestring != NULL))
-                {
+                cJSON* RAMSize = cJSON_GetObjectItemCaseSensitive(json, "RAMSize");
+                if(cJSON_IsString(RAMSize) && (RAMSize->valuestring != NULL)) {
                     model->cart_RAMSize = strdup(RAMSize->valuestring);
                 } else {
                     model->cart_RAMSize = "None";
                 }
                 //  GB Type
-                cJSON* gb_type =  cJSON_GetObjectItemCaseSensitive(json, "gb_type");
-                if (cJSON_IsString(gb_type) && (gb_type->valuestring != NULL))
-                {
+                cJSON* gb_type = cJSON_GetObjectItemCaseSensitive(json, "gb_type");
+                if(cJSON_IsString(gb_type) && (gb_type->valuestring != NULL)) {
                     model->cart_gb_type = strdup(gb_type->valuestring);
                 } else {
                     model->cart_gb_type = "dump";
                 }
 
-
-                cJSON* logo_correct =  cJSON_GetObjectItemCaseSensitive(json, "logo_correct");
-                if (cJSON_IsBool(logo_correct))
-                {
+                cJSON* logo_correct = cJSON_GetObjectItemCaseSensitive(json, "logo_correct");
+                if(cJSON_IsBool(logo_correct)) {
                     model->cart_logo = cJSON_IsTrue(logo_correct) ? "OK" : "NO";
                 } else {
                     model->cart_logo = "NO";
@@ -119,7 +112,7 @@ void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* conte
                 FuriString* path = furi_string_alloc();
                 //  int buffer_size = strlen(model->cart_title) + strlen(model->cart_serial) + strlen(model->cart_gb_type) + 3; // 3 para los guiones bajos y el punto
                 // char filename[255];
-                if (strcmp(model->cart_serial, "") == 0) {
+                if(strcmp(model->cart_serial, "") == 0) {
                     furi_string_cat_printf(path, "%s", model->cart_title);
                 } else {
                     furi_string_cat_printf(path, "%s_%s", model->cart_title, model->cart_serial);
@@ -133,9 +126,9 @@ void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* conte
 
                 // instance->rom_banks = model->romBanks;
                 // instance->ram_banks = model->ramBanks;
-                
             }
-        },true);
+        },
+        true);
 }
 void gba_cartridge_scene_1_set_callback(
     GBACartridgeScene1* instance,
@@ -148,16 +141,15 @@ void gba_cartridge_scene_1_set_callback(
     instance->app = (GBACartridge*)context;
 }
 
-
 void gba_cartridge_scene_1_draw(Canvas* canvas, GameBoyCartridgeModel* model) {
     UNUSED(model);
     canvas_clear(canvas);
     // canvas_set_color(canvas, ColorBlack);
     // canvas_set_font(canvas, FontPrimary);
-    // canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, "This is Scene 1"); 
+    // canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, "This is Scene 1");
     // canvas_set_font(canvas, FontSecondary);
-    // canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, "An empty scene to be"); 
-    // canvas_draw_str_aligned(canvas, 0, 32, AlignLeft, AlignTop, "used as boilerplate"); 
+    // canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, "An empty scene to be");
+    // canvas_draw_str_aligned(canvas, 0, 32, AlignLeft, AlignTop, "used as boilerplate");
     // Clear the screen.
     canvas_set_color(canvas, ColorBlack);
 
@@ -169,26 +161,26 @@ void gba_cartridge_scene_1_draw(Canvas* canvas, GameBoyCartridgeModel* model) {
     canvas_draw_str(canvas, 2, 20, "Game Code / REV");
     canvas_set_font(canvas, FontPrimary);
     // canvas_draw_str(canvas, 87, 20, "APSS-0");  //  serial
-    canvas_draw_str_aligned(canvas, 126, 20,  AlignRight, AlignBottom, model->cart_serial);
+    canvas_draw_str_aligned(canvas, 126, 20, AlignRight, AlignBottom, model->cart_serial);
     canvas_set_font(canvas, FontSecondary);
-    canvas_draw_str(canvas, 2, 30, "Boot Logo");    
+    canvas_draw_str(canvas, 2, 30, "Boot Logo");
     canvas_set_font(canvas, FontPrimary);
-    canvas_draw_str_aligned(canvas, 126, 30,  AlignRight, AlignBottom, model->cart_logo);
+    canvas_draw_str_aligned(canvas, 126, 30, AlignRight, AlignBottom, model->cart_logo);
     canvas_set_font(canvas, FontSecondary);
-    canvas_draw_str(canvas, 2, 40, "ROM Checksum"); 
+    canvas_draw_str(canvas, 2, 40, "ROM Checksum");
     canvas_set_font(canvas, FontPrimary);
     // canvas_draw_str(canvas, 87, 40, "0X04C7"); //  checksum
-    canvas_draw_str_aligned(canvas, 126, 39,  AlignRight, AlignBottom, model->cart_checksum);
+    canvas_draw_str_aligned(canvas, 126, 39, AlignRight, AlignBottom, model->cart_checksum);
     canvas_set_font(canvas, FontSecondary);
     canvas_draw_str(canvas, 2, 50, "ROM Size");
     canvas_set_font(canvas, FontPrimary);
     // canvas_draw_str(canvas, 98, 49, "1 MiB"); //  ROMSize
-    canvas_draw_str_aligned(canvas, 126, 49,  AlignRight, AlignBottom, model->cart_ROMSize);
+    canvas_draw_str_aligned(canvas, 126, 49, AlignRight, AlignBottom, model->cart_ROMSize);
     canvas_set_font(canvas, FontSecondary);
     canvas_draw_str(canvas, 2, 60, "Save Type");
     canvas_set_font(canvas, FontPrimary);
     // canvas_draw_str(canvas, 63, 60, "SRAM 32KiB"); //  RAMSize
-    canvas_draw_str_aligned(canvas, 126, 59,  AlignRight, AlignBottom, model->cart_RAMSize);
+    canvas_draw_str_aligned(canvas, 126, 59, AlignRight, AlignBottom, model->cart_RAMSize);
 }
 
 static void gba_cartridge_scene_1_model_init(GameBoyCartridgeModel* const model) {
@@ -205,62 +197,61 @@ static void gba_cartridge_scene_1_model_init(GameBoyCartridgeModel* const model)
     model->cart_RAMSize = "";
     model->cart_gb_type = "";
     model->cart_logo = "";
-   
 }
 
 bool gba_cartridge_scene_1_input(InputEvent* event, void* context) {
-    furi_assert(context); 
+    furi_assert(context);
     GBACartridgeScene1* instance = context;
     bool consumed = false;
-    if (event->type == InputTypeRelease) {
+    if(event->type == InputTypeRelease) {
         switch(event->key) {
-            case InputKeyBack:
-                // with_view_model(
-                //     instance->view,
-                //     GameBoyCartridgeModel * model,
-                //     {
-                //         UNUSED(model);
-                //         instance->callback(GBACartridgeCustomEventScene1Back, instance->context);
-                //     },
-                //     true);
-                consumed = true;
-                break;
-            case InputKeyOk:
+        case InputKeyBack:
+            // with_view_model(
+            //     instance->view,
+            //     GameBoyCartridgeModel * model,
+            //     {
+            //         UNUSED(model);
+            //         instance->callback(GBACartridgeCustomEventScene1Back, instance->context);
+            //     },
+            //     true);
+            consumed = true;
+            break;
+        case InputKeyOk:
 
-                with_view_model(
-                    ((GBACartridge*)instance->app)->gba_cartridge_scene_1->view,
-                    GameBoyCartridgeModel * model,
-                    { 
-                        model->cart_title = "Refresh...";
-                        model->cart_serial = "";
-                        model->cart_checksum = "";
-                        model->cart_ROMSize = "";
-                        model->cart_RAMSize = "";
-                        
-                        // Register callbacks to receive data
-                        uart_set_handle_rx_data_cb(((GBACartridge*)instance->app)->uart, gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
-                        const char GBACartridge_command[] = "gbacartridge -i\n";
-                        uart_tx(((GBACartridge*)instance->app)->uart, (uint8_t*)GBACartridge_command, strlen(GBACartridge_command));
-                    },
-                    true);
-                consumed = true;
-                break;
-            case InputKeyLeft:
-            case InputKeyRight:
-            case InputKeyUp:
-            case InputKeyDown:
-            
-                with_view_model(
-                    instance->view,
-                    GameBoyCartridgeModel* model,
-                    {
-                        UNUSED(model);
-                    },
-                    true);
-                consumed = true;
-                break;
-            case InputKeyMAX:
-                break;
+            with_view_model(
+                ((GBACartridge*)instance->app)->gba_cartridge_scene_1->view,
+                GameBoyCartridgeModel * model,
+                {
+                    model->cart_title = "Refresh...";
+                    model->cart_serial = "";
+                    model->cart_checksum = "";
+                    model->cart_ROMSize = "";
+                    model->cart_RAMSize = "";
+
+                    // Register callbacks to receive data
+                    uart_set_handle_rx_data_cb(
+                        ((GBACartridge*)instance->app)->uart,
+                        gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
+                    const char GBACartridge_command[] = "gbacartridge -i\n";
+                    uart_tx(
+                        ((GBACartridge*)instance->app)->uart,
+                        (uint8_t*)GBACartridge_command,
+                        strlen(GBACartridge_command));
+                },
+                true);
+            consumed = true;
+            break;
+        case InputKeyLeft:
+        case InputKeyRight:
+        case InputKeyUp:
+        case InputKeyDown:
+
+            with_view_model(
+                instance->view, GameBoyCartridgeModel * model, { UNUSED(model); }, true);
+            consumed = true;
+            break;
+        case InputKeyMAX:
+            break;
         }
     }
     return consumed;
@@ -276,16 +267,18 @@ void gba_cartridge_scene_1_enter(void* context) {
     with_view_model(
         instance->view,
         GameBoyCartridgeModel * model,
-        {
-            gba_cartridge_scene_1_model_init(model);
-        },
-        true
-    );
-    
+        { gba_cartridge_scene_1_model_init(model); },
+        true);
+
     // Register callbacks to receive data
-    uart_set_handle_rx_data_cb(((GBACartridge*)instance->app)->uart, gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
+    uart_set_handle_rx_data_cb(
+        ((GBACartridge*)instance->app)->uart,
+        gameboy_information_handle_rx_data_cb); // setup callback for general log rx thread
     const char GBACartridge_command[] = "gbacartridge -i\n";
-    uart_tx(((GBACartridge*)instance->app)->uart,(uint8_t*)GBACartridge_command, strlen(GBACartridge_command));
+    uart_tx(
+        ((GBACartridge*)instance->app)->uart,
+        (uint8_t*)GBACartridge_command,
+        strlen(GBACartridge_command));
 }
 
 GBACartridgeScene1* gba_cartridge_scene_1_alloc() {
@@ -301,12 +294,8 @@ GBACartridgeScene1* gba_cartridge_scene_1_alloc() {
     with_view_model(
         instance->view,
         GameBoyCartridgeModel * model,
-        {
-            gba_cartridge_scene_1_model_init(model);
-        },
-        true
-    );
-    
+        { gba_cartridge_scene_1_model_init(model); },
+        true);
 
     return instance;
 }
@@ -315,12 +304,7 @@ void gba_cartridge_scene_1_free(GBACartridgeScene1* instance) {
     furi_assert(instance);
 
     with_view_model(
-        instance->view,
-        GameBoyCartridgeModel * model,
-        {
-            UNUSED(model);
-        },
-        true);
+        instance->view, GameBoyCartridgeModel * model, { UNUSED(model); }, true);
     view_free(instance->view);
     free(instance);
 }
@@ -329,4 +313,3 @@ View* gba_cartridge_scene_1_get_view(GBACartridgeScene1* instance) {
     furi_assert(instance);
     return instance->view;
 }
-

+ 0 - 3
views/gba_cartridge_scene_1.h

@@ -3,13 +3,10 @@
 #include <gui/view.h>
 #include "../helpers/gba_cartridge_custom_event.h"
 
-
 typedef struct GBACartridgeScene1 GBACartridgeScene1;
 
 typedef void (*GBACartridgeScene1Callback)(GBACartridgeCustomEvent event, void* context);
 
-
-
 void gba_cartridge_scene_1_set_callback(
     GBACartridgeScene1* gba_cartridge_scene_1,
     GBACartridgeScene1Callback callback,

+ 45 - 57
views/gba_cartridge_startscreen.c

@@ -11,7 +11,6 @@ struct GBACartridgeStartscreen {
     void* context;
 };
 
-
 typedef struct {
     int some_value;
 } GBACartridgeStartscreenModel;
@@ -55,17 +54,16 @@ void gba_cartridge_startscreen_draw(Canvas* canvas, GBACartridgeStartscreenModel
     UNUSED(model);
     canvas_clear(canvas);
     canvas_set_color(canvas, ColorBlack);
-    
-    
-    canvas_draw_icon(canvas, 0 /*128/2 - (42/2)*/, 64/2 - (64/2), &I_cartridge_gba_42x64);
+
+    canvas_draw_icon(canvas, 0 /*128/2 - (42/2)*/, 64 / 2 - (64 / 2), &I_cartridge_gba_42x64);
 
     canvas_set_font(canvas, FontPrimary);
-    canvas_draw_str_aligned(canvas, 64 + 20, 6, AlignCenter, AlignTop, "Connect Malveke"); 
+    canvas_draw_str_aligned(canvas, 64 + 20, 6, AlignCenter, AlignTop, "Connect Malveke");
     canvas_set_font(canvas, FontSecondary);
-    canvas_draw_str_aligned(canvas, 64+ 20, 18, AlignCenter, AlignTop, "to the Flipper and"); 
-    canvas_draw_str_aligned(canvas, 64+ 20, 28, AlignCenter, AlignTop, "and Insert GBA");
-    canvas_draw_str_aligned(canvas, 64+ 20, 38, AlignCenter, AlignTop, "Cartridge");
-    elements_button_center(canvas, "Ok"); 
+    canvas_draw_str_aligned(canvas, 64 + 20, 18, AlignCenter, AlignTop, "to the Flipper and");
+    canvas_draw_str_aligned(canvas, 64 + 20, 28, AlignCenter, AlignTop, "and Insert GBA");
+    canvas_draw_str_aligned(canvas, 64 + 20, 38, AlignCenter, AlignTop, "Cartridge");
+    elements_button_center(canvas, "Ok");
 }
 
 static void gba_cartridge_startscreen_model_init(GBACartridgeStartscreenModel* const model) {
@@ -73,37 +71,38 @@ static void gba_cartridge_startscreen_model_init(GBACartridgeStartscreenModel* c
 }
 
 bool gba_cartridge_startscreen_input(InputEvent* event, void* context) {
-    furi_assert(context); 
+    furi_assert(context);
     GBACartridgeStartscreen* instance = context;
-    if (event->type == InputTypeRelease) {
+    if(event->type == InputTypeRelease) {
         switch(event->key) {
-            case InputKeyBack:
-                with_view_model(
-                    instance->view,
-                    GBACartridgeStartscreenModel * model,
-                    {
-                        UNUSED(model);
-                        instance->callback(GBACartridgeCustomEventStartscreenBack, instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyLeft:
-            case InputKeyRight:
-            case InputKeyUp:
-            case InputKeyDown:
-            case InputKeyOk:
-                notification_message(((GBACartridge*)instance->context)->notification, &sequence_alarm);
-                with_view_model(
-                    instance->view,
-                    GBACartridgeStartscreenModel* model,
-                    {
-                        UNUSED(model);
-                        instance->callback(GBACartridgeCustomEventStartscreenOk, instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyMAX:
-                break;
+        case InputKeyBack:
+            with_view_model(
+                instance->view,
+                GBACartridgeStartscreenModel * model,
+                {
+                    UNUSED(model);
+                    instance->callback(GBACartridgeCustomEventStartscreenBack, instance->context);
+                },
+                true);
+            break;
+        case InputKeyLeft:
+        case InputKeyRight:
+        case InputKeyUp:
+        case InputKeyDown:
+        case InputKeyOk:
+            notification_message(
+                ((GBACartridge*)instance->context)->notification, &sequence_alarm);
+            with_view_model(
+                instance->view,
+                GBACartridgeStartscreenModel * model,
+                {
+                    UNUSED(model);
+                    instance->callback(GBACartridgeCustomEventStartscreenOk, instance->context);
+                },
+                true);
+            break;
+        case InputKeyMAX:
+            break;
         }
     }
     return true;
@@ -119,17 +118,15 @@ void gba_cartridge_startscreen_enter(void* context) {
     with_view_model(
         instance->view,
         GBACartridgeStartscreenModel * model,
-        {
-            gba_cartridge_startscreen_model_init(model);
-        },
-        true
-    );
+        { gba_cartridge_startscreen_model_init(model); },
+        true);
 }
 
 GBACartridgeStartscreen* gba_cartridge_startscreen_alloc() {
     GBACartridgeStartscreen* instance = malloc(sizeof(GBACartridgeStartscreen));
     instance->view = view_alloc();
-    view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(GBACartridgeStartscreenModel));
+    view_allocate_model(
+        instance->view, ViewModelTypeLocking, sizeof(GBACartridgeStartscreenModel));
     view_set_context(instance->view, instance); // furi_assert crashes in events without this
     view_set_draw_callback(instance->view, (ViewDrawCallback)gba_cartridge_startscreen_draw);
     view_set_input_callback(instance->view, gba_cartridge_startscreen_input);
@@ -139,12 +136,9 @@ GBACartridgeStartscreen* gba_cartridge_startscreen_alloc() {
     with_view_model(
         instance->view,
         GBACartridgeStartscreenModel * model,
-        {
-            gba_cartridge_startscreen_model_init(model);
-        },
-        true
-    );
-    
+        { gba_cartridge_startscreen_model_init(model); },
+        true);
+
     return instance;
 }
 
@@ -152,12 +146,7 @@ void gba_cartridge_startscreen_free(GBACartridgeStartscreen* instance) {
     furi_assert(instance);
 
     with_view_model(
-        instance->view,
-        GBACartridgeStartscreenModel * model,
-        {
-            UNUSED(model);
-        },
-        true);
+        instance->view, GBACartridgeStartscreenModel * model, { UNUSED(model); }, true);
     view_free(instance->view);
     free(instance);
 }
@@ -166,4 +155,3 @@ View* gba_cartridge_startscreen_get_view(GBACartridgeStartscreen* instance) {
     furi_assert(instance);
     return instance->view;
 }
-