mirror of
https://github.com/bettse/seader.git
synced 2026-10-23 08:43:35 +00:00
push to next UI on error
This commit is contained in:
1 parent
d15be5cbb2
commit
08e63aa8c2
2 files changed
+12
-3
No files matched your search
@@ -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");
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in new issue
Block a user