static void phLibNfc_Llcp_CheckLlcp_Cb(void *pContext, NFCSTATUS status) { phLibNfc_LibContext_t *pLibNfc_Ctxt = (phLibNfc_LibContext_t *)pContext; NFCSTATUS RetStatus = NFCSTATUS_SUCCESS; pphLibNfc_ChkLlcpRspCb_t pClientCb = NULL; void *pClientContext = NULL; phLibNfc_State_t State; PH_LOG_LLCP_FUNC_ENTRY(); if(pLibNfc_Ctxt != gpphLibNfc_Context) { phOsalNfc_RaiseException(phOsalNfc_e_InternalErr,1); } else { State = phLibNfc_GetState(gpphLibNfc_Context); if(phLibNfc_StateReset == State) { RetStatus = NFCSTATUS_SHUTDOWN; } else { RetStatus = phLibNfc_IsAborted(State); if (NFCSTATUS_ABORTED != RetStatus) { if(status == NFCSTATUS_SUCCESS) { /* Remote peer is LLCP compliant */ gpphLibNfc_Context->llcp_cntx.bIsLlcp = TRUE; } else if(PHNFCSTATUS(status)== NFCSTATUS_FAILED) { RetStatus = NFCSTATUS_FAILED; gpphLibNfc_Context->llcp_cntx.bIsLlcp = FALSE; } else { RetStatus = NFCSTATUS_TARGET_LOST; } } } /* Update the current state */ gpphLibNfc_Context->status.GenCb_pending_status = FALSE; /* Copy callback details */ pClientCb = gpphLibNfc_Context->CBInfo.pClientLlcpCheckRespCb; pClientContext = gpphLibNfc_Context->CBInfo.pClientLlcpCheckRespCntx; /* Reset saved callback */ gpphLibNfc_Context->CBInfo.pClientCkNdefCb = NULL; gpphLibNfc_Context->CBInfo.pClientCkNdefCntx = NULL; if(pClientCb != NULL) { pClientCb(pClientContext,RetStatus); } } PH_LOG_LLCP_FUNC_EXIT(); }
static void phLibNfc_Llcp_Link_Cb(void *pContext, phLibNfc_Llcp_eLinkStatus_t status) { phLibNfc_LibContext_t *pLibNfc_Ctxt = (phLibNfc_LibContext_t *)pContext; pphLibNfc_LlcpLinkStatusCb_t pClientCb = NULL; void *pClientContext = NULL; phLibNfc_LlcpInfo_t *pllcp_cntx = &pLibNfc_Ctxt->llcp_cntx; PH_LOG_LLCP_FUNC_ENTRY(); if(pLibNfc_Ctxt != gpphLibNfc_Context) { PH_LOG_LLCP_WARN_STR("Invalid Lib context!"); phOsalNfc_RaiseException(phOsalNfc_e_InternalErr,1); } else { PH_LOG_LLCP_INFO_STR("Close all sockets"); /* Close all sockets */ if (!pllcp_cntx->sLlcpContext.bDtaFlag || phFriNfc_LlcpMac_eLinkDeactivated == status) { phFriNfc_LlcpTransport_CloseAll(&gpphLibNfc_Context->llcp_cntx.sLlcpTransportContext); } /* Copy callback details */ pClientCb = gpphLibNfc_Context->CBInfo.pClientLlcpLinkCb; pClientContext = gpphLibNfc_Context->CBInfo.pClientLlcpLinkCntx; if(pClientCb != NULL) { PH_LOG_LLCP_INFO_X32MSG("Invoking Client Llcp link call back with status:",status); pClientCb(pClientContext, status); } } }
/** * Response Callback for Remote device Presence Check. */ STATIC void phLibNfc_RemoteDev_CheckPresence_Cb(void *context, NFCSTATUS status) { void *pUpperLayerContext=NULL; pphLibNfc_RspCb_t pClientCb=NULL; /*check valid context is returned or not*/ if((phLibNfc_LibContext_t *)context != gpphLibContext) { /*exception: wrong context pointer returned*/ phOsalNfc_RaiseException(phOsalNfc_e_InternalErr,1); } /* Mark general callback pending status as FALSE*/ gpphLibContext->status.GenCb_pending_status = FALSE; pClientCb =gpphLibContext->CBInfo.pClientPresChkCb ; pUpperLayerContext = gpphLibContext->CBInfo.pClientPresChkCntx; gpphLibContext->CBInfo.pClientPresChkCntx = NULL; gpphLibContext->CBInfo.pClientPresChkCb =NULL; /* Check DeInit call is called, if yes call pending shutdown and return NFCSTATUS_SHUTDOWN */ if(eLibNfcHalStateShutdown == gpphLibContext->LibNfcState.next_state) { phLibNfc_Pending_Shutdown(); status = NFCSTATUS_SHUTDOWN; } else { if (status != NFCSTATUS_SUCCESS) { /*If status is other than SUCCESS (Internal error) return NFCSTATUS_TARGET_LOST */ status= NFCSTATUS_TARGET_LOST; } else { status = NFCSTATUS_SUCCESS; } } /* Update the current state */ phLibNfc_UpdateCurState(status,gpphLibContext); if(NULL != pClientCb) { /* call the upper layer callback */ pClientCb(pUpperLayerContext,status); } return; }