diff --git a/lib/nfc/protocols/mf_plus/mf_plus_i.c b/lib/nfc/protocols/mf_plus/mf_plus_i.c index ada4dd952..a481f94c4 100644 --- a/lib/nfc/protocols/mf_plus/mf_plus_i.c +++ b/lib/nfc/protocols/mf_plus/mf_plus_i.c @@ -32,11 +32,13 @@ bool mf_plus_get_type_from_version( mf_plus_data->type = MfPlusTypePlus; mf_plus_data->size = MfPlusSize2K; mf_plus_data->security_level = MfPlusSecurityLevel2; + FURI_LOG_D(TAG, "Mifare Plus 2K SL2"); } else if(iso14443_4a_data->iso14443_3a_data->sak == 0x11) { // Mifare Plus 4K SL3 mf_plus_data->type = MfPlusTypePlus; mf_plus_data->size = MfPlusSize4K; mf_plus_data->security_level = MfPlusSecurityLevel3; + FURI_LOG_D(TAG, "Mifare Plus 4K SL3"); } else { // Mifare Plus EV1/EV2 @@ -44,12 +46,15 @@ bool mf_plus_get_type_from_version( switch(mf_plus_data->version.hw_major) { case 0x11: mf_plus_data->type = MfPlusTypeEV1; + FURI_LOG_D(TAG, "Mifare Plus EV1"); break; case 0x22: mf_plus_data->type = MfPlusTypeEV2; + FURI_LOG_D(TAG, "Mifare Plus EV2"); break; default: mf_plus_data->type = MfPlusTypeUnknown; + FURI_LOG_D(TAG, "Unknown Mifare Plus EV type"); break; } @@ -57,12 +62,15 @@ bool mf_plus_get_type_from_version( switch(mf_plus_data->version.hw_storage) { case 0x16: mf_plus_data->size = MfPlusSize2K; + FURI_LOG_D(TAG, "2K"); break; case 0x18: mf_plus_data->size = MfPlusSize4K; + FURI_LOG_D(TAG, "4K"); break; default: mf_plus_data->size = MfPlusSizeUnknown; + FURI_LOG_D(TAG, "Unknown storage size"); break; } @@ -70,9 +78,11 @@ bool mf_plus_get_type_from_version( if(iso14443_4a_data->iso14443_3a_data->sak == 0x20) { // Mifare Plus EV1/2 SL3 mf_plus_data->security_level = MfPlusSecurityLevel3; + FURI_LOG_D(TAG, "Miare Plus EV1/2 SL3"); } else { // Mifare Plus EV1/2 SL1 mf_plus_data->security_level = MfPlusSecurityLevel1; + FURI_LOG_D(TAG, "Miare Plus EV1/2 SL1"); } } } @@ -158,6 +168,7 @@ bool mf_plus_get_type_from_iso4(const Iso14443_4aData* iso4_data, MfPlusData* mf mf_plus_ats_t1_tk_values[0], simple_array_get_count(iso4_data->ats_data.t1_tk)) == 0) { // Mifare Plus S 2/4K SL3 + FURI_LOG_D(TAG, "Mifare Plus S SL3"); mf_plus_data->type = MfPlusTypeS; mf_plus_data->security_level = MfPlusSecurityLevel3; @@ -179,6 +190,7 @@ bool mf_plus_get_type_from_iso4(const Iso14443_4aData* iso4_data, MfPlusData* mf iso4_data->ats_data.t1_tk, mf_plus_ats_t1_tk_values[1], simple_array_get_count(iso4_data->ats_data.t1_tk)) == 0) { + FURI_LOG_D(TAG, "Mifare Plus X SL3"); mf_plus_data->type = MfPlusTypeX; mf_plus_data->security_level = MfPlusSecurityLevel3; diff --git a/lib/nfc/protocols/mf_plus/mf_plus_poller.c b/lib/nfc/protocols/mf_plus/mf_plus_poller.c index 37a4f723f..a5ba70817 100644 --- a/lib/nfc/protocols/mf_plus/mf_plus_poller.c +++ b/lib/nfc/protocols/mf_plus/mf_plus_poller.c @@ -183,15 +183,14 @@ static bool mf_plus_poller_detect(NfcGenericEvent event, void* context) { bool detected = false; if(iso14443_4a_event->type == Iso14443_4aPollerEventTypeReady) { - detected = mf_plus_poller_read_version(instance, &instance->data->version); + detected = + (mf_plus_poller_read_version(instance, &instance->data->version) == MfPlusErrorNone); if(detected) { detected = mf_plus_get_type_from_version( - iso14443_4a_poller_get_data(instance->iso14443_4a_poller), - instance->data) == MfPlusErrorNone; + iso14443_4a_poller_get_data(instance->iso14443_4a_poller), instance->data); } else { detected = mf_plus_get_type_from_iso4( - iso14443_4a_poller_get_data(instance->iso14443_4a_poller), - instance->data) == MfPlusErrorNone; + iso14443_4a_poller_get_data(instance->iso14443_4a_poller), instance->data); } } diff --git a/lib/nfc/protocols/mf_plus/mf_plus_poller_i.c b/lib/nfc/protocols/mf_plus/mf_plus_poller_i.c index b7196ab2c..abc97b82e 100644 --- a/lib/nfc/protocols/mf_plus/mf_plus_poller_i.c +++ b/lib/nfc/protocols/mf_plus/mf_plus_poller_i.c @@ -42,12 +42,8 @@ MfPlusError mf_plus_poller_send_chunk( } bit_buffer_reset(instance->tx_buffer); + bit_buffer_copy(rx_buffer, instance->rx_buffer); - if(bit_buffer_get_size_bytes(instance->rx_buffer) > sizeof(uint8_t)) { - bit_buffer_copy_right(rx_buffer, instance->rx_buffer, sizeof(uint8_t)); - } else { - bit_buffer_reset(rx_buffer); - } } while(false); return error;