Remove credential from seader worker and only leave in base struct

This commit is contained in:
Eric Betts
2023-11-17 17:30:02 -08:00
parent 308e7d2dc8
commit bc211e7ead
7 changed files with 13 additions and 30 deletions
+1 -2
View File
@@ -16,8 +16,7 @@ void seader_scene_card_menu_submenu_callback(void* context, uint32_t index) {
void seader_scene_card_menu_on_enter(void* context) {
Seader* seader = context;
SeaderWorker* seader_worker = seader->worker;
SeaderCredential* credential = seader_worker->credential;
SeaderCredential* credential = seader->credential;
Submenu* submenu = seader->submenu;
submenu_add_item(
+1
View File
@@ -27,6 +27,7 @@ bool seader_scene_read_14a_on_event(void* context, SceneManagerEvent event) {
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == SeaderCustomEventWorkerExit) {
seader_credential_clear(seader->credential);
seader->credential->type = SeaderCredentialType14A;
scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);
consumed = true;
+1
View File
@@ -25,6 +25,7 @@ bool seader_scene_read_picopass_on_event(void* context, SceneManagerEvent event)
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == SeaderCustomEventWorkerExit) {
seader_credential_clear(seader->credential);
seader->credential->type = SeaderCredentialTypePicopass;
scene_manager_next_scene(seader->scene_manager, SeaderSceneReadCardSuccess);
consumed = true;
-1
View File
@@ -35,7 +35,6 @@ void seader_scene_start_on_enter(void* context) {
seader->worker,
SeaderWorkerStateCheckSam,
seader->uart,
seader->credential,
seader_sam_check_worker_callback,
seader);
view_dispatcher_switch_to_view(seader->view_dispatcher, SeaderViewPopup);
+10 -25
View File
@@ -68,17 +68,14 @@ void seader_worker_start(
SeaderWorker* seader_worker,
SeaderWorkerState state,
SeaderUartBridge* uart,
SeaderCredential* credential,
SeaderWorkerCallback callback,
void* context) {
furi_assert(seader_worker);
furi_assert(uart);
furi_assert(credential);
seader_worker->callback = callback;
seader_worker->context = context;
seader_worker->uart = uart;
seader_worker->credential = credential;
seader_worker_change_state(seader_worker, state);
furi_thread_start(seader_worker->thread);
}
@@ -376,9 +373,10 @@ bool seader_parse_version(SeaderWorker* seader_worker, uint8_t* buf, size_t size
return rtn;
}
bool seader_parse_sam_response(SeaderWorker* seader_worker, SamResponse_t* samResponse) {
bool seader_parse_sam_response(Seader* seader, SamResponse_t* samResponse) {
SeaderWorker* seader_worker = seader->worker;
SeaderUartBridge* seader_uart = seader_worker->uart;
SeaderCredential* credential = seader_worker->credential;
SeaderCredential* credential = seader->credential;
if(samResponse->size == 0) {
if(requestPacs) {
@@ -408,10 +406,10 @@ bool seader_parse_sam_response(SeaderWorker* seader_worker, SamResponse_t* samRe
return false;
}
bool seader_parse_response(SeaderWorker* seader_worker, Response_t* response) {
bool seader_parse_response(Seader* seader, Response_t* response) {
switch(response->present) {
case Response_PR_samResponse:
seader_parse_sam_response(seader_worker, &response->choice.samResponse);
seader_parse_sam_response(seader, &response->choice.samResponse);
break;
default:
break;
@@ -632,12 +630,11 @@ NfcCommand seader_parse_nfc_command(Seader* seader, NFCCommand_t* nfcCommand) {
}
bool seader_worker_state_machine(Seader* seader, Payload_t* payload, bool online) {
SeaderWorker* seader_worker = seader->worker;
bool processed = false;
switch(payload->present) {
case Payload_PR_response:
seader_parse_response(seader_worker, &payload->choice.response);
seader_parse_response(seader, &payload->choice.response);
processed = true;
break;
case Payload_PR_nfcCommand:
@@ -756,24 +753,9 @@ int32_t seader_worker_task(void* context) {
SeaderUartBridge* seader_uart = seader_worker->uart;
if(seader_worker->state == SeaderWorkerStateCheckSam) {
FURI_LOG_D(TAG, "Check for SAM");
seader_ccid_check_for_sam(seader_uart);
} else if(seader_worker->state == SeaderWorkerStateReadPicopass) {
FURI_LOG_D(TAG, "Read Picopass");
requestPacs = true;
seader_credential_clear(seader_worker->credential);
seader_worker->credential->type = SeaderCredentialTypePicopass;
} else if(seader_worker->state == SeaderWorkerStateRead14a) {
FURI_LOG_D(TAG, "Read 14a");
requestPacs = true;
seader_credential_clear(seader_worker->credential);
seader_worker->credential->type = SeaderCredentialType14A;
// seader_nfc_scene_field_on_enter();
if(!seader_detect_nfc(seader_worker)) {
// Turn off if cancelled / no card found
// seader_nfc_scene_field_on_exit();
}
}
FURI_LOG_D(TAG, "Worker Task Complete");
seader_worker_change_state(seader_worker, SeaderWorkerStateReady);
return 0;
@@ -891,6 +873,8 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void
if(iso14443_4a_event->type == Iso14443_4aPollerEventTypeReady) {
if(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));
@@ -908,6 +892,7 @@ NfcCommand seader_worker_poller_callback_iso14443_4a(NfcGenericEvent event, void
furi_thread_set_current_priority(FuriThreadPriorityLowest);
stage = SeaderPollerEventTypeConversation;
} else if(stage == SeaderPollerEventTypeConversation) {
FURI_LOG_D(TAG, "14a conversation");
stage = seader_worker_poller_conversation(seader);
} else if(stage == SeaderPollerEventTypeComplete) {
FURI_LOG_D(TAG, "Complete");
-1
View File
@@ -47,7 +47,6 @@ void seader_worker_start(
SeaderWorker* seader_worker,
SeaderWorkerState state,
SeaderUartBridge* uart,
SeaderCredential* credential,
SeaderWorkerCallback callback,
void* context);
-1
View File
@@ -24,7 +24,6 @@ struct SeaderWorker {
FuriMutex* mq_mutex;
SeaderUartBridge* uart;
SeaderCredential* credential;
SeaderWorkerCallback callback;
void* context;