NFCSTATUS phNciNfc_ListenMgmt(void *psContext, pphNciNfc_RemoteDevInformation_t pRemDevInf, uint8_t *pBuff, uint16_t wLen) { NFCSTATUS wStatus = NFCSTATUS_SUCCESS; pphNciNfc_Context_t psNciCtxt = (pphNciNfc_Context_t)psContext; PH_LOG_NCI_FUNC_ENTRY(); if((NULL == psNciCtxt) || (0 == wLen) || (NULL == pBuff) || (NULL == pRemDevInf)) { wStatus = NFCSTATUS_INVALID_PARAMETER; PH_LOG_NCI_INFO_STR("Invalid input parameters"); } else { /* Extract info into RemDevInf structure */ wStatus = phNciNfc_UpdateLstnMgmtRemDevInfo(pRemDevInf,pBuff,wLen); if(NFCSTATUS_SUCCESS == wStatus) { /* Based on active Rf Technology and Rf protocol, perform reader management init or P2P management init*/ if(phNciNfc_e_RfInterfacesNFCDEP_RF == pRemDevInf->eRfIf && phNciNfc_e_RfProtocolsNfcDepProtocol == pRemDevInf->eRFProtocol) { wStatus = phNciNfc_NfcILstnInit(psNciCtxt,pRemDevInf,pBuff,wLen); } else if(phNciNfc_e_RfInterfacesISODEP_RF == pRemDevInf->eRfIf && phNciNfc_e_RfProtocolsIsoDepProtocol == pRemDevInf->eRFProtocol) { wStatus = phNciNfc_NfcIsoLstnRdrInit(pRemDevInf,pBuff,wLen); } } if(NFCSTATUS_SUCCESS == wStatus) { (psNciCtxt->tActvDevIf.pDevInfo) = pRemDevInf; wStatus = phNciNfc_SetConnCredentials(psNciCtxt); } } PH_LOG_NCI_FUNC_EXIT(); return wStatus; }
NFCSTATUS phNciNfc_NfcIPollInit( void *psContext, pphNciNfc_RemoteDevInformation_t pRemDevInf, uint8_t *pBuff, uint16_t wLen ) { NFCSTATUS wStatus = NFCSTATUS_SUCCESS; pphNciNfc_Context_t psNciCtxt = (pphNciNfc_Context_t)psContext; PH_LOG_NCI_FUNC_ENTRY(); if((NULL == psNciCtxt) || (NULL == pBuff) || (NULL == pRemDevInf)) { wStatus = NFCSTATUS_INVALID_PARAMETER; PH_LOG_NCI_INFO_STR(" Invalid Param(s).."); } else { gpphNciNfc_RdrDataXchgSequence = (phNciNfc_SequenceP_t *)phOsalNfc_GetMemory( (2 * sizeof(phNciNfc_SequenceP_t))); if(NULL != gpphNciNfc_RdrDataXchgSequence) { /* Extract info into RemDevInf structure */ wStatus = phNciNfc_UpdateNfcIRemDevInfo(pRemDevInf,pBuff,wLen); if(NFCSTATUS_SUCCESS == wStatus) { /* Update Target specific info */ switch(pRemDevInf->eRFTechMode) { case phNciNfc_NFCA_Poll: case phNciNfc_NFCA_Active_Poll: wStatus = phNciNfc_NfcDepPollRdrAInit(pRemDevInf,pBuff,wLen); break; case phNciNfc_NFCF_Poll: case phNciNfc_NFCF_Active_Poll: wStatus = phNciNfc_NfcDepPollRdrFInit(pRemDevInf,pBuff,wLen); break; default: PH_LOG_NCI_INFO_STR("Rf Technology and mode not supported"); wStatus = NFCSTATUS_FAILED; break; } } if(NFCSTATUS_SUCCESS == wStatus) { (psNciCtxt->tActvDevIf.pDevInfo) = pRemDevInf; wStatus = phNciNfc_SetConnCredentials(psNciCtxt); } } else { wStatus = NFCSTATUS_INSUFFICIENT_RESOURCES; PH_LOG_NCI_INFO_STR(" DataXchg SequenceHandler pointer MemAlloc Failed.."); } } if(NFCSTATUS_SUCCESS != wStatus) { if(NULL != gpphNciNfc_RdrDataXchgSequence) { PH_LOG_NCI_INFO_STR(" Freeing RdrDataXchgSeq Mem.."); phOsalNfc_FreeMemory(gpphNciNfc_RdrDataXchgSequence); gpphNciNfc_RdrDataXchgSequence = NULL; } } PH_LOG_NCI_FUNC_EXIT(); return wStatus; }