summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2012-04-20 12:25:09 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-20 12:25:09 -0700
commit9d5e63503d2d948bc73e85dff7b9995f3cb1ca24 (patch)
tree9996a174e6d91467a952e1ad67dd168587c09c08
parentcbd3e8d93923aae2df32d3bb299cd92fed5914a4 (diff)
parent8206325bc6b3a60aed3c5cce157369ec2989437a (diff)
downloadexternal_libnfc-nxp-9d5e63503d2d948bc73e85dff7b9995f3cb1ca24.zip
external_libnfc-nxp-9d5e63503d2d948bc73e85dff7b9995f3cb1ca24.tar.gz
external_libnfc-nxp-9d5e63503d2d948bc73e85dff7b9995f3cb1ca24.tar.bz2
Merge "Added recovery function when SE wired mode selected"
-rw-r--r--Linux_x86/phOsalNfc.c3
-rw-r--r--src/phLibNfc.c12
-rw-r--r--src/phLibNfc.h4
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