diff options
author | Martijn Coenen <martijn.coenen@nxp.com> | 2011-01-12 20:44:37 +0100 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2011-01-18 11:14:26 -0800 |
commit | 72854a2c28b99f9ab6aa60c906d5b3c1a36b04d7 (patch) | |
tree | 2611ea663501b02ac6b28662b0dff692b9c99b84 /src | |
parent | 434eb43979d170509b9b28c0598e5f44e31aa348 (diff) | |
download | external_libnfc-nxp-72854a2c28b99f9ab6aa60c906d5b3c1a36b04d7.zip external_libnfc-nxp-72854a2c28b99f9ab6aa60c906d5b3c1a36b04d7.tar.gz external_libnfc-nxp-72854a2c28b99f9ab6aa60c906d5b3c1a36b04d7.tar.bz2 |
Implement IsoDep timeout handling (libNFC).
Made the ISO XCHG timer (used for IsoDep transceive's) a configurable
setting. When this timer triggers in the hardware, the transaction will be
aborted and the connection to the tag is broken.
Also made the HCI timer configurable. This timer serves as a software watchdog
for any HCI transaction.
Change-Id: I927c7755378f793899c6d262a2f23ab5dca3817b
Diffstat (limited to 'src')
-rw-r--r-- | src/phHciNfc_Generic.c | 4 | ||||
-rw-r--r-- | src/phHciNfc_RFReader.c | 3 | ||||
-rw-r--r-- | src/phLibNfc.c | 13 | ||||
-rw-r--r-- | src/phLibNfc.h | 11 |
4 files changed, 29 insertions, 2 deletions
diff --git a/src/phHciNfc_Generic.c b/src/phHciNfc_Generic.c index 4433344..45aefdc 100644 --- a/src/phHciNfc_Generic.c +++ b/src/phHciNfc_Generic.c @@ -56,6 +56,8 @@ ################################################################################ */ +/* HCI timeout value */ +uint32_t nxp_nfc_hci_response_timeout = NXP_NFC_HCI_TIMEOUT; /* ################################################################################ @@ -577,7 +579,7 @@ phHciNfc_Release_Lower( { /* Start the HCI Response Timer */ phOsalNfc_Timer_Start( hci_resp_timer_id, - NXP_HCI_RESPONSE_TIMEOUT, phHciNfc_Response_Timeout, NULL); + nxp_nfc_hci_response_timeout, phHciNfc_Response_Timeout, NULL ); HCI_DEBUG(" HCI : Timer %X Started \n", hci_resp_timer_id); } diff --git a/src/phHciNfc_RFReader.c b/src/phHciNfc_RFReader.c index 6f53f74..1ecba87 100644 --- a/src/phHciNfc_RFReader.c +++ b/src/phHciNfc_RFReader.c @@ -63,6 +63,7 @@ #define NFCIP_ACTIVATE_DELAY 0x05U +uint8_t nxp_nfc_isoxchg_timeout = NXP_ISO_XCHG_TIMEOUT; /* *************************** Structure and Enumeration *************************** */ @@ -2328,7 +2329,7 @@ phHciNfc_ReaderMgmt_Release( (uint8_t) pipe_id, HCP_MSG_TYPE_COMMAND, cmd); hcp_message = &(hcp_packet->msg.message); /* Frame Wait Timeout */ - hcp_message->payload[i++] = NXP_ISO_XCHG_TIMEOUT ; + hcp_message->payload[i++] = nxp_nfc_isoxchg_timeout ; phHciNfc_Append_HCPFrame((uint8_t *)hcp_message->payload, i, p_pipe_info->param_info, p_pipe_info->param_length); diff --git a/src/phLibNfc.c b/src/phLibNfc.c index 008963b..3361f51 100644 --- a/src/phLibNfc.c +++ b/src/phLibNfc.c @@ -117,6 +117,19 @@ NFCSTATUS phLibNfc_Download_Mode () return phDal4Nfc_Download(); } + +extern uint8_t nxp_nfc_isoxchg_timeout; +NFCSTATUS phLibNfc_SetIsoXchgTimeout(uint8_t timeout) { + nxp_nfc_isoxchg_timeout = timeout; + return NFCSTATUS_SUCCESS; +} + +extern uint32_t nxp_nfc_hci_response_timeout; +NFCSTATUS phLibNfc_SetHciTimeout(uint32_t timeout_in_ms) { + nxp_nfc_hci_response_timeout = timeout_in_ms; + return NFCSTATUS_SUCCESS; +} + /** * Initialize the phLibNfc interface. */ diff --git a/src/phLibNfc.h b/src/phLibNfc.h index c09815a..bfd3eb7 100644 --- a/src/phLibNfc.h +++ b/src/phLibNfc.h @@ -845,6 +845,17 @@ NFCSTATUS phLibNfc_HW_Reset (); NFCSTATUS phLibNfc_Download_Mode (); +// timeout is 8 bits +// bits [0..3] => timeout value, (256*16/13.56*10^6) * 2^value +// [0] -> 0.0003s +// .. +// [14] -> 4.9s +// [15] -> not allowed +// bit [4] => timeout enable +// bit [5..7] => unused +NFCSTATUS phLibNfc_SetIsoXchgTimeout(uint8_t timeout); +NFCSTATUS phLibNfc_SetHciTimeout(uint32_t timeout_in_ms); + /** * \ingroup grp_lib_nfc * |