push to next UI on error

This commit is contained in:
Eric Betts committed 2023-11-21 17:04:56 -08:00
1 parent d15be5cbb2
commit 08e63aa8c2
2 files changed
+12 -3

No files matched your search

+10 -3
View File
@@ -182,7 +182,8 @@ void seader_send_card_detected(SeaderUartBridge* seader_uart, CardDetails_t* car
ASN_STRUCT_FREE(asn_DEF_Payload, payload);
}
bool seader_unpack_pacs(SeaderCredential* seader_credential, uint8_t* buf, size_t size) {
bool seader_unpack_pacs(Seader* seader, uint8_t* buf, size_t size) {
SeaderCredential* seader_credential = seader->credential;
PAC_t* pac = 0;
pac = calloc(1, sizeof *pac);
assert(pac);
@@ -216,6 +217,8 @@ bool seader_unpack_pacs(SeaderCredential* seader_credential, uint8_t* buf, size_
rtn = true;
} else {
// PACS too big (probably bad data)
view_dispatcher_send_custom_event(
seader->view_dispatcher, SeaderCustomEventWorkerExit);
}
}
@@ -266,7 +269,7 @@ bool seader_parse_version(SeaderWorker* seader_worker, uint8_t* buf, size_t size
bool seader_parse_sam_response(Seader* seader, SamResponse_t* samResponse) {
SeaderWorker* seader_worker = seader->worker;
SeaderUartBridge* seader_uart = seader_worker->uart;
SeaderCredential* credential = seader->credential;
FURI_LOG_D(TAG, "seader_parse_sam_response");
if(samResponse->size == 0) {
if(requestPacs) {
@@ -275,10 +278,12 @@ bool seader_parse_sam_response(Seader* seader, SamResponse_t* samResponse) {
requestPacs = false;
} else {
FURI_LOG_D(TAG, "samResponse %d, no action", samResponse->size);
view_dispatcher_send_custom_event(
seader->view_dispatcher, SeaderCustomEventWorkerExit);
}
} else if(seader_parse_version(seader_worker, samResponse->buf, samResponse->size)) {
// no-op
} else if(seader_unpack_pacs(credential, samResponse->buf, samResponse->size)) {
} else if(seader_unpack_pacs(seader, samResponse->buf, samResponse->size)) {
view_dispatcher_send_custom_event(seader->view_dispatcher, SeaderCustomEventWorkerExit);
} else {
memset(display, 0, sizeof(display));
@@ -297,6 +302,7 @@ bool seader_parse_response(Seader* seader, Response_t* response) {
seader_parse_sam_response(seader, &response->choice.samResponse);
break;
default:
FURI_LOG_D(TAG, "non-sam response");
break;
};
return false;
@@ -591,6 +597,7 @@ bool seader_worker_state_machine(
case Payload_PR_errorResponse:
FURI_LOG_W(TAG, "Error Response");
processed = true;
view_dispatcher_send_custom_event(seader->view_dispatcher, SeaderCustomEventWorkerExit);
break;
default:
FURI_LOG_W(TAG, "unhandled payload");
+2
View File
@@ -182,6 +182,8 @@ void seader_worker_poller_conversation(Seader* seader, SeaderPollerContainer* sp
if(status != FuriStatusOk) {
FURI_LOG_W(TAG, "furi_message_queue_get fail %d", status);
seader_worker->stage = SeaderPollerEventTypeComplete;
view_dispatcher_send_custom_event(
seader->view_dispatcher, SeaderCustomEventWorkerExit);
}
if(seader_process_success_response_i(