|
@@ -4,8 +4,8 @@
|
|
|
#include <input/input.h>
|
|
#include <input/input.h>
|
|
|
#include <gui/elements.h>
|
|
#include <gui/elements.h>
|
|
|
#include <dolphin/dolphin.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 {
|
|
struct GBACartridgeScene1 {
|
|
|
View* view;
|
|
View* view;
|
|
@@ -14,7 +14,7 @@ struct GBACartridgeScene1 {
|
|
|
GBACartridge* app;
|
|
GBACartridge* app;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-typedef struct {
|
|
|
|
|
|
|
+typedef struct {
|
|
|
char* cart_title;
|
|
char* cart_title;
|
|
|
char* cart_serial;
|
|
char* cart_serial;
|
|
|
char* cart_checksum;
|
|
char* cart_checksum;
|
|
@@ -29,8 +29,6 @@ typedef struct {
|
|
|
|
|
|
|
|
} GameBoyCartridgeModel;
|
|
} GameBoyCartridgeModel;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
|
|
void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* context) {
|
|
|
furi_assert(context);
|
|
furi_assert(context);
|
|
|
UNUSED(len);
|
|
UNUSED(len);
|
|
@@ -42,39 +40,37 @@ void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* conte
|
|
|
GameBoyCartridgeModel * model,
|
|
GameBoyCartridgeModel * model,
|
|
|
{
|
|
{
|
|
|
cJSON* json = cJSON_Parse((char*)buf);
|
|
cJSON* json = cJSON_Parse((char*)buf);
|
|
|
- if (json == NULL) {
|
|
|
|
|
|
|
+ if(json == NULL) {
|
|
|
model->cart_title = "Parse error";
|
|
model->cart_title = "Parse error";
|
|
|
- } else {;
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ;
|
|
|
// Title to LONG
|
|
// Title to LONG
|
|
|
// cJSON* title = cJSON_GetObjectItemCaseSensitive(json, "title");
|
|
// cJSON* title = cJSON_GetObjectItemCaseSensitive(json, "title");
|
|
|
// if (cJSON_IsString(title) && (title->valuestring != NULL))
|
|
// if (cJSON_IsString(title) && (title->valuestring != NULL))
|
|
|
// {
|
|
// {
|
|
|
// model->cart_title = strdup(title->valuestring);
|
|
// model->cart_title = strdup(title->valuestring);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// } else {
|
|
// } else {
|
|
|
// model->cart_title = "None";
|
|
// model->cart_title = "None";
|
|
|
// }
|
|
// }
|
|
|
// Title
|
|
// 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);
|
|
model->cart_title = strdup(title->valuestring);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
} else {
|
|
} else {
|
|
|
model->cart_title = "None";
|
|
model->cart_title = "None";
|
|
|
}
|
|
}
|
|
|
// Serial
|
|
// 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);
|
|
model->cart_serial = strdup(serial->valuestring);
|
|
|
} else {
|
|
} else {
|
|
|
model->cart_serial = "";
|
|
model->cart_serial = "";
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
// Checksum
|
|
// 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);
|
|
model->cart_checksum = strdup(checksum->valuestring);
|
|
|
} else {
|
|
} else {
|
|
|
model->cart_checksum = "None";
|
|
model->cart_checksum = "None";
|
|
@@ -82,35 +78,32 @@ void gameboy_information_handle_rx_data_cb(uint8_t* buf, size_t len, void* conte
|
|
|
// ROMSize
|
|
// ROMSize
|
|
|
|
|
|
|
|
cJSON* ROMSize = cJSON_GetObjectItemCaseSensitive(json, "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);
|
|
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 {
|
|
} 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
|
|
// 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);
|
|
model->cart_RAMSize = strdup(RAMSize->valuestring);
|
|
|
} else {
|
|
} else {
|
|
|
model->cart_RAMSize = "None";
|
|
model->cart_RAMSize = "None";
|
|
|
}
|
|
}
|
|
|
// GB Type
|
|
// 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);
|
|
model->cart_gb_type = strdup(gb_type->valuestring);
|
|
|
} else {
|
|
} else {
|
|
|
model->cart_gb_type = "dump";
|
|
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";
|
|
model->cart_logo = cJSON_IsTrue(logo_correct) ? "OK" : "NO";
|
|
|
} else {
|
|
} else {
|
|
|
model->cart_logo = "NO";
|
|
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();
|
|
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
|
|
// 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];
|
|
// char filename[255];
|
|
|
- if (strcmp(model->cart_serial, "") == 0) {
|
|
|
|
|
|
|
+ if(strcmp(model->cart_serial, "") == 0) {
|
|
|
furi_string_cat_printf(path, "%s", model->cart_title);
|
|
furi_string_cat_printf(path, "%s", model->cart_title);
|
|
|
} else {
|
|
} else {
|
|
|
furi_string_cat_printf(path, "%s_%s", model->cart_title, model->cart_serial);
|
|
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->rom_banks = model->romBanks;
|
|
|
// instance->ram_banks = model->ramBanks;
|
|
// instance->ram_banks = model->ramBanks;
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
- },true);
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ true);
|
|
|
}
|
|
}
|
|
|
void gba_cartridge_scene_1_set_callback(
|
|
void gba_cartridge_scene_1_set_callback(
|
|
|
GBACartridgeScene1* instance,
|
|
GBACartridgeScene1* instance,
|
|
@@ -148,16 +141,15 @@ void gba_cartridge_scene_1_set_callback(
|
|
|
instance->app = (GBACartridge*)context;
|
|
instance->app = (GBACartridge*)context;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
void gba_cartridge_scene_1_draw(Canvas* canvas, GameBoyCartridgeModel* model) {
|
|
void gba_cartridge_scene_1_draw(Canvas* canvas, GameBoyCartridgeModel* model) {
|
|
|
UNUSED(model);
|
|
UNUSED(model);
|
|
|
canvas_clear(canvas);
|
|
canvas_clear(canvas);
|
|
|
// canvas_set_color(canvas, ColorBlack);
|
|
// canvas_set_color(canvas, ColorBlack);
|
|
|
// canvas_set_font(canvas, FontPrimary);
|
|
// 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_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.
|
|
// Clear the screen.
|
|
|
canvas_set_color(canvas, ColorBlack);
|
|
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_draw_str(canvas, 2, 20, "Game Code / REV");
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
canvas_set_font(canvas, FontPrimary);
|
|
|
// canvas_draw_str(canvas, 87, 20, "APSS-0"); // serial
|
|
// 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_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_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_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_set_font(canvas, FontPrimary);
|
|
|
// canvas_draw_str(canvas, 87, 40, "0X04C7"); // checksum
|
|
// 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_set_font(canvas, FontSecondary);
|
|
|
canvas_draw_str(canvas, 2, 50, "ROM Size");
|
|
canvas_draw_str(canvas, 2, 50, "ROM Size");
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
canvas_set_font(canvas, FontPrimary);
|
|
|
// canvas_draw_str(canvas, 98, 49, "1 MiB"); // ROMSize
|
|
// 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_set_font(canvas, FontSecondary);
|
|
|
canvas_draw_str(canvas, 2, 60, "Save Type");
|
|
canvas_draw_str(canvas, 2, 60, "Save Type");
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
canvas_set_font(canvas, FontPrimary);
|
|
|
// canvas_draw_str(canvas, 63, 60, "SRAM 32KiB"); // RAMSize
|
|
// 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) {
|
|
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_RAMSize = "";
|
|
|
model->cart_gb_type = "";
|
|
model->cart_gb_type = "";
|
|
|
model->cart_logo = "";
|
|
model->cart_logo = "";
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool gba_cartridge_scene_1_input(InputEvent* event, void* context) {
|
|
bool gba_cartridge_scene_1_input(InputEvent* event, void* context) {
|
|
|
- furi_assert(context);
|
|
|
|
|
|
|
+ furi_assert(context);
|
|
|
GBACartridgeScene1* instance = context;
|
|
GBACartridgeScene1* instance = context;
|
|
|
bool consumed = false;
|
|
bool consumed = false;
|
|
|
- if (event->type == InputTypeRelease) {
|
|
|
|
|
|
|
+ if(event->type == InputTypeRelease) {
|
|
|
switch(event->key) {
|
|
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;
|
|
return consumed;
|
|
@@ -276,16 +267,18 @@ void gba_cartridge_scene_1_enter(void* context) {
|
|
|
with_view_model(
|
|
with_view_model(
|
|
|
instance->view,
|
|
instance->view,
|
|
|
GameBoyCartridgeModel * model,
|
|
GameBoyCartridgeModel * model,
|
|
|
- {
|
|
|
|
|
- gba_cartridge_scene_1_model_init(model);
|
|
|
|
|
- },
|
|
|
|
|
- true
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
|
|
+ { gba_cartridge_scene_1_model_init(model); },
|
|
|
|
|
+ true);
|
|
|
|
|
+
|
|
|
// Register callbacks to receive data
|
|
// 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";
|
|
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() {
|
|
GBACartridgeScene1* gba_cartridge_scene_1_alloc() {
|
|
@@ -301,12 +294,8 @@ GBACartridgeScene1* gba_cartridge_scene_1_alloc() {
|
|
|
with_view_model(
|
|
with_view_model(
|
|
|
instance->view,
|
|
instance->view,
|
|
|
GameBoyCartridgeModel * model,
|
|
GameBoyCartridgeModel * model,
|
|
|
- {
|
|
|
|
|
- gba_cartridge_scene_1_model_init(model);
|
|
|
|
|
- },
|
|
|
|
|
- true
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
|
|
+ { gba_cartridge_scene_1_model_init(model); },
|
|
|
|
|
+ true);
|
|
|
|
|
|
|
|
return instance;
|
|
return instance;
|
|
|
}
|
|
}
|
|
@@ -315,12 +304,7 @@ void gba_cartridge_scene_1_free(GBACartridgeScene1* instance) {
|
|
|
furi_assert(instance);
|
|
furi_assert(instance);
|
|
|
|
|
|
|
|
with_view_model(
|
|
with_view_model(
|
|
|
- instance->view,
|
|
|
|
|
- GameBoyCartridgeModel * model,
|
|
|
|
|
- {
|
|
|
|
|
- UNUSED(model);
|
|
|
|
|
- },
|
|
|
|
|
- true);
|
|
|
|
|
|
|
+ instance->view, GameBoyCartridgeModel * model, { UNUSED(model); }, true);
|
|
|
view_free(instance->view);
|
|
view_free(instance->view);
|
|
|
free(instance);
|
|
free(instance);
|
|
|
}
|
|
}
|
|
@@ -329,4 +313,3 @@ View* gba_cartridge_scene_1_get_view(GBACartridgeScene1* instance) {
|
|
|
furi_assert(instance);
|
|
furi_assert(instance);
|
|
|
return instance->view;
|
|
return instance->view;
|
|
|
}
|
|
}
|
|
|
-
|
|
|