/*==========================================================================

  FUNCTION    WLANBAP_ReleaseHndl

  DESCRIPTION 
    Called by HDD at driver open (BSL_Close). BAP will reclaim (invalidate) 
    the "file handle" passed into this call.
    
    
  DEPENDENCIES 
    
  PARAMETERS 

    IN
    btampHandle:   btampHandle value to invalidate.
   
  RETURN VALUE
    The result code associated with performing the operation  

    VOS_STATUS_E_FAULT:  btampHandle is NULL ; access would cause a 
                         page fault  
    VOS_STATUS_SUCCESS:  Everything is good :) 

  SIDE EFFECTS 
  
============================================================================*/
VOS_STATUS 
WLANBAP_ReleaseHndl
( 
  ptBtampHandle btampHandle  /* btamp handle value to release  */ 
)
{
  /* obtain btamp Context  */ 
  ptBtampContext  btampContext = (ptBtampContext) btampHandle; 
  tHalHandle halHandle;
  eHalStatus halStatus = eHAL_STATUS_SUCCESS;
  /*------------------------------------------------------------------------
    Sanity check params
   ------------------------------------------------------------------------*/
  if ( NULL == btampHandle) 
  {
    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                 "Invalid BAP handle value in WLANBAP_ReleaseHndl");
    return VOS_STATUS_E_FAULT;
  }

  /* JEZ081001: TODO: Major: */ 
  /* Check to see if any wireless associations are still active */
  /* ...if so, I have to call 
   * sme_RoamDisconnect(VOS_GET_HAL_CB(btampHandle->pvosGCtx), 
   *        btampHandle->sessionId, 
   *       eCSR_DISCONNECT_REASON_UNSPECIFIED); 
   * on all of them  */ 

  halHandle = VOS_GET_HAL_CB(btampContext->pvosGCtx);
  if(NULL == halHandle)
  {
     VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                  "halHandle is NULL in %s", __func__);
     return VOS_STATUS_E_FAULT;
  }

  if( btampContext->isBapSessionOpen == TRUE )
  {
    halStatus = sme_CloseSession(halHandle, 
            btampContext->sessionId, NULL, NULL);
    if(eHAL_STATUS_SUCCESS == halStatus)
    {
      btampContext->isBapSessionOpen = FALSE;
    }
  }

  /* release the btampHandle  */ 

  return VOS_STATUS_SUCCESS;
}/* WLANBAP_ReleaseHndl */
Exemple #2
0
/*==========================================================================

  FUNCTION    WLANBAP_GetCurrentChannel

  DESCRIPTION 
    Clear out all fields in the BAP context.
    
  DEPENDENCIES 
    
  PARAMETERS 

    IN
    pBtampCtx:   pointer to the BAP control block
    channel:     current configured channel number.
    activeFlag:  flag indicating whether there is an active link.
   
  RETURN VALUE
    The result code associated with performing the operation  

    VOS_STATUS_E_FAULT:  pointer to return channel is NULL ; access would cause a page 
                         fault  
    VOS_STATUS_SUCCESS:  Everything is good :) 

  SIDE EFFECTS 
  
============================================================================*/
VOS_STATUS 
WLANBAP_GetCurrentChannel
( 
  ptBtampContext  pBtampCtx,
  v_U32_t *channel, // return current channel here
  v_U32_t *activeFlag   // return active flag here
)
{
  //v_U32_t cb_enabled;
  tHalHandle halHandle;

  /*------------------------------------------------------------------------
    Sanity check BAP control block 
   ------------------------------------------------------------------------*/

  if (( NULL == pBtampCtx ) || (NULL == channel) || (NULL == activeFlag))
  {
    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                 "Invalid BAP pointer in %s", __FUNCTION__);
    return VOS_STATUS_E_FAULT;
  }

  halHandle =  VOS_GET_HAL_CB(pBtampCtx->pvosGCtx);

  if(NULL == halHandle)
  {
     VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                  "halHandle is NULL in %s", __FUNCTION__);
     return VOS_STATUS_E_FAULT;
  }

  if (ccmCfgGetInt(halHandle, WNI_CFG_CURRENT_CHANNEL, channel) 
          != eHAL_STATUS_SUCCESS ) 
  {
    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                 "Get CFG failed in %s", __FUNCTION__);
    return VOS_STATUS_E_FAULT;
  }

  *activeFlag  = FALSE;  // return active flag here

  return VOS_STATUS_SUCCESS;
}/* WLANBAP_GetCurrentChannel */
VOS_STATUS 
WLANBAP_GetCurrentChannel
( 
  ptBtampContext  pBtampCtx,
  v_U32_t *channel, 
  v_U32_t *activeFlag   
)
{
  
  tHalHandle halHandle;


  if (( NULL == pBtampCtx ) || (NULL == channel) || (NULL == activeFlag))
  {
    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                 "Invalid BAP pointer in %s", __func__);
    return VOS_STATUS_E_FAULT;
  }

  halHandle =  VOS_GET_HAL_CB(pBtampCtx->pvosGCtx);

  if(NULL == halHandle)
  {
     VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                  "halHandle is NULL in %s", __func__);
     return VOS_STATUS_E_FAULT;
  }

  if (ccmCfgGetInt(halHandle, WNI_CFG_CURRENT_CHANNEL, channel) 
          != eHAL_STATUS_SUCCESS ) 
  {
    VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
                 "Get CFG failed in %s", __func__);
    return VOS_STATUS_E_FAULT;
  }

  *activeFlag  = FALSE;  

  return VOS_STATUS_SUCCESS;
}