diff --git a/seader_worker.c b/seader_worker.c index f92721e..bf6f944 100644 --- a/seader_worker.c +++ b/seader_worker.c @@ -231,9 +231,9 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void } else if(seader_worker->stage == SeaderPollerEventTypeComplete) { ret = NfcCommandStop; } - } else { - // add failure callback if failure type - FURI_LOG_D(TAG, "14a event type %x", iso14443_4a_event->type); + } else if(iso14443_4a_event->type == Iso14443_4aPollerEventTypeError) { + ret = NfcCommandStop; + view_dispatcher_send_custom_event(seader->view_dispatcher, SeaderCustomEventWorkerExit); } return ret; @@ -249,7 +249,9 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi PicopassPoller* instance = seader->picopass_poller; SeaderPollerContainer spc = {.picopass_poller = instance}; - if(event.type == PicopassPollerEventTypeSuccess) { + if(event.type == PicopassPollerEventTypeCardDetected) { + seader_worker->stage = SeaderPollerEventTypeCardDetect; + } else if(event.type == PicopassPollerEventTypeSuccess) { if(seader_worker->stage == SeaderPollerEventTypeCardDetect) { uint8_t* csn = picopass_poller_get_csn(instance); seader_worker_card_detect(seader, 0, NULL, csn, sizeof(PicopassSerialNum), NULL, 0); @@ -262,6 +264,7 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi } } else if(event.type == PicopassPollerEventTypeFail) { ret = NfcCommandStop; + view_dispatcher_send_custom_event(seader->view_dispatcher, SeaderCustomEventWorkerExit); } else { FURI_LOG_D(TAG, "picopass event type %x", event.type); }