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; }
/*========================================================================== 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*/
/*========================================================================== 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*/