Skip to content

Commit b535a45

Browse files
Keep reference to RX apdu buffer in NFC reader context
1 parent 4554b4c commit b535a45

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

include/os_io_nfc.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ struct nfc_reader_context {
7474
unsigned int remaining_ms;
7575
enum nfc_event last_event;
7676
struct card_info card;
77+
uint8_t *apdu_rx;
78+
size_t apdu_rx_len; // Used length
79+
size_t apdu_rx_max_size; // Max size of buffer
7780
};
7881

7982
extern struct nfc_reader_context G_io_reader_ctx;

src/os_io_nfc.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ void io_nfc_init(void)
5555
LEDGER_PROTOCOL_init(&ledger_protocol_data);
5656
#ifdef HAVE_NFC_READER
5757
memset((void *) &G_io_reader_ctx, 0, sizeof(G_io_reader_ctx));
58+
G_io_reader_ctx.apdu_rx = rx_apdu_buffer;
59+
G_io_reader_ctx.apdu_rx_max_size = sizeof(rx_apdu_buffer);
5860
#endif // HAVE_NFC_READER
5961
}
6062

@@ -69,6 +71,7 @@ void io_nfc_recv_event(void)
6971
#ifdef HAVE_NFC_READER
7072
if (G_io_reader_ctx.reader_mode) {
7173
G_io_reader_ctx.response_received = true;
74+
G_io_reader_ctx.apdu_rx_len = ledger_protocol_data.rx_apdu_length;
7275
return;
7376
}
7477
#endif // HAVE_NFC_READER
@@ -152,12 +155,8 @@ void io_nfc_process_events(void)
152155
if (G_io_reader_ctx.resp_callback != NULL) {
153156
nfc_resp_callback_t resp_cb = G_io_reader_ctx.resp_callback;
154157
G_io_reader_ctx.resp_callback = NULL;
155-
resp_cb(false,
156-
false,
157-
ledger_protocol_data.rx_apdu_buffer,
158-
ledger_protocol_data.rx_apdu_length);
158+
resp_cb(false, false, G_io_reader_ctx.apdu_rx, G_io_reader_ctx.apdu_rx_len);
159159
}
160-
memset(ledger_protocol_data.rx_apdu_buffer, 0, ledger_protocol_data.rx_apdu_length);
161160
}
162161

163162
if (G_io_reader_ctx.resp_callback != NULL && G_io_reader_ctx.remaining_ms == 0) {

0 commit comments

Comments
 (0)