コード例 #1
0
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();
}
コード例 #2
0
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);
      }
   }
}
コード例 #3
0
/**
* 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;
}