Eric Betts 2 лет назад
Родитель
Сommit
0aaaf5a5f4

+ 4 - 0
scenes/seader_scene_read_14a.c

@@ -32,6 +32,10 @@ bool seader_scene_read_14a_on_event(void* context, SceneManagerEvent event) {
             seader->credential->type = SeaderCredentialType14A;
             scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);
             consumed = true;
+        } else if(event.event == SeaderCustomEventPollerDetect) {
+            Popup* popup = seader->popup;
+            popup_set_header(popup, "DON'T\nMOVE", 68, 30, AlignLeft, AlignTop);
+            consumed = true;
         } else if(event.event == SeaderCustomEventPollerSuccess) {
             seader->credential->type = SeaderCredentialType14A;
             scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);

+ 4 - 0
scenes/seader_scene_read_mfc.c

@@ -36,6 +36,10 @@ bool seader_scene_read_mfc_on_event(void* context, SceneManagerEvent event) {
             seader->credential->type = SeaderCredentialTypeMifareClassic;
             scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);
             consumed = true;
+        } else if(event.event == SeaderCustomEventPollerDetect) {
+            Popup* popup = seader->popup;
+            popup_set_header(popup, "DON'T\nMOVE", 68, 30, AlignLeft, AlignTop);
+            consumed = true;
         } else if(event.event == SeaderCustomEventPollerSuccess) {
             seader->credential->type = SeaderCredentialTypeMifareClassic;
             scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);

+ 4 - 0
scenes/seader_scene_read_picopass.c

@@ -31,6 +31,10 @@ bool seader_scene_read_picopass_on_event(void* context, SceneManagerEvent event)
             seader->credential->type = SeaderCredentialTypePicopass;
             scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);
             consumed = true;
+        } else if(event.event == SeaderCustomEventPollerDetect) {
+            Popup* popup = seader->popup;
+            popup_set_header(popup, "DON'T\nMOVE", 68, 30, AlignLeft, AlignTop);
+            consumed = true;
         } else if(event.event == SeaderCustomEventPollerSuccess) {
             seader->credential->type = SeaderCredentialTypePicopass;
             scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);

+ 1 - 0
seader_i.h

@@ -69,6 +69,7 @@ enum SeaderCustomEvent {
     SeaderCustomEventByteInputDone,
     SeaderCustomEventTextInputDone,
 
+    SeaderCustomEventPollerDetect,
     SeaderCustomEventPollerSuccess,
 };
 

+ 8 - 0
seader_worker.c

@@ -265,6 +265,9 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void
 
     if(iso14443_4a_event->type == Iso14443_4aPollerEventTypeReady) {
         if(seader_worker->stage == SeaderPollerEventTypeCardDetect) {
+            view_dispatcher_send_custom_event(
+                seader->view_dispatcher, SeaderCustomEventPollerDetect);
+
             nfc_device_set_data(
                 seader->nfc_device, NfcProtocolIso14443_4a, nfc_poller_get_data(seader->poller));
 
@@ -319,6 +322,9 @@ NfcCommand seader_worker_poller_callback_mfc(NfcGenericEvent event, void* contex
 
     if(mfc_event->type == MfClassicPollerEventTypeSuccess) {
         if(seader_worker->stage == SeaderPollerEventTypeCardDetect) {
+            view_dispatcher_send_custom_event(
+                seader->view_dispatcher, SeaderCustomEventPollerDetect);
+
             const MfClassicData* mfc_data = nfc_poller_get_data(seader->poller);
             uint8_t sak = iso14443_3a_get_sak(mfc_data->iso14443_3a_data);
             size_t uid_len = 0;
@@ -354,6 +360,8 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi
         seader_worker->stage = SeaderPollerEventTypeCardDetect;
     } else if(event.type == PicopassPollerEventTypeSuccess) {
         if(seader_worker->stage == SeaderPollerEventTypeCardDetect) {
+            view_dispatcher_send_custom_event(
+                seader->view_dispatcher, SeaderCustomEventPollerDetect);
             uint8_t* csn = picopass_poller_get_csn(instance);
             seader_worker_card_detect(seader, 0, NULL, csn, sizeof(PicopassSerialNum), NULL, 0);
             furi_thread_set_current_priority(FuriThreadPriorityLowest);