mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-07-27 01:58:09 -07:00
Merge branch 'ISO15693' of https://github.com/g3gg0/flipperzero-firmware into dev
This commit is contained in:
@@ -1401,18 +1401,17 @@ bool nfc_device_save(NfcDevice* dev, const char* dev_name) {
|
||||
break;
|
||||
nfc_device_prepare_format_string(dev, temp_str);
|
||||
if(!flipper_format_write_string(file, "Device type", temp_str)) break;
|
||||
// Write UID, ATQA, SAK
|
||||
if(!flipper_format_write_comment_cstr(file, "UID, ATQA and SAK are common for all formats"))
|
||||
break;
|
||||
// Write UID
|
||||
if(!flipper_format_write_comment_cstr(file, "UID is common for all formats")) break;
|
||||
if(!flipper_format_write_hex(file, "UID", data->uid, data->uid_len)) break;
|
||||
|
||||
if(dev->format != NfcDeviceSaveFormatNfcV) {
|
||||
// Write ATQA, SAK
|
||||
if(!flipper_format_write_comment_cstr(file, "ISO14443 specific fields")) break;
|
||||
// Save ATQA in MSB order for correct companion apps display
|
||||
uint8_t atqa[2] = {data->a_data.atqa[1], data->a_data.atqa[0]};
|
||||
uint8_t atqa[2] = {data->atqa[1], data->atqa[0]};
|
||||
if(!flipper_format_write_hex(file, "ATQA", atqa, 2)) break;
|
||||
if(!flipper_format_write_hex(file, "SAK", &data->a_data.sak, 1)) break;
|
||||
if(!flipper_format_write_hex(file, "SAK", &data->sak, 1)) break;
|
||||
}
|
||||
|
||||
// Save more data if necessary
|
||||
@@ -1503,14 +1502,14 @@ static bool nfc_device_load_data(NfcDevice* dev, FuriString* path, bool show_dia
|
||||
if(!flipper_format_read_hex(file, "UID", data->uid, data->uid_len)) break;
|
||||
if(dev->format != NfcDeviceSaveFormatNfcV) {
|
||||
if(version == version_with_lsb_atqa) {
|
||||
if(!flipper_format_read_hex(file, "ATQA", data->a_data.atqa, 2)) break;
|
||||
if(!flipper_format_read_hex(file, "ATQA", data->atqa, 2)) break;
|
||||
} else {
|
||||
uint8_t atqa[2] = {};
|
||||
if(!flipper_format_read_hex(file, "ATQA", atqa, 2)) break;
|
||||
data->a_data.atqa[0] = atqa[1];
|
||||
data->a_data.atqa[1] = atqa[0];
|
||||
data->atqa[0] = atqa[1];
|
||||
data->atqa[1] = atqa[0];
|
||||
}
|
||||
if(!flipper_format_read_hex(file, "SAK", &data->a_data.sak, 1)) break;
|
||||
if(!flipper_format_read_hex(file, "SAK", &data->sak, 1)) break;
|
||||
}
|
||||
// Load CUID
|
||||
uint8_t* cuid_start = data->uid;
|
||||
|
||||
@@ -1310,18 +1310,19 @@ bool nfcv_emu_loop(
|
||||
}
|
||||
nfcv_data->emu_protocol_handler(tx_rx, nfc_data, nfcv_data);
|
||||
|
||||
|
||||
/* determine readers fc by analyzing transmission duration */
|
||||
uint32_t duration = eof_timestamp - sof_timestamp;
|
||||
float fc_1024 = (4.0f * duration) / (4 * (frame_pos * 4 + 1) + 1);
|
||||
/* it should be 1024/fc in 64MHz ticks */
|
||||
float fact = fc_1024 / ((1000000.0f * 64.0f * 1024.0f) / NFCV_FC);
|
||||
FURI_LOG_D(TAG, "1024/fc: %f -> %f %%", (double)fc_1024, (double)fact * 100);
|
||||
FURI_LOG_D(TAG, "1024/fc: %f -> %f %%", (double)fc_1024, (double)(fact * 100));
|
||||
#if 0
|
||||
if(fact > 0.99f && fact < 1.01f) {
|
||||
static float avg_err = 0.0f;
|
||||
|
||||
avg_err = (avg_err * 15.0f + (fact - 1.0f)) / 16.0f;
|
||||
FURI_LOG_D(TAG, " ==> set %f %%", (1.0f + avg_err) * 100);
|
||||
FURI_LOG_D(TAG, " ==> set %f %%", (double)((1.0f + avg_err) * 100));
|
||||
digital_sequence_timebase_correction(nfcv_data->emu_air.nfcv_signal, 1.0f + avg_err);
|
||||
}
|
||||
#endif
|
||||
@@ -1345,3 +1346,4 @@ bool nfcv_emu_loop(
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user