Skip to content

Commit f4f9468

Browse files
committed
remove auto gen menu in amiibolink app
fixed amiloop mode option incorrect issue
1 parent 56539c3 commit f4f9468

File tree

7 files changed

+55
-74
lines changed

7 files changed

+55
-74
lines changed

docs/en/04-Using-Firmware.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,6 @@ The device use a "special" amiibo slot where only an amiibo can be used, the ami
238238

239239
Changing the mode preserve the current selected amiibo, with exception of «Read-write mode».
240240

241-
## Auto Random. []
242-
When this option is turn ON a new random UUID for the current amiibo is generated after each time a game read it. Allowing to use the same amiibo multiple times on games with restrictions. You cannot change the active amiibo on this mode. Cannot be turned OFF for «Randomize (Auto)» mode, cannot be turned ON for «Randomize (Manual)»mode;
243241
## Compati. Mode []
244242
Shows the emulation firmware mode, the supported values are V1, V2 and AmiLoop, there are several APPs each one designed for a AmiiboLink firmware version or to the AmiLoop protocol. Using this setting you can match the emulation with the protocol needed by the APP you use on your phone.
245243
## Tag Details

docs/it/04-Using-Firmware.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,6 @@ Il dispositivo utilizza uno slot amiibo "speciale" dove può essere utilizzato s
237237

238238
Cambiando la modalità si conserva l'amiibo selezionato corrente, con l'eccezione della modalità «Lettura-scrittura».
239239

240-
## Auto Rand. []
241-
Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge,
242-
consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità.
243-
244240

245241
### Modalità Compati. []
246242
Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. Utilizzando questa impostazione puoi far corrispondere l'emulazione con il protocollo necessario per l'APP che usi sul tuo telefono.

fw/application/src/app/amiibolink/scene/amiibolink_scene_main.c

Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,30 @@
2525

2626
APP_TIMER_DEF(m_amiibo_gen_delay_timer);
2727

28-
static void ntag_generate_cb() {
28+
static void amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) {
29+
app_amiibolink_t *app = p_msg_box->user_data;
30+
if (event == MUI_MSG_BOX_EVENT_SELECT_CENTER) {
31+
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MAIN);
32+
}
33+
}
34+
35+
static void amiibolink_scene_amiibo_detail_no_key_msg(app_amiibolink_t *app) {
36+
mui_msg_box_set_header(app->p_msg_box, getLangString(_L_AMIIBO_KEY_UNLOADED));
37+
mui_msg_box_set_message(app->p_msg_box, getLangString(_L_UPLOAD_KEY_RETAIL_BIN));
38+
mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_KNOW), NULL);
39+
mui_msg_box_set_btn_focus(app->p_msg_box, 1);
40+
mui_msg_box_set_event_cb(app->p_msg_box, amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb);
41+
42+
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MSG_BOX);
43+
}
44+
45+
static void ntag_generate_cb(void* ctx) {
46+
app_amiibolink_t *app = ctx;
47+
if (!amiibo_helper_is_key_loaded()) {
48+
amiibolink_scene_amiibo_detail_no_key_msg(app);
49+
return;
50+
}
51+
2952
ret_code_t err_code = amiibo_helper_rand_amiibo_uuid(ntag_emu_get_current_tag());
3053
NRF_LOG_INFO("ntag generate: %d", err_code);
3154
if (err_code == NRF_SUCCESS) {
@@ -40,45 +63,45 @@ static void ntag_update(app_amiibolink_t *app, uint8_t index, ntag_t *p_ntag) {
4063
NRF_LOG_INFO("ntag_update: index=%d, err_code=%d", index, err_code);
4164
}
4265

43-
static void ntag_reload(app_amiibolink_t *app, uint8_t index){
66+
static void ntag_reload(app_amiibolink_t *app, uint8_t index) {
4467
ntag_t ntag;
4568
ret_code_t err_code = ntag_store_read(app->p_amiibolink_view->index, &ntag);
4669
if (err_code == NRF_SUCCESS) {
4770
ntag_emu_set_tag(&ntag);
4871
}
4972
}
5073

51-
static void ntag_init(){ }
74+
static void ntag_init() {}
5275
#else
5376

5477
static void ntag_update(app_amiibolink_t *app, uint8_t index, ntag_t *p_ntag) {
5578
char path[VFS_MAX_PATH_LEN] = {0};
5679
sprintf(path, "/amiibolink/%02d.bin", index);
57-
vfs_driver_t * p_driver = vfs_get_driver(VFS_DRIVE_EXT);
80+
vfs_driver_t *p_driver = vfs_get_driver(VFS_DRIVE_EXT);
5881
int32_t err_code = p_driver->write_file_data(path, p_ntag->data, NTAG_DATA_SIZE);
5982
NRF_LOG_INFO("ntag_update: index=%d, err_code=%d", index, err_code);
6083
}
6184

62-
static void ntag_reload(app_amiibolink_t *app, uint8_t index){
85+
static void ntag_reload(app_amiibolink_t *app, uint8_t index) {
6386
ntag_t ntag = {0};
6487
char path[VFS_MAX_PATH_LEN] = {0};
6588

6689
memset(&ntag, 0, sizeof(ntag_t));
6790
memset(path, 0, sizeof(path));
6891
sprintf(path, "/amiibolink/%02d.bin", index);
69-
vfs_driver_t * p_driver = vfs_get_driver(VFS_DRIVE_EXT);
92+
vfs_driver_t *p_driver = vfs_get_driver(VFS_DRIVE_EXT);
7093
int32_t err_code = p_driver->read_file_data(path, ntag.data, NTAG_DATA_SIZE);
7194
if (err_code >= NTAG_DATA_SIZE) {
7295
ntag_emu_set_tag(&ntag);
73-
}else{
96+
} else {
7497
NRF_LOG_INFO("ntag_reload: ntag_load_failed. index=%d, err_code=%d", index, err_code);
7598
ntag_store_new_rand(&ntag);
7699
ntag_emu_set_tag(&ntag);
77100
}
78101
}
79102

80-
static void ntag_init(){
81-
vfs_driver_t * p_driver = vfs_get_driver(VFS_DRIVE_EXT);
103+
static void ntag_init() {
104+
vfs_driver_t *p_driver = vfs_get_driver(VFS_DRIVE_EXT);
82105
p_driver->create_dir("/amiibolink");
83106
}
84107

@@ -91,12 +114,9 @@ static void ntag_update_cb(ntag_event_type_t type, void *context, ntag_t *p_ntag
91114
if (type == NTAG_EVENT_TYPE_WRITTEN && app->amiibolink_mode != BLE_AMIIBOLINK_MODE_RANDOM) {
92115
ntag_update(app, app->p_amiibolink_view->index, p_ntag);
93116
mui_update(mui());
94-
} else if (type == NTAG_EVENT_TYPE_READ) {
95-
settings_data_t* p_settings = settings_get_data();
96-
if (p_settings->auto_gen_amiibolink) {
97-
app_timer_stop(m_amiibo_gen_delay_timer);
98-
app_timer_start(m_amiibo_gen_delay_timer, APP_TIMER_TICKS(1000), app);
99-
}
117+
} else if (type == NTAG_EVENT_TYPE_READ && app->amiibolink_mode == BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) {
118+
app_timer_stop(m_amiibo_gen_delay_timer);
119+
app_timer_start(m_amiibo_gen_delay_timer, APP_TIMER_TICKS(1000), app);
100120
}
101121
}
102122

@@ -109,24 +129,21 @@ static void amiibolink_scene_main_event_cb(amiibolink_view_event_t event, amiibo
109129
}
110130
}
111131

112-
static void amiibolink_scene_switch_mode(app_amiibolink_t *app, ble_amiibolink_mode_t mode, uint8_t initial_index){
132+
static void amiibolink_scene_switch_mode(app_amiibolink_t *app, ble_amiibolink_mode_t mode, uint8_t initial_index) {
133+
NRF_LOG_INFO("new mode: %d", mode);
113134
app->amiibolink_mode = mode;
114135
amiibolink_view_set_amiibolink_mode(app->p_amiibolink_view, mode);
115136
amiibolink_view_set_index(app->p_amiibolink_view, initial_index);
116137
amiibolink_view_set_max_size(app->p_amiibolink_view, MAX_NTAG_INDEX);
117138

118139
ble_amiibolink_set_mode(mode);
119140

120-
if(mode == BLE_AMIIBOLINK_MODE_NTAG){
141+
if (mode == BLE_AMIIBOLINK_MODE_NTAG) {
121142
ntag_reload(app, DEFAULT_NTAG_INDEX);
122-
}else if(mode == BLE_AMIIBOLINK_MODE_CYCLE){
143+
} else if (mode == BLE_AMIIBOLINK_MODE_CYCLE) {
123144
ntag_reload(app, initial_index);
124-
}else if(mode == BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN){
125-
settings_data_t* p_settings = settings_get_data();
126-
p_settings->auto_gen_amiibolink = true;
127-
}else if(mode == BLE_AMIIBOLINK_MODE_RANDOM){
128-
settings_data_t* p_settings = settings_get_data();
129-
p_settings->auto_gen_amiibolink = false;
145+
} else if (mode == BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) {
146+
} else if (mode == BLE_AMIIBOLINK_MODE_RANDOM) {
130147
}
131148
}
132149

@@ -138,15 +155,15 @@ static void amiibolink_scene_ble_event_handler(void *ctx, ble_amiibolink_event_t
138155

139156
if (app->amiibolink_mode == BLE_AMIIBOLINK_MODE_CYCLE) {
140157
// save ntag
141-
ntag_update(app, p_view->index, (ntag_t *) data);
158+
ntag_update(app, p_view->index, (ntag_t *)data);
142159
if (p_view->index < p_view->max_size - 1) {
143160
p_view->index++;
144161
} else {
145162
p_view->index = 0;
146163
}
147164
ntag_reload(app, p_view->index);
148-
}else if(app->amiibolink_mode == BLE_AMIIBOLINK_MODE_NTAG){
149-
ntag_update(app, DEFAULT_NTAG_INDEX, (ntag_t *) data);
165+
} else if (app->amiibolink_mode == BLE_AMIIBOLINK_MODE_NTAG) {
166+
ntag_update(app, DEFAULT_NTAG_INDEX, (ntag_t *)data);
150167
}
151168

152169
mui_update(mui());
@@ -189,7 +206,7 @@ void amiibolink_scene_main_on_enter(void *user_data) {
189206
int32_t err_code = app_timer_create(&m_amiibo_gen_delay_timer, APP_TIMER_MODE_SINGLE_SHOT, ntag_generate_cb);
190207
APP_ERROR_CHECK(err_code);
191208

192-
amiibolink_scene_switch_mode(app,app->amiibolink_mode, amiibolink_view_get_index(app->p_amiibolink_view));
209+
amiibolink_scene_switch_mode(app, app->amiibolink_mode, amiibolink_view_get_index(app->p_amiibolink_view));
193210
amiibolink_view_set_event_cb(app->p_amiibolink_view, amiibolink_scene_main_event_cb);
194211
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MAIN);
195212
}

fw/application/src/app/amiibolink/scene/amiibolink_scene_menu.c

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,6 @@
2424
#define AMIIBOLINK_MENU_VER 3
2525
#define AMIIBOLINK_MENU_AUTO_GENERATE 4
2626

27-
static void amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) {
28-
app_amiibolink_t *app = p_msg_box->user_data;
29-
if (event == MUI_MSG_BOX_EVENT_SELECT_CENTER) {
30-
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_LIST);
31-
}
32-
}
33-
34-
static void amiibolink_scene_amiibo_detail_no_key_msg(app_amiibolink_t *app) {
35-
mui_msg_box_set_header(app->p_msg_box, getLangString(_L_AMIIBO_KEY_UNLOADED));
36-
mui_msg_box_set_message(app->p_msg_box, getLangString(_L_UPLOAD_KEY_RETAIL_BIN));
37-
mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_KNOW), NULL);
38-
mui_msg_box_set_btn_focus(app->p_msg_box, 1);
39-
mui_msg_box_set_event_cb(app->p_msg_box, amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb);
40-
41-
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MSG_BOX);
42-
}
43-
4427
void amiibolink_scene_menu_on_event(mui_list_view_event_t event, mui_list_view_t *p_list_view,
4528
mui_list_item_t *p_item) {
4629
app_amiibolink_t *app = p_list_view->user_data;
@@ -55,20 +38,6 @@ void amiibolink_scene_menu_on_event(mui_list_view_event_t event, mui_list_view_t
5538
mui_scene_dispatcher_next_scene(app->p_scene_dispatcher, AMIIBOLINK_SCENE_MENU_VER);
5639
} else if (menu_code == AMIIBOLINK_MENU_BACK_EXIT) {
5740
mini_app_launcher_kill(mini_app_launcher(), MINI_APP_ID_AMIIBOLINK);
58-
} else if (menu_code == AMIIBOLINK_MENU_AUTO_GENERATE) {
59-
settings_data_t *p_settings = settings_get_data();
60-
61-
if (!amiibo_helper_is_key_loaded() && !p_settings->auto_gen_amiibolink) {
62-
amiibolink_scene_amiibo_detail_no_key_msg(app);
63-
return;
64-
}
65-
66-
p_settings->auto_gen_amiibolink = !p_settings->auto_gen_amiibolink;
67-
NRF_LOG_INFO("auto_generate: %d", p_settings->auto_gen_amiibolink);
68-
sprintf(txt, "[%s]", p_settings->auto_gen_amiibolink ? getLangString(_L_ON) : getLangString(_L_OFF));
69-
settings_save();
70-
71-
string_set_str(p_item->sub_text, txt);
7241
}
7342
}
7443
}
@@ -94,9 +63,6 @@ void amiibolink_scene_menu_on_enter(void *user_data) {
9463
mui_list_view_add_item_ext(app->p_list_view, ICON_MODE, getLangString(_L_MODE), txt, (void *)AMIIBOLINK_MENU_MODE);
9564

9665
settings_data_t *p_settings = settings_get_data();
97-
sprintf(txt, "[%s]", p_settings->auto_gen_amiibolink ? getLangString(_L_ON) : getLangString(_L_OFF));
98-
mui_list_view_add_item_ext(app->p_list_view, ICON_AUTO, getLangString(_L_AUTO_RANDOM), txt,
99-
(void *)AMIIBOLINK_MENU_AUTO_GENERATE);
10066

10167
sprintf(txt, "[%s]",
10268
p_settings->amiibo_link_ver == BLE_AMIIBOLINK_VER_V2

fw/application/src/app/amiibolink/view/amiibolink_view.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "db_header.h"
1010

1111
#define ICON_RANDOM 0xe20d
12+
#define ICON_AUTO 0xe1b2
1213
#define ICON_NTAG 0xe1cf
1314
#define ICON_LEFT 0xe1ac
1415
#define ICON_RIGHT 0xe1aa
@@ -28,10 +29,12 @@ static void amiibolink_view_on_draw(mui_view_t *p_view, mui_canvas_t *p_canvas)
2829
mui_canvas_set_draw_color(p_canvas, 0);
2930

3031
// draw mode icon
31-
if (p_amiibolink_view->amiibolink_mode == BLE_AMIIBOLINK_MODE_RANDOM ||
32-
p_amiibolink_view->amiibolink_mode ==BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) {
32+
if (p_amiibolink_view->amiibolink_mode == BLE_AMIIBOLINK_MODE_RANDOM){
3333
mui_canvas_set_font(p_canvas, u8g2_font_siji_t_6x10);
3434
mui_canvas_draw_glyph(p_canvas, 10, y + 10, ICON_RANDOM);
35+
}else if(p_amiibolink_view->amiibolink_mode ==BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) {
36+
mui_canvas_set_font(p_canvas, u8g2_font_siji_t_6x10);
37+
mui_canvas_draw_glyph(p_canvas, 10, y + 10, ICON_AUTO);
3538
} else if (p_amiibolink_view->amiibolink_mode == BLE_AMIIBOLINK_MODE_CYCLE) {
3639

3740
if (p_amiibolink_view->index > 0) {

fw/application/src/mod/ble/ble_amiibolink.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,11 +357,12 @@ void ble_amiloop_received_data(const uint8_t *m_data, size_t length) {
357357
// 0x01 顺序模式
358358
// 0x02 读写模式
359359
uint8_t mode = buff_get_u8(&buffer);
360+
NRF_LOG_INFO("amiloop mode: %d", mode);
360361
ble_amiibolink_mode_t link_mode;
361362
switch (mode)
362363
{
363364
case 0x00:
364-
link_mode = BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN;
365+
link_mode = BLE_AMIIBOLINK_MODE_RANDOM;
365366
NRF_LOG_INFO("amiloop mode: random");
366367
break;
367368

@@ -371,8 +372,8 @@ void ble_amiloop_received_data(const uint8_t *m_data, size_t length) {
371372
break;
372373

373374
case 0x02:
374-
link_mode = BLE_AMIIBOLINK_MODE_NTAG;
375-
NRF_LOG_INFO("amiloop mode: ntag");
375+
link_mode = BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN;
376+
NRF_LOG_INFO("amiloop mode: random auto gen");
376377
break;
377378

378379
default:

fw/application/src/mod/settings.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ typedef struct {
1212
uint8_t sleep_timeout_sec;
1313
bool dirty;
1414
bool auto_gen_amiibo;
15-
bool auto_gen_amiibolink;
15+
bool auto_gen_amiibolink; //deprecated, keep for capability issue
1616
bool skip_driver_select;
1717
bool bat_mode;
1818
ble_amiibolink_ver_t amiibo_link_ver;

0 commit comments

Comments
 (0)