mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-07-26 01:48:10 -07:00
Merge branch 'Eng1n33r:dev' into 420
This commit is contained in:
@@ -94,7 +94,7 @@ static bool mfkey32_write_params(Mfkey32* instance, Mfkey32Params* params) {
|
||||
string_t str;
|
||||
string_init_printf(
|
||||
str,
|
||||
"Sector %d key %c cuid %08x nt0 %08x nr0 %08x ar0 %08x nt1 %08x nr1 %08x ar1 %08x\n",
|
||||
"Sec %d key %c cuid %08x nt0 %08x nr0 %08x ar0 %08x nt1 %08x nr1 %08x ar1 %08x\n",
|
||||
params->sector,
|
||||
params->key == MfClassicKeyA ? 'A' : 'B',
|
||||
params->cuid,
|
||||
|
||||
+19
-1
@@ -661,7 +661,8 @@ static void nfc_worker_reader_analyzer_callback(ReaderAnalyzerEvent event, void*
|
||||
furi_assert(context);
|
||||
NfcWorker* nfc_worker = context;
|
||||
|
||||
if(event == ReaderAnalyzerEventMfkeyCollected) {
|
||||
if((nfc_worker->state == NfcWorkerStateAnalyzeReader) &&
|
||||
(event == ReaderAnalyzerEventMfkeyCollected)) {
|
||||
if(nfc_worker->callback) {
|
||||
nfc_worker->callback(NfcWorkerEventDetectReaderMfkeyCollected, nfc_worker->context);
|
||||
}
|
||||
@@ -669,6 +670,8 @@ static void nfc_worker_reader_analyzer_callback(ReaderAnalyzerEvent event, void*
|
||||
}
|
||||
|
||||
void nfc_worker_analyze_reader(NfcWorker* nfc_worker) {
|
||||
furi_assert(nfc_worker->callback);
|
||||
|
||||
FuriHalNfcTxRxContext tx_rx = {};
|
||||
|
||||
ReaderAnalyzer* reader_analyzer = nfc_worker->reader_analyzer;
|
||||
@@ -687,17 +690,32 @@ void nfc_worker_analyze_reader(NfcWorker* nfc_worker) {
|
||||
rfal_platform_spi_acquire();
|
||||
|
||||
FURI_LOG_D(TAG, "Start reader analyzer");
|
||||
|
||||
uint8_t reader_no_data_received_cnt = 0;
|
||||
bool reader_no_data_notified = true;
|
||||
|
||||
while(nfc_worker->state == NfcWorkerStateAnalyzeReader) {
|
||||
furi_hal_nfc_stop_cmd();
|
||||
furi_delay_ms(5);
|
||||
furi_hal_nfc_listen_start(nfc_data);
|
||||
if(furi_hal_nfc_listen_rx(&tx_rx, 300)) {
|
||||
if(reader_no_data_notified) {
|
||||
nfc_worker->callback(NfcWorkerEventDetectReaderDetected, nfc_worker->context);
|
||||
}
|
||||
reader_no_data_received_cnt = 0;
|
||||
reader_no_data_notified = false;
|
||||
NfcProtocol protocol =
|
||||
reader_analyzer_guess_protocol(reader_analyzer, tx_rx.rx_data, tx_rx.rx_bits / 8);
|
||||
if(protocol == NfcDeviceProtocolMifareClassic) {
|
||||
mf_classic_emulator(&emulator, &tx_rx);
|
||||
}
|
||||
} else {
|
||||
reader_no_data_received_cnt++;
|
||||
if(!reader_no_data_notified && (reader_no_data_received_cnt > 5)) {
|
||||
nfc_worker->callback(NfcWorkerEventDetectReaderLost, nfc_worker->context);
|
||||
reader_no_data_received_cnt = 0;
|
||||
reader_no_data_notified = true;
|
||||
}
|
||||
FURI_LOG_D(TAG, "No data from reader");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@ typedef enum {
|
||||
NfcWorkerEventMfUltralightPwdAuth, // Reader sent auth command
|
||||
|
||||
// Detect Reader events
|
||||
NfcWorkerEventDetectReaderDetected,
|
||||
NfcWorkerEventDetectReaderLost,
|
||||
NfcWorkerEventDetectReaderMfkeyCollected,
|
||||
|
||||
} NfcWorkerEvent;
|
||||
|
||||
Reference in New Issue
Block a user