aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsuraj <suraj.uday.kotharkar@nxp.com>2017-09-15 15:37:06 +0530
committernxpandroid <srikrishna.pramoda@nxp.com>2017-09-26 11:53:58 +0530
commit3f2a91f92c3f965634789eda19fb32d69a1999b8 (patch)
tree19a10c8e053a95b19faf2ee15ba9b3224f721dc4
parentbcb50b173f4e3b887d23ed041b796eab31a17654 (diff)
downloadandroid_vendor_nxp_opensource_packages_apps_Nfc-3f2a91f92c3f965634789eda19fb32d69a1999b8.tar.gz
android_vendor_nxp_opensource_packages_apps_Nfc-3f2a91f92c3f965634789eda19fb32d69a1999b8.tar.bz2
android_vendor_nxp_opensource_packages_apps_Nfc-3f2a91f92c3f965634789eda19fb32d69a1999b8.zip
MW handling of NFCEE_STATUS_NTF with unrecoverable error .
-rw-r--r--nci/jni/RoutingManager.cpp11
-rw-r--r--nci/jni/RoutingManager.h2
-rw-r--r--nci/jni/SecureElement.cpp18
3 files changed, 30 insertions, 1 deletions
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp
index 68fff427..97b0524d 100644
--- a/nci/jni/RoutingManager.cpp
+++ b/nci/jni/RoutingManager.cpp
@@ -3227,6 +3227,17 @@ bool RoutingManager::is_ee_recovery_ongoing()
return recovery;
}
+void RoutingManager::setEERecovery(bool value)
+{
+ static const char fn [] = "RoutingManager::setEERecovery";
+ if(!nfcFL.nfccFL._NFCEE_REMOVED_NTF_RECOVERY) {
+ ALOGV("%s : NFCEE_REMOVED_NTF_RECOVERY not avaialble.Returning",__func__);
+ return;
+ }
+ ALOGV("%s: value %x", __func__,value);
+ recovery = value;
+}
+
/*******************************************************************************
**
** Function: getRouting
diff --git a/nci/jni/RoutingManager.h b/nci/jni/RoutingManager.h
index aef6f8fd..fc3e8dc8 100644
--- a/nci/jni/RoutingManager.h
+++ b/nci/jni/RoutingManager.h
@@ -185,7 +185,7 @@ public:
uint8_t apduDataLen ,const uint8_t* apduMask, uint8_t apduMaskLen);
bool removeApduRouting(uint8_t apduDataLen, const uint8_t* apduData);
-
+ void setEERecovery(bool value);
void cleanRouting();
bool removeAidRouting(const uint8_t* aid, uint8_t aidLen);
bool commitRouting();
diff --git a/nci/jni/SecureElement.cpp b/nci/jni/SecureElement.cpp
index ee59bae9..6dc97f2f 100644
--- a/nci/jni/SecureElement.cpp
+++ b/nci/jni/SecureElement.cpp
@@ -2745,6 +2745,24 @@ void SecureElement::nfaHciCallback (tNFA_HCI_EVT event, tNFA_HCI_EVT_DATA* event
sSecElem.mNfceeInitCbEvent.notifyOne();
break;
}
+ case NFA_HCI_EE_RECOVERY_EVT:
+ {
+ tNFA_HCI_EE_RECOVERY_EVT &ee_recovery = eventData->ee_recovery;
+ ALOGV("%s: NFA_HCI_EE_RECOVERY_EVT; status=0x%X", fn, ee_recovery.status);
+ if(ee_recovery.status == NFA_HCI_EE_RECOVERY_STARTED)
+ RoutingManager::getInstance().setEERecovery(true);
+ else if(ee_recovery.status == NFA_HCI_EE_RECOVERY_COMPLETED)
+ {
+ ALOGV("%s: NFA_HCI_EE_RECOVERY_EVT; recovery completed status=0x%X", fn, ee_recovery.status);
+ RoutingManager::getInstance().setEERecovery(false);
+ if(active_ese_reset_control & TRANS_WIRED_ONGOING)
+ {
+ SyncEventGuard guard(sSecElem.mTransceiveEvent);
+ sSecElem.mTransceiveEvent.notifyOne();
+ }
+ }
+ break;
+ }
case NFA_HCI_ADD_STATIC_PIPE_EVT:
{
ALOGV("%s: NFA_HCI_ADD_STATIC_PIPE_EVT; status=0x%X", fn, eventData->admin_rsp_rcvd.status);