diff --git a/t_1.c b/t_1.c index d360e9b..52f55a1 100644 --- a/t_1.c +++ b/t_1.c @@ -195,11 +195,11 @@ bool seader_recv_t1(Seader* seader, CCID_Message* message) { FURI_LOG_W(TAG, "Invalid T=1 frame: too short"); return false; } - //uint8_t NAD = message->payload[0]; + uint8_t NAD = message->payload[0]; uint8_t rPCB = message->payload[1]; uint8_t LEN = message->payload[2]; - //uint8_t LRC = message->payload[3 + LEN]; - //FURI_LOG_D(TAG, "NAD: %02X, rPCB: %02X, LEN: %02X, LRC: %02X", NAD, rPCB, LEN, LRC); + uint8_t LRC = message->payload[3 + LEN]; + FURI_LOG_D(TAG, "NAD: %02X, rPCB: %02X, LEN: %02X, LRC: %02X", NAD, rPCB, LEN, LRC); if(rPCB == 0xE1) { // S(IFS response) @@ -230,6 +230,7 @@ bool seader_recv_t1(Seader* seader, CCID_Message* message) { } if(seader_validate_lrc(message->payload, message->dwLength) == false) { + FURI_LOG_W(TAG, "Invalid T=1 frame: LRC mismatch"); return false; } @@ -238,12 +239,12 @@ bool seader_recv_t1(Seader* seader, CCID_Message* message) { message->dwLength = LEN; if(message->dwLength == 0) { - //FURI_LOG_D(TAG, "Received T=1 frame with no data"); + FURI_LOG_D(TAG, "Received T=1 frame with no data"); return true; } return seader_worker_process_sam_message(seader, message->payload, message->dwLength); } else if(rPCB == (cPCB | MORE_BIT)) { - //FURI_LOG_D(TAG, "Received T=1 frame with more bit set"); + FURI_LOG_D(TAG, "Received T=1 frame with more bit set"); if(seader_t_1_rx_buffer == NULL) { seader_t_1_rx_buffer = bit_buffer_alloc(512); } @@ -261,14 +262,12 @@ bool seader_recv_t1(Seader* seader, CCID_Message* message) { uint8_t R_SEQ = (rPCB & R_SEQUENCE_NUMBER_MASK) >> 4; uint8_t I_SEQ = (dPCB ^ 0x40) >> 6; if(R_SEQ != I_SEQ) { - /* FURI_LOG_D( TAG, "Received R-Block: Incorrect sequence. Expected: %02X, Received: %02X", I_SEQ, R_SEQ); - */ // When this happens, the flipper freezes if it is doing NFC and my attempts to do events to stop that have failed return false; } diff --git a/uart.c b/uart.c index 52e70f4..e438171 100644 --- a/uart.c +++ b/uart.c @@ -120,7 +120,10 @@ size_t seader_uart_process_buffer_raw(Seader* seader, uint8_t* cmd, size_t cmd_l FURI_LOG_I(TAG, "seader_uart_process_buffer_raw %d bytes: %s", cmd_len, display); if(hasSAM) { - seader_worker_process_sam_message(seader, cmd, cmd_len); + CCID_Message message; + message.payload = cmd; + message.dwLength = cmd_len; + seader_recv_t1(seader, &message); return cmd_len; }