diff options
-rw-r--r-- | nci/jni/RoutingManager.cpp | 11 | ||||
-rw-r--r-- | nci/jni/RoutingManager.h | 2 | ||||
-rw-r--r-- | nci/jni/SecureElement.cpp | 18 |
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); |