From f9140ac2cde38ae8e983efd4224d36bab134ec91 Mon Sep 17 00:00:00 2001 From: Skorpionm <85568270+Skorpionm@users.noreply.github.com> Date: Fri, 22 Apr 2022 15:33:43 +0400 Subject: [PATCH 1/2] SubGhz: fix waiting for UPLOAD to be sent, for RAW file worker (#1146) * SubGhz: fix waiting for UPLOAD to be sent * SubGhz: remove debug output Co-authored-by: Aleksandr Kutuzov --- lib/subghz/subghz_file_encoder_worker.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/subghz/subghz_file_encoder_worker.c b/lib/subghz/subghz_file_encoder_worker.c index ca763d700..0331213c6 100644 --- a/lib/subghz/subghz_file_encoder_worker.c +++ b/lib/subghz/subghz_file_encoder_worker.c @@ -167,7 +167,10 @@ static int32_t subghz_file_encoder_worker_thread(void* context) { } //waiting for the end of the transfer FURI_LOG_I(TAG, "End read file"); - + while(!furi_hal_subghz_is_async_tx_complete()) { + osDelay(5); + } + FURI_LOG_I(TAG, "End transmission"); while(instance->worker_running) { if(instance->worker_stoping) { if(instance->callback_end) instance->callback_end(instance->context_end); From 799eb3f5024b997b31586924a4ae8098ef8d5d9b Mon Sep 17 00:00:00 2001 From: gornekich Date: Fri, 22 Apr 2022 15:41:10 +0300 Subject: [PATCH 2/2] Fix Mifare NTAG read #1147 Fix #1145 --- lib/nfc_protocols/mifare_classic.c | 2 +- lib/nfc_protocols/mifare_ultralight.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/nfc_protocols/mifare_classic.c b/lib/nfc_protocols/mifare_classic.c index 7aa399916..c738accc9 100644 --- a/lib/nfc_protocols/mifare_classic.c +++ b/lib/nfc_protocols/mifare_classic.c @@ -220,7 +220,7 @@ bool mf_classic_read_block( tx_rx->tx_bits = 4 * 9; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeRaw; - if(furi_hal_nfc_tx_rx(tx_rx, 5)) { + if(furi_hal_nfc_tx_rx(tx_rx, 50)) { if(tx_rx->rx_bits == 8 * 18) { for(uint8_t i = 0; i < 18; i++) { block->value[i] = crypto1_byte(crypto, 0, 0) ^ tx_rx->rx_data[i]; diff --git a/lib/nfc_protocols/mifare_ultralight.c b/lib/nfc_protocols/mifare_ultralight.c index c824c6461..31ac8e77f 100644 --- a/lib/nfc_protocols/mifare_ultralight.c +++ b/lib/nfc_protocols/mifare_ultralight.c @@ -27,7 +27,7 @@ bool mf_ultralight_read_version( tx_rx->tx_data[0] = MF_UL_GET_VERSION_CMD; tx_rx->tx_bits = 8; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeDefault; - if(!furi_hal_nfc_tx_rx(tx_rx, 4)) { + if(!furi_hal_nfc_tx_rx(tx_rx, 50)) { FURI_LOG_D(TAG, "Failed reading version"); mf_ul_set_default_version(reader, data); furi_hal_nfc_sleep(); @@ -78,7 +78,7 @@ bool mf_ultralight_read_pages( tx_rx->tx_data[1] = i; tx_rx->tx_bits = 16; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeDefault; - if(!furi_hal_nfc_tx_rx(tx_rx, 4)) { + if(!furi_hal_nfc_tx_rx(tx_rx, 50)) { FURI_LOG_D(TAG, "Failed to read pages %d - %d", i, i + 3); break; } @@ -105,7 +105,7 @@ bool mf_ultralight_fast_read_pages( tx_rx->tx_data[2] = reader->pages_to_read - 1; tx_rx->tx_bits = 24; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeDefault; - if(furi_hal_nfc_tx_rx(tx_rx, 20)) { + if(furi_hal_nfc_tx_rx(tx_rx, 50)) { reader->pages_read = reader->pages_to_read; data->data_size = reader->pages_read * 4; memcpy(data->data, tx_rx->rx_data, data->data_size); @@ -124,7 +124,7 @@ bool mf_ultralight_read_signature(FuriHalNfcTxRxContext* tx_rx, MfUltralightData tx_rx->tx_data[1] = 0; tx_rx->tx_bits = 16; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeDefault; - if(furi_hal_nfc_tx_rx(tx_rx, 7)) { + if(furi_hal_nfc_tx_rx(tx_rx, 50)) { memcpy(data->signature, tx_rx->rx_data, sizeof(data->signature)); signature_read = true; } else { @@ -143,7 +143,7 @@ bool mf_ultralight_read_counters(FuriHalNfcTxRxContext* tx_rx, MfUltralightData* tx_rx->rx_data[1] = i; tx_rx->tx_bits = 16; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeDefault; - if(!furi_hal_nfc_tx_rx(tx_rx, 4)) { + if(!furi_hal_nfc_tx_rx(tx_rx, 50)) { FURI_LOG_D(TAG, "Failed to read %d counter", i); break; } @@ -164,7 +164,7 @@ bool mf_ultralight_read_tearing_flags(FuriHalNfcTxRxContext* tx_rx, MfUltralight tx_rx->rx_data[1] = i; tx_rx->tx_bits = 16; tx_rx->tx_rx_type = FuriHalNfcTxRxTypeDefault; - if(!furi_hal_nfc_tx_rx(tx_rx, 4)) { + if(!furi_hal_nfc_tx_rx(tx_rx, 50)) { FURI_LOG_D(TAG, "Failed to read %d tearing flag", i); break; }