Eric Betts 2 лет назад
Родитель
Сommit
7b012c4293
1 измененных файлов с 5 добавлено и 12 удалено
  1. 5 12
      seader_worker.c

+ 5 - 12
seader_worker.c

@@ -802,6 +802,9 @@ NfcCommand seader_worker_card_detect(
     UNUSED(ats);
     UNUSED(ats_len);
 
+    // We're telling the SAM we've seen a new card, so reset out requestPacs check
+    requestPacs = true;
+
     SeaderWorker* seader_worker = seader->worker;
     SeaderUartBridge* seader_uart = seader_worker->uart;
     CardDetails_t* cardDetails = 0;
@@ -879,9 +882,6 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void
 
     if(iso14443_4a_event->type == Iso14443_4aPollerEventTypeReady) {
         if(seader_worker->stage == SeaderPollerEventTypeCardDetect) {
-            FURI_LOG_D(TAG, "Card Detect");
-            requestPacs = true;
-
             nfc_device_set_data(
                 seader->nfc_device, NfcProtocolIso14443_4a, nfc_poller_get_data(seader->poller));
 
@@ -920,15 +920,8 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi
     SeaderWorker* seader_worker = seader->worker;
     PicopassPoller* instance = seader->picopass_poller;
 
-    if(event.type == PicopassPollerEventTypeRequestMode) {
-        // Is this a good place to reset?
-        seader_worker->stage = SeaderPollerEventTypeCardDetect;
-        requestPacs = true;
-    } else if(event.type == PicopassPollerEventTypeCardDetected) {
-        // No-op. I can't actually get the CSN at this point it seems.
-    } else if(event.type == PicopassPollerEventTypeSuccess) {
+    if(event.type == PicopassPollerEventTypeSuccess) {
         if(seader_worker->stage == SeaderPollerEventTypeCardDetect) {
-            FURI_LOG_D(TAG, "Card Detect");
             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);
@@ -936,10 +929,10 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi
         } else if(seader_worker->stage == SeaderPollerEventTypeConversation) {
             seader_worker_poller_conversation(seader, NULL);
         } else if(seader_worker->stage == SeaderPollerEventTypeComplete) {
-            FURI_LOG_D(TAG, "Complete");
             ret = NfcCommandStop;
         }
     } else if(event.type == PicopassPollerEventTypeFail) {
+        ret = NfcCommandStop;
     } else {
         FURI_LOG_D(TAG, "picopass event type %x", event.type);
     }