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;
}