diff options
author | Sunil Jogi <sunil.jogi@nxp.com> | 2012-04-10 11:37:25 -0700 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2012-04-13 16:31:21 -0700 |
commit | 8206325bc6b3a60aed3c5cce157369ec2989437a (patch) | |
tree | d682013871a597470f037c1f1de8db82f5118f5b | |
parent | c3a87316a08d782d8b336d2d9663b47a4ec37d21 (diff) | |
download | external_libnfc-nxp-8206325bc6b3a60aed3c5cce157369ec2989437a.zip external_libnfc-nxp-8206325bc6b3a60aed3c5cce157369ec2989437a.tar.gz external_libnfc-nxp-8206325bc6b3a60aed3c5cce157369ec2989437a.tar.bz2 |
Added recovery function when SE wired mode selected
Added a recovery function with delay when SE wired mode selected.
This function will add extra delay before any abort when SE is in
wired mode. This will allow SE to complete any operation and do
not power off the SE immediately when wired mode transaction is on
going.
-rw-r--r-- | Linux_x86/phOsalNfc.c | 3 | ||||
-rw-r--r-- | src/phLibNfc.c | 12 | ||||
-rw-r--r-- | src/phLibNfc.h | 4 |
3 files changed, 19 insertions, 0 deletions
diff --git a/Linux_x86/phOsalNfc.c b/Linux_x86/phOsalNfc.c index 3f4542d..83b4e6e 100644 --- a/Linux_x86/phOsalNfc.c +++ b/Linux_x86/phOsalNfc.c @@ -47,6 +47,8 @@ phOsalNfc_Exception_t phOsalNfc_Exception; char phOsalNfc_DbgTraceBuffer[MAX_PRINT_BUFSIZE]; #endif +void phLibNfc_Mgt_Recovery(); + /*! * \brief Allocates memory. * This function attempts to allocate \a size bytes on the heap and @@ -145,6 +147,7 @@ void phOsalNfc_RaiseException(phOsalNfc_ExceptionType_t eExceptionType, uint16_t if(eExceptionType == phOsalNfc_e_UnrecovFirmwareErr) { ALOGE("HCI Timeout - Exception raised"); + phLibNfc_Mgt_Recovery(); ALOGE("Force restart of NFC Service"); abort(); } diff --git a/src/phLibNfc.c b/src/phLibNfc.c index 1012acb..c7c37c8 100644 --- a/src/phLibNfc.c +++ b/src/phLibNfc.c @@ -129,6 +129,18 @@ int phLibNfc_Load_Firmware_Image () return status; } +// Function for delay the recovery in case wired mode is set +// to complete the possible pending transaction with SE +void phLibNfc_Mgt_Recovery () +{ + /* Wait before recovery if wired mode */ + if (gpphLibContext->sSeContext.eActivatedMode == phLibNfc_SE_ActModeWired) + { + usleep (12000000); + } + + return; +} extern uint8_t nxp_nfc_isoxchg_timeout; NFCSTATUS phLibNfc_SetIsoXchgTimeout(uint8_t timeout) { diff --git a/src/phLibNfc.h b/src/phLibNfc.h index 1eb62ae..6111a93 100644 --- a/src/phLibNfc.h +++ b/src/phLibNfc.h @@ -856,6 +856,10 @@ NFCSTATUS phLibNfc_Download_Mode (); int phLibNfc_Load_Firmware_Image (); +// Function for delay the recovery in case wired mode is set +// to complete the possible pending transaction with SE +void phLibNfc_Mgt_Recovery (); + // timeout is 8 bits // bits [0..3] => timeout value, (256*16/13.56*10^6) * 2^value // [0] -> 0.0003s |