Eric Betts 2 лет назад
Родитель
Сommit
86ae5e3108
1 измененных файлов с 10 добавлено и 32 удалено
  1. 10 32
      seader_worker.c

+ 10 - 32
seader_worker.c

@@ -265,11 +265,7 @@ void seader_send_card_detected(SeaderUartBridge* seader_uart, CardDetails_t* car
     ASN_STRUCT_FREE(asn_DEF_Payload, payload);
 }
 
-bool seader_unpack_pacs(
-    SeaderWorker* seader_worker,
-    SeaderCredential* seader_credential,
-    uint8_t* buf,
-    size_t size) {
+bool seader_unpack_pacs(SeaderCredential* seader_credential, uint8_t* buf, size_t size) {
     PAC_t* pac = 0;
     pac = calloc(1, sizeof *pac);
     assert(pac);
@@ -303,9 +299,6 @@ bool seader_unpack_pacs(
             rtn = true;
         } else {
             // PACS too big (probably bad data)
-            if(seader_worker->callback) {
-                seader_worker->callback(SeaderWorkerEventFail, seader_worker->context);
-            }
         }
     }
 
@@ -365,20 +358,17 @@ bool seader_parse_sam_response(Seader* seader, SamResponse_t* samResponse) {
             requestPacs = false;
         } else {
             FURI_LOG_D(TAG, "samResponse %d, no action", samResponse->size);
-            if(seader_worker->callback) {
-                seader_worker->callback(SeaderWorkerEventFail, seader_worker->context);
-            }
         }
     } else if(seader_parse_version(seader_worker, samResponse->buf, samResponse->size)) {
         // no-op
-    } else if(seader_unpack_pacs(seader_worker, credential, samResponse->buf, samResponse->size)) {
+    } else if(seader_unpack_pacs(credential, samResponse->buf, samResponse->size)) {
         view_dispatcher_send_custom_event(seader->view_dispatcher, SeaderCustomEventWorkerExit);
     } else {
         memset(display, 0, sizeof(display));
         for(uint8_t i = 0; i < samResponse->size; i++) {
             snprintf(display + (i * 2), sizeof(display), "%02x", samResponse->buf[i]);
         }
-        // FURI_LOG_D(TAG, "unknown samResponse %d: %s", samResponse->size, display);
+        FURI_LOG_D(TAG, "Unknown samResponse %d: %s", samResponse->size, display);
     }
 
     return false;
@@ -681,9 +671,6 @@ bool seader_worker_state_machine(
         break;
     case Payload_PR_errorResponse:
         FURI_LOG_W(TAG, "Error Response");
-        if(seader->worker->callback) {
-            seader->worker->callback(SeaderWorkerEventFail, seader->worker->context);
-        }
         processed = true;
         break;
     default:
@@ -847,9 +834,7 @@ NfcCommand seader_worker_card_detect(
     return NfcCommandContinue;
 }
 
-SeaderPollerEventType
-    seader_worker_poller_conversation(Seader* seader, const Iso14443_4aPoller* iso14443_4a_poller) {
-    SeaderPollerEventType stage = SeaderPollerEventTypeConversation;
+void seader_worker_poller_conversation(Seader* seader, const Iso14443_4aPoller* iso14443_4a_poller) {
     SeaderWorker* seader_worker = seader->worker;
 
     if(furi_mutex_acquire(seader_worker->mq_mutex, 0) == FuriStatusOk) {
@@ -863,27 +848,23 @@ SeaderPollerEventType
                 furi_message_queue_get(seader_worker->messages, &seaderApdu, FuriWaitForever);
             if(status != FuriStatusOk) {
                 FURI_LOG_W(TAG, "furi_message_queue_get fail %d", status);
-                if(seader_worker->callback) {
-                    seader_worker->callback(SeaderWorkerEventFail, seader_worker->context);
-                }
-                return SeaderPollerEventTypeComplete;
+                seader_worker->stage = SeaderPollerEventTypeComplete;
             }
             FURI_LOG_D(TAG, "Conversation: message length %d", seaderApdu.len);
 
             if(seader_process_success_response_i(
                    seader, seaderApdu.buf, seaderApdu.len, true, iso14443_4a_poller)) {
+                // no-op
             } else {
                 FURI_LOG_I(TAG, "Response false");
-                stage = SeaderPollerEventTypeComplete;
+                seader_worker->stage = SeaderPollerEventTypeComplete;
             }
         }
         furi_mutex_release(seader_worker->mq_mutex);
     } else {
-        furi_delay_ms(100);
+        // furi_delay_ms(100);
         furi_thread_set_current_priority(FuriThreadPriorityLowest);
     }
-
-    return stage;
 }
 
 NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void* context) {
@@ -918,7 +899,7 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void
             furi_thread_set_current_priority(FuriThreadPriorityLowest);
             seader_worker->stage = SeaderPollerEventTypeConversation;
         } else if(seader_worker->stage == SeaderPollerEventTypeConversation) {
-            seader_worker->stage = seader_worker_poller_conversation(seader, iso14443_4a_poller);
+            seader_worker_poller_conversation(seader, iso14443_4a_poller);
         } else if(seader_worker->stage == SeaderPollerEventTypeComplete) {
             FURI_LOG_D(TAG, "Complete");
             ret = NfcCommandStop;
@@ -953,15 +934,12 @@ NfcCommand seader_worker_poller_callback_picopass(PicopassPollerEvent event, voi
             furi_thread_set_current_priority(FuriThreadPriorityLowest);
             seader_worker->stage = SeaderPollerEventTypeConversation;
         } else if(seader_worker->stage == SeaderPollerEventTypeConversation) {
-            seader_worker->stage = seader_worker_poller_conversation(seader, NULL);
+            seader_worker_poller_conversation(seader, NULL);
         } else if(seader_worker->stage == SeaderPollerEventTypeComplete) {
             FURI_LOG_D(TAG, "Complete");
             ret = NfcCommandStop;
         }
     } else if(event.type == PicopassPollerEventTypeFail) {
-        if(seader_worker->callback) {
-            seader_worker->callback(SeaderWorkerEventFail, seader_worker->context);
-        }
     } else {
         FURI_LOG_D(TAG, "picopass event type %x", event.type);
     }