Просмотр исходного кода

[FL-3667] NFC Magic fix gen4 detection (#71)

Co-authored-by: あく <alleteam@gmail.com>
gornekich 2 лет назад
Родитель
Сommit
1a0e729a36

+ 3 - 0
.catalog/changelog.md

@@ -1,3 +1,6 @@
+## 1.3
+ - Fix incorrect gen4 password usage
+
 ## 1.2
 ## 1.2
  - Minimal changes for recent API updates
  - Minimal changes for recent API updates
 
 

+ 1 - 1
application.fam

@@ -10,7 +10,7 @@ App(
     ],
     ],
     stack_size=4 * 1024,
     stack_size=4 * 1024,
     fap_description="Application for writing to NFC tags with modifiable sector 0",
     fap_description="Application for writing to NFC tags with modifiable sector 0",
-    fap_version="1.2",
+    fap_version="1.3",
     fap_icon="assets/125_10px.png",
     fap_icon="assets/125_10px.png",
     fap_category="NFC",
     fap_category="NFC",
     fap_private_libs=[
     fap_private_libs=[

+ 1 - 0
lib/magic/protocols/gen4/gen4_poller.c

@@ -194,6 +194,7 @@ NfcCommand gen4_poller_wipe_handler(Gen4Poller* instance) {
                 instance->state = Gen4PollerStateFail;
                 instance->state = Gen4PollerStateFail;
                 break;
                 break;
             }
             }
+            instance->password = 0;
             error = gen4_poller_write_block(
             error = gen4_poller_write_block(
                 instance, instance->password, instance->current_block, gen4_poller_default_block_0);
                 instance, instance->password, instance->current_block, gen4_poller_default_block_0);
             if(error != Gen4PollerErrorNone) {
             if(error != Gen4PollerErrorNone) {

+ 1 - 0
nfc_magic_app.c

@@ -23,6 +23,7 @@ void nfc_magic_app_tick_event_callback(void* context) {
 
 
 void nfc_magic_app_show_loading_popup(void* context, bool show) {
 void nfc_magic_app_show_loading_popup(void* context, bool show) {
     NfcMagicApp* instance = context;
     NfcMagicApp* instance = context;
+
     if(show) {
     if(show) {
         // Raise timer priority so that animations can play
         // Raise timer priority so that animations can play
         furi_timer_set_thread_priority(FuriTimerThreadPriorityElevated);
         furi_timer_set_thread_priority(FuriTimerThreadPriorityElevated);

+ 2 - 0
scenes/nfc_magic_scene_change_key.c

@@ -59,6 +59,7 @@ void nfc_magic_scene_change_key_on_enter(void* context) {
     nfc_magic_app_blink_start(instance);
     nfc_magic_app_blink_start(instance);
 
 
     instance->gen4_poller = gen4_poller_alloc(instance->nfc);
     instance->gen4_poller = gen4_poller_alloc(instance->nfc);
+    gen4_poller_set_password(instance->gen4_poller, instance->gen4_password);
     gen4_poller_start(
     gen4_poller_start(
         instance->gen4_poller, nfc_mafic_scene_change_key_gen4_poller_callback, instance);
         instance->gen4_poller, nfc_mafic_scene_change_key_gen4_poller_callback, instance);
 }
 }
@@ -83,6 +84,7 @@ bool nfc_magic_scene_change_key_on_event(void* context, SceneManagerEvent event)
             nfc_magic_scene_change_key_setup_view(instance);
             nfc_magic_scene_change_key_setup_view(instance);
             consumed = true;
             consumed = true;
         } else if(event.event == NfcMagicCustomEventWorkerSuccess) {
         } else if(event.event == NfcMagicCustomEventWorkerSuccess) {
+            instance->gen4_password = instance->gen4_password_new;
             scene_manager_next_scene(instance->scene_manager, NfcMagicSceneSuccess);
             scene_manager_next_scene(instance->scene_manager, NfcMagicSceneSuccess);
             consumed = true;
             consumed = true;
         } else if(event.event == NfcMagicCustomEventWorkerFail) {
         } else if(event.event == NfcMagicCustomEventWorkerFail) {

+ 1 - 0
scenes/nfc_magic_scene_check.c

@@ -24,6 +24,7 @@ void nfc_magic_scene_check_on_enter(void* context) {
     nfc_magic_app_blink_start(instance);
     nfc_magic_app_blink_start(instance);
 
 
     nfc_magic_scanner_start(instance->scanner, nfc_magic_check_worker_callback, instance);
     nfc_magic_scanner_start(instance->scanner, nfc_magic_check_worker_callback, instance);
+    nfc_magic_scanner_set_gen4_password(instance->scanner, instance->gen4_password);
 
 
     view_dispatcher_switch_to_view(instance->view_dispatcher, NfcMagicAppViewPopup);
     view_dispatcher_switch_to_view(instance->view_dispatcher, NfcMagicAppViewPopup);
 }
 }

+ 1 - 0
scenes/nfc_magic_scene_write.c

@@ -93,6 +93,7 @@ void nfc_magic_scene_write_on_enter(void* context) {
             instance->gen1a_poller, nfc_mafic_scene_write_gen1_poller_callback, instance);
             instance->gen1a_poller, nfc_mafic_scene_write_gen1_poller_callback, instance);
     } else {
     } else {
         instance->gen4_poller = gen4_poller_alloc(instance->nfc);
         instance->gen4_poller = gen4_poller_alloc(instance->nfc);
+        gen4_poller_set_password(instance->gen4_poller, instance->gen4_password);
         gen4_poller_start(
         gen4_poller_start(
             instance->gen4_poller, nfc_mafic_scene_write_gen4_poller_callback, instance);
             instance->gen4_poller, nfc_mafic_scene_write_gen4_poller_callback, instance);
     }
     }