Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...

## [unreleased][unreleased]
- Fix wrong data reported by hf 14a sniff on frames containing more than 7 parity bits (@DidierA)
- Added Jablotron LF protocol support: read, emulate and T55xx clone (@midlan)
- Added IDTECK LF protocol support: tag emulation (PSK1 RF/32) and T55xx clone. No reader path yet; PSK demodulation on the envelope-only receive chain is left for a follow-up.
- Added PAC/Stanley LF protocol support: read, emulate and T55xx clone (@kevihiiin, @danieltwagner)
Expand Down
3 changes: 0 additions & 3 deletions firmware/application/src/app_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2502,14 +2502,12 @@ static data_frame_tx_t *cmd_processor_hf14a_4_reader_apdu(uint16_t cmd, uint16_t
}

/* Copy data portion (strip PCB + CRC), then handle chaining */
uint8_t blk_num = 0;
uint8_t resp_pcb = resp_buf[0];
uint8_t dlen = resp_bytes - 3; /* subtract PCB(1) + CRC(2) */
if (dlen > 0 && resp_chain_len + dlen < sizeof(resp_chain)) {
memcpy(&resp_chain[resp_chain_len], &resp_buf[1], dlen);
resp_chain_len += dlen;
}
blk_num ^= 1;

/* ISO14443-4 chaining: PCB bit5 (0x20) set means more blocks follow */
while (resp_pcb & 0x20) {
Expand All @@ -2532,7 +2530,6 @@ static data_frame_tx_t *cmd_processor_hf14a_4_reader_apdu(uint16_t cmd, uint16_t
memcpy(&resp_chain[resp_chain_len], &resp_buf[1], dlen);
resp_chain_len += dlen;
}
blk_num ^= 1;
}

return data_frame_make(cmd, STATUS_HF_TAG_OK, resp_chain_len, resp_chain);
Expand Down
9 changes: 2 additions & 7 deletions firmware/application/src/rfid/nfctag/hf/nfc_14a.c
Original file line number Diff line number Diff line change
Expand Up @@ -682,13 +682,8 @@ void nfc_tag_14a_event_callback(nrfx_nfct_evt_t const *p_event) {
uint32_t amt = NRF_NFCT->TXD.AMOUNT;
uint16_t tx_bytes = (amt >> NFCT_TXD_AMOUNT_TXDATABYTES_Pos)
& (NFCT_TXD_AMOUNT_TXDATABYTES_Msk >> NFCT_TXD_AMOUNT_TXDATABYTES_Pos);
uint16_t tx_bits_rem = (amt >> NFCT_TXD_AMOUNT_TXDATABITS_Pos)
& (NFCT_TXD_AMOUNT_TXDATABITS_Msk >> NFCT_TXD_AMOUNT_TXDATABITS_Pos);
uint16_t tx_bits = (tx_bits_rem > 0)
? ((tx_bytes - 1) * 8 + tx_bits_rem)
: (tx_bytes * 8);
if (tx_bits > 0 && tx_bytes <= MAX_NFC_TX_BUFFER_SIZE) {
m_tx_sniff_cb(m_nfc_tx_buffer, tx_bits);
if (amt > 0 && tx_bytes <= MAX_NFC_TX_BUFFER_SIZE) {
m_tx_sniff_cb(m_nfc_tx_buffer, amt);
}
}
break;
Expand Down
Loading