diff --git a/scenes/seader_scene_read_card_success.c b/scenes/seader_scene_read_card_success.c index bb1cec0..2fcd5d4 100644 --- a/scenes/seader_scene_read_card_success.c +++ b/scenes/seader_scene_read_card_success.c @@ -51,6 +51,11 @@ void seader_scene_read_card_success_on_enter(void* context) { } } else { furi_string_set(type_str, "Read error"); + + SeaderWorker* seader_worker = seader->worker; + SeaderUartBridge* seader_uart = seader_worker->uart; + seader_t_1_reset(); + seader_ccid_check_for_sam(seader_uart); } widget_add_button_element( diff --git a/t_1.c b/t_1.c index 70a7780..4ee9baf 100644 --- a/t_1.c +++ b/t_1.c @@ -31,6 +31,12 @@ uint8_t seader_next_cpcb() { return cPCB; } +void seader_t_1_reset() { + NAD = 0x00; + dPCB = 0x40; + cPCB = 0x00; +} + void seader_t_1_set_IFSD(Seader* seader) { SeaderWorker* seader_worker = seader->worker; SeaderUartBridge* seader_uart = seader_worker->uart; diff --git a/t_1.h b/t_1.h index 7f8355a..98129fa 100644 --- a/t_1.h +++ b/t_1.h @@ -7,3 +7,4 @@ typedef struct CCID_Message CCID_Message; void seader_send_t1(SeaderUartBridge* seader_uart, uint8_t* apdu, size_t len); bool seader_recv_t1(Seader* seader, CCID_Message* message); void seader_t_1_set_IFSD(Seader* seader); +void seader_t_1_reset();