Esempio n. 1
0
VOS_STATUS  
WLAN_BAPDisconnect
( 
  ptBtampHandle btampHandle
)
{
    ptBtampContext btampContext = (ptBtampContext) btampHandle;
    tWLAN_BAPEvent bapEvent; 
    v_U8_t status;    
    VOS_STATUS  vosStatus;
    

    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_FATAL, "%s: btampHandle value: %p", __func__,  btampHandle);

     
    if (btampHandle == NULL) 
    {
        VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_FATAL,
                     "btampHandle is NULL in %s", __func__);

      return VOS_STATUS_E_FAULT;
    }

     
    bapEvent.event = eWLAN_BAP_MAC_INDICATES_MEDIA_DISCONNECTION;
    bapEvent.params = NULL;


     
    vosStatus = btampFsm(btampContext, &bapEvent, &status);


         
    bapEvent.event =  eWLAN_BAP_MAC_READY_FOR_CONNECTIONS;
    bapEvent.params = NULL;

         
    vosStatus = btampFsm(btampContext, &bapEvent, &status);


    return VOS_STATUS_SUCCESS;
}
/*----------------------------------------------------------------------------

  FUNCTION    WLAN_BAPDisconnect()

  DESCRIPTION 
     The function to request to BAP core to disconnect currecnt AMP connection.
   


  DEPENDENCIES 
    NA. 

  PARAMETERS 

    IN
    btampHandle: pointer to the BAP handle.  Returned from WLANBAP_GetNewHndl.
    
   
  RETURN VALUE
    The result code associated with performing the operation  

    VOS_STATUS_E_FAULT:  btampHandle is NULL 
    VOS_STATUS_SUCCESS:  Success
  
  SIDE EFFECTS 
  
----------------------------------------------------------------------------*/
VOS_STATUS  
WLAN_BAPDisconnect
( 
  ptBtampHandle btampHandle
)
{
    ptBtampContext btampContext = (ptBtampContext) btampHandle;
    tWLAN_BAPEvent bapEvent; /* State machine event */
    v_U8_t status;    /* return the BT-AMP status here */
    VOS_STATUS  vosStatus;
    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_FATAL, "%s: btampHandle value: %p", __func__,  btampHandle);

    /* Validate params */ 
    if (btampHandle == NULL) 
    {
        VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_FATAL,
                     "btampHandle is NULL in %s", __func__);

      return VOS_STATUS_E_FAULT;
    }

    /* Fill in the event structure */ 
    bapEvent.event = eWLAN_BAP_MAC_INDICATES_MEDIA_DISCONNECTION;
    bapEvent.params = NULL;


    /* Handle event */ 
    vosStatus = btampFsm(btampContext, &bapEvent, &status);


        /* Fill in the event structure */ 
    bapEvent.event =  eWLAN_BAP_MAC_READY_FOR_CONNECTIONS;
    bapEvent.params = NULL;

        /* Handle event */ 
    vosStatus = btampFsm(btampContext, &bapEvent, &status);


    return VOS_STATUS_SUCCESS;
}
Esempio n. 3
0
/*==========================================================================

  FUNCTION    WLANBAP_ConnectionAcceptTimerHandler

  DESCRIPTION
    Callback function registered with vos timer for the Connection
    Accept timer

  DEPENDENCIES

  PARAMETERS

    IN
    userData:      pointer can be used to retrive the BT-AMP context

  RETURN VALUE
    None

  SIDE EFFECTS

============================================================================*/
v_VOID_t
WLANBAP_ConnectionAcceptTimerHandler
(
  v_PVOID_t userData
)
{
  ptBtampContext  pBtampCtx = (ptBtampContext)userData;
  tWLAN_BAPEvent bapEvent; /* State machine event */
  VOS_STATUS  vosStatus = VOS_STATUS_SUCCESS;
  v_U8_t status;    /* return the BT-AMP status here */
  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

  /*-----------------------------------------------------------------------
    Sanity check
   -----------------------------------------------------------------------*/
  if ( NULL == pBtampCtx )
  {
     VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                "WLAN BAP: Fatal error in %s", __func__ );
     VOS_ASSERT(0);
     return;
  }

 /*---------------------------------------------------------------------
    Feed this timeout to the BTAMP FSM
   ---------------------------------------------------------------------*/
  /* Fill in the event structure */
  bapEvent.event = eWLAN_BAP_TIMER_CONNECT_ACCEPT_TIMEOUT;
  bapEvent.params = NULL;

  /* Handle event */
  vosStatus = btampFsm(pBtampCtx, &bapEvent, &status);

  /* Now transition to fully disconnected and notify phy link disconnect*/
  bapEvent.event =  eWLAN_BAP_MAC_READY_FOR_CONNECTIONS;
  bapEvent.params = NULL;

  /* Handle event */
  vosStatus = btampFsm(pBtampCtx, &bapEvent, &status);


}/*WLANBAP_ConnectionAcceptTimerHandler*/
Esempio n. 4
0
/*==========================================================================

  FUNCTION    WLANBAP_LinkSupervisionTimerHandler

  DESCRIPTION
    Callback function registered with vos timer for the LinkSupervision timer

  DEPENDENCIES

  PARAMETERS

    IN
    userData:      pointer can be used to retrive the BT-AMP context

  RETURN VALUE
    None

  SIDE EFFECTS

============================================================================*/
v_VOID_t
WLANBAP_LinkSupervisionTimerHandler
(
  v_PVOID_t userData
)
{
    ptBtampContext           pBtampCtx =      (ptBtampContext)userData;
    VOS_STATUS               vosStatus =      VOS_STATUS_SUCCESS;
    ptBtampHandle            btampHandle =    (ptBtampHandle)userData;
    tWLAN_BAPEvent           bapEvent; /* State machine event */
    v_U8_t                   phy_link_handle;

  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

  /*-----------------------------------------------------------------------
    Sanity check
   -----------------------------------------------------------------------*/
    if ( NULL == pBtampCtx )
    {
       VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                "WLAN BAP: Fatal error in %s", __func__ );
       VOS_ASSERT(0);
       return;
    }

    phy_link_handle = pBtampCtx->phy_link_handle;
     VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                "WLAN BAP:In LinkSupervision Timer handler %s", __func__ );

    if(pBtampCtx->dataPktPending == VOS_TRUE)
    {
        VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                    "%s: Data seen. Do nothing", __func__ );

        pBtampCtx->dataPktPending = VOS_FALSE;
        pBtampCtx->lsReqPktPending = VOS_FALSE;
        pBtampCtx->retries = 0;
        vosStatus = WLANBAP_StopLinkSupervisionTimer(pBtampCtx);
        vosStatus = WLANBAP_StartLinkSupervisionTimer (pBtampCtx,
                    pBtampCtx->bapLinkSupervisionTimerInterval * WLANBAP_BREDR_BASEBAND_SLOT_TIME);

        //Data is seen. or our previous packet is not yet fetched by TL.Don't do any thing.Just return;
        return;
    }
    else if((pBtampCtx->lsReqPktPending == VOS_TRUE )
            && (pBtampCtx->retries == WLANBAP_LINK_SUPERVISION_RETRIES))
    {
        VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                    "#########WLAN BAP: LinkSupervision Timed OUT######## %s", __func__ );

     /*---------------------------------------------------------------------
    Feed this timeout to the BTAMP FSM
   ---------------------------------------------------------------------*/
        /* Fill in the event structure */
        /* JEZ110307: Which should this be? */
        //bapEvent.event =eWLAN_BAP_HCI_PHYSICAL_LINK_DISCONNECT;
        bapEvent.event =eWLAN_BAP_MAC_INDICATES_MEDIA_DISCONNECTION;
        bapEvent.params = NULL;

        /* Handle event */
        vosStatus = btampFsm(pBtampCtx, &bapEvent, (v_U8_t *)&vosStatus);
    }
    else
    {
        VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                    "%s: Resend the LS packet", __func__ );

        /* If we have transmit pkt pending and the time out occurred,resend the ls packet */
        WLANBAP_StopLinkSupervisionTimer(pBtampCtx);
        pBtampCtx->pPacket = pBtampCtx->lsReqPacket;
        vosStatus = WLANBAP_TxLinkSupervision( btampHandle,
                                               phy_link_handle,
                                               pBtampCtx->pPacket ,
                                               WLANTL_BT_AMP_TYPE_LS_REQ);
    }

}/*WLANBAP_LinkSupervisionTimerHandler*/