[SEMDAEMON-NFCOFF/ON] GKI leak observed during NFC ON/OFF and SemDaemon. 1. Set NFC service PID function added in NFC_API 2. Setting NFC PID after NFC service
diff --git a/src/adaptation/NfcAdaptation.cpp b/src/adaptation/NfcAdaptation.cpp
index 4433981..e263796 100644
--- a/src/adaptation/NfcAdaptation.cpp
+++ b/src/adaptation/NfcAdaptation.cpp
@@ -82,7 +82,7 @@
tHAL_NFC_DATA_CBACK* NfcAdaptation::mHalDataCallback = NULL;
ThreadCondVar NfcAdaptation::mHalOpenCompletedEvent;
ThreadCondVar NfcAdaptation::mHalCloseCompletedEvent;
-ThreadCondVar NfcAdaptation::mHalIoctlEvent;
+
#if (NXP_EXTNS == TRUE)
ThreadCondVar NfcAdaptation::mHalCoreResetCompletedEvent;
ThreadCondVar NfcAdaptation::mHalCoreInitCompletedEvent;
@@ -580,7 +580,6 @@
*******************************************************************************/
int NfcAdaptation::HalIoctl(long arg, void* p_data) {
const char* func = "NfcAdaptation::HalIoctl";
- mHalIoctlEvent.lock();
::android::hardware::nfc::V1_0::NfcData data;
AutoThreadMutex a(sIoctlLock);
nfc_nci_IoctlInOutData_t* pInpOutData = (nfc_nci_IoctlInOutData_t*)p_data;
@@ -592,7 +591,6 @@
if(mHalNxpNfc != nullptr)
mHalNxpNfc->ioctl(arg, data, IoctlCallback);
ALOGD("%s Ioctl Completed for Type=%llu", func, pInpOutData->out.ioctlType);
- mHalIoctlEvent.unlock();
return (pInpOutData->out.result);
}
diff --git a/src/nfc/include/nfc_api.h b/src/nfc/include/nfc_api.h
index 1fde84b..2697785 100644
--- a/src/nfc/include/nfc_api.h
+++ b/src/nfc/include/nfc_api.h
@@ -1689,6 +1689,17 @@
**
*******************************************************************************/
int32_t NFC_EnableWired(void* pdata);
+/*******************************************************************************
+**
+** Function NFC_SetNfcServicePid
+**
+** Description This function request to pn54x driver to
+** update NFC service process ID for signalling.
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+int32_t NFC_SetNfcServicePid();
/*******************************************************************************
**
diff --git a/src/nfc/nfc/nfc_main.c b/src/nfc/nfc/nfc_main.c
index 48e35b0..c8abfe7 100644
--- a/src/nfc/nfc/nfc_main.c
+++ b/src/nfc/nfc/nfc_main.c
@@ -809,23 +809,6 @@
}
#endif
nfc_cb.p_hal->open(nfc_main_hal_cback, nfc_main_hal_data_cback);
-
- if(nfcFL.nfcNxpEse) {
- /*Access to ESE from SPI & I2C is managed by sending signals from I2C
- drivers to NFC service. This requires NFC Service PID to be registered
- Assumption: This functions is invoked by NFC Service*/
- tNFC_STATUS setPidStatus = NFC_STATUS_OK;
- nfc_nci_IoctlInOutData_t inpOutData;
- inpOutData.inp.data.nfcServicePid = getpid();
- setPidStatus = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_SET_NFC_SERVICE_PID,(void*)&inpOutData);
- if (setPidStatus == NFC_STATUS_OK) {
- NFC_TRACE_API0("nfc service set pid done");
- } else {
- NFC_TRACE_API0("nfc service set pid failed");
- }
- }
-
-
return (NFC_STATUS_OK);
}
@@ -1851,6 +1834,30 @@
nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_DISABLE_HAL_LOG, &inpOutData);
}
}
+
+/*******************************************************************************
+**
+** Function NFC_SetNfcServicePid
+**
+** Description This function request to pn54x driver to
+** update NFC service process ID for signalling.
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+int32_t NFC_SetNfcServicePid() {
+ tNFC_STATUS setPidStatus = NFC_STATUS_OK;
+ nfc_nci_IoctlInOutData_t inpOutData;
+ inpOutData.inp.data.nfcServicePid = getpid();
+ setPidStatus = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_SET_NFC_SERVICE_PID,
+ (void*)&inpOutData);
+ if (setPidStatus == NFC_STATUS_OK) {
+ NFC_TRACE_API0("nfc service set pid done");
+ } else {
+ NFC_TRACE_API0("nfc service set pid failed");
+ }
+ return setPidStatus;
+}
#endif
/*******************************************************************************
**