prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
diff --git a/CORE/BAP/src/bapApiHCBB.c b/CORE/BAP/src/bapApiHCBB.c
new file mode 100644
index 0000000..8bc54ae
--- /dev/null
+++ b/CORE/BAP/src/bapApiHCBB.c
@@ -0,0 +1,1691 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*===========================================================================
+
+ b a p A p i H C B B . C
+
+ OVERVIEW:
+
+ This software unit holds the implementation of the WLAN BAP modules
+ Host Controller and Baseband functions.
+
+ The functions externalized by this module are to be called ONLY by other
+ WLAN modules (HDD) that properly register with the BAP Layer initially.
+
+ DEPENDENCIES:
+
+ Are listed for each API below.
+
+
+ Copyright (c) 2008 QUALCOMM Incorporated.
+ All Rights Reserved.
+ Qualcomm Confidential and Proprietary
+===========================================================================*/
+
+/*===========================================================================
+
+ EDIT HISTORY FOR FILE
+
+
+ This section contains comments describing changes made to the module.
+ Notice that changes are listed in reverse chronological order.
+
+
+ $Header: /prj/qct/asw/engbuilds/scl/users02/jzmuda/Android/ampBlueZ_6/CORE/BAP/src/bapApiHCBB.c,v 1.7 2011/05/06 00:59:27 jzmuda Exp jzmuda $$DateTime$$Author: jzmuda $
+
+
+ when who what, where, why
+---------- --- --------------------------------------------------------
+2008-09-15 jez Created module
+
+===========================================================================*/
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+#include "vos_trace.h"
+
+// Pick up the sme callback registration API
+#include "sme_Api.h"
+
+/* BT-AMP PAL API header file */
+#include "bapApi.h"
+#include "bapInternal.h"
+
+//#define BAP_DEBUG
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Global Data Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Static Variable Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Static Function Declarations and Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Externalized Function Definitions
+* -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Function Declarations and Documentation
+ * -------------------------------------------------------------------------*/
+
+
+/* Host Controller and Baseband Commands */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReset()
+
+ DESCRIPTION
+ Implements the actual HCI Reset command.
+ Produces an asynchronous command complete event. Through the
+ command complete callback. (I.E., (*tpWLAN_BAPEventCB).)
+
+ 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_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReset
+(
+ ptBtampHandle btampHandle
+)
+{
+ VOS_STATUS vosStatus;
+ tBtampHCI_Event bapHCIEvent; /* This now encodes ALL event types */
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ tHalHandle hHal = NULL;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if (btampHandle == NULL)
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
+ "btampHandle is NULL in %s", __FUNCTION__);
+
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Perform a "reset" */
+ hHal = VOS_GET_HAL_CB(btampContext->pvosGCtx);
+ if (NULL == hHal)
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR,
+ "hHal is NULL in %s", __FUNCTION__);
+
+ return VOS_STATUS_E_FAULT;
+ }
+
+ //csrRoamDisconnect();
+ sme_RoamDisconnect(hHal,
+ btampContext->sessionId,
+ // Danlin, where are the richer reason codes?
+ // I want to be able to convey everything 802.11 supports...
+ eCSR_DISCONNECT_REASON_UNSPECIFIED);
+
+ /* Need to reset the timers as well*/
+ /* Connection Accept Timer interval*/
+ btampContext->bapConnectionAcceptTimerInterval = WLANBAP_CONNECTION_ACCEPT_TIMEOUT;
+ /* Link Supervision Timer interval*/
+ btampContext->bapLinkSupervisionTimerInterval = WLANBAP_LINK_SUPERVISION_TIMEOUT;
+ /* Logical Link Accept Timer interval*/
+ btampContext->bapLogicalLinkAcceptTimerInterval = WLANBAP_LOGICAL_LINK_ACCEPT_TIMEOUT;
+ /* Best Effort Flush timer interval*/
+ btampContext->bapBEFlushTimerInterval = WLANBAP_BE_FLUSH_TIMEOUT;
+
+
+ /* Form and immediately return the command complete event... */
+ bapHCIEvent.bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ bapHCIEvent.u.btampCommandCompleteEvent.present = 1;
+ bapHCIEvent.u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ bapHCIEvent.u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_RESET_CMD;
+ bapHCIEvent.u.btampCommandCompleteEvent.cc_event.Reset.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ vosStatus = (*btampContext->pBapHCIEventCB)
+ (
+ //btampContext->pHddHdl, /* this refers to the BSL per connection context */
+ btampContext->pAppHdl, /* this refers the BSL per application context */
+ &bapHCIEvent, /* This now encodes ALL event types */
+ VOS_FALSE /* Flag to indicate assoc-specific event */
+ );
+
+ return vosStatus;
+} /* WLAN_BAPReset */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPSetEventMask()
+
+ DESCRIPTION
+ Implements the actual HCI Set Event Mask command. There is no need for
+ a callback because when this call returns the action has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCISetEventMask: pointer to the "HCI Set Event Mask" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCISetEventMask is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPSetEventMask
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Set_Event_Mask_Cmd *pBapHCISetEventMask,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPSetEventMask */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPFlush()
+
+ DESCRIPTION
+ Implements the actual HCI Flush command
+ Produces an asynchronous command complete event. Through the
+ event callback. And an asynchronous Flush occurred event. Also through the
+ event callback.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIFlush: pointer to the "HCI Flush" Structure.
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIFlush is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPFlush
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Flush_Cmd *pBapHCIFlush
+)
+{
+ VOS_STATUS vosStatus;
+ tBtampHCI_Event bapHCIEvent; /* This now encodes ALL event types */
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if (btampHandle == NULL) {
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Form and immediately return the command complete event... */
+ bapHCIEvent.bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ bapHCIEvent.u.btampCommandCompleteEvent.present = 1;
+ bapHCIEvent.u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ bapHCIEvent.u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_FLUSH_CMD;
+ bapHCIEvent.u.btampCommandCompleteEvent.cc_event.Flush.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ vosStatus = (*btampContext->pBapHCIEventCB)
+ (
+ //btampContext->pHddHdl, /* this refers to the BSL per connection context */
+ btampContext->pAppHdl, /* this refers the BSL per application context */
+ &bapHCIEvent, /* This now encodes ALL event types */
+ VOS_FALSE /* Flag to indicate assoc-specific event */
+ );
+
+ return vosStatus;
+} /* WLAN_BAPFlush */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_EnhancedBAPFlush()
+
+ DESCRIPTION
+ Implements the actual HCI Enhanced Flush command
+ Produces an asynchronous command complete event. Through the command status
+ event callback. And an asynchronous Enhanced Flush Complete event.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIFlush: pointer to the "HCI Enhanced Flush" Structure.
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIFlush is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_EnhancedBAPFlush
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Enhanced_Flush_Cmd *pBapHCIFlush,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+
+)
+{
+ VOS_STATUS vosStatus = VOS_STATUS_SUCCESS;
+ tBtampHCI_Event bapHCIEvent; /* This now encodes ALL event types */
+ ptBtampContext btampContext;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ btampContext = (ptBtampContext) btampHandle;
+ /* Form and return the command status event... */
+ bapHCIEvent.bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_STATUS_EVENT;
+ bapHCIEvent.u.btampCommandStatusEvent.present = 1;
+ bapHCIEvent.u.btampCommandStatusEvent.num_hci_command_packets = 1;
+ bapHCIEvent.u.btampCommandStatusEvent.command_opcode
+ = BTAMP_TLV_HCI_ENHANCED_FLUSH_CMD;
+ bapHCIEvent.u.btampCommandStatusEvent.status = WLANBAP_STATUS_SUCCESS;
+
+ /* Form and immediately return the command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_ENHANCED_FLUSH_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampEnhancedFlushCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampEnhancedFlushCompleteEvent.log_link_handle =
+ pBapHCIFlush->log_link_handle;
+
+ vosStatus = (*btampContext->pBapHCIEventCB)
+ (
+ //btampContext->pHddHdl, /* this refers to the BSL per connection context */
+ btampContext->pAppHdl, /* this refers the BSL per application context */
+ &bapHCIEvent, /* This now encodes ALL event types */
+ VOS_FALSE /* Flag to indicate assoc-specific event */
+ );
+
+ return vosStatus;
+} /* WLAN_EnhancedBAPFlush */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadConnectionAcceptTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Read Connection Accept Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadConnectionAcceptTimeout is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadConnectionAcceptTimeout
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete */
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_CONNECTION_ACCEPT_TIMEOUT_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Connection_Accept_TO.status
+ = WLANBAP_STATUS_SUCCESS;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Connection_Accept_TO.connection_accept_timeout
+ = btampContext->bapConnectionAcceptTimerInterval;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadConnectionAcceptTimeout */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPWriteConnectionAcceptTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Write Connection Accept Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIWriteConnectionAcceptTimeout: pointer to the "HCI Connection Accept Timeout" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIWriteConnectionAcceptTimeout is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPWriteConnectionAcceptTimeout
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd *pBapHCIWriteConnectionAcceptTimeout,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIWriteConnectionAcceptTimeout)
+ || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Validate the allowed timeout interval range */
+ if ((pBapHCIWriteConnectionAcceptTimeout->connection_accept_timeout >
+ WLANBAP_CON_ACCEPT_TIMEOUT_MAX_RANGE) ||
+ (pBapHCIWriteConnectionAcceptTimeout->connection_accept_timeout <
+ WLANBAP_CON_ACCEPT_TIMEOUT_MIN_RANGE))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Out of range for connection accept timeout parameters in %s",
+ __FUNCTION__);
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Connection_Accept_TO.status
+ = WLANBAP_ERROR_INVALID_HCI_CMND_PARAM;
+ }
+ else
+ {
+ /* Save the Physical link connection accept timeout value */
+ btampContext->bapConnectionAcceptTimerInterval =
+ pBapHCIWriteConnectionAcceptTimeout->connection_accept_timeout;
+
+ /* Return status for command complete event */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Connection_Accept_TO.status
+ = WLANBAP_STATUS_SUCCESS;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPWriteConnectionAcceptTimeout */
+
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadLinkSupervisionTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Read Link Supervision Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadLinkSupervisionTimeout is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadLinkSupervisionTimeout
+(
+ ptBtampHandle btampHandle,
+ /* Only 8 bits (phy_link_handle) of this log_link_handle are valid. */
+ tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd *pBapHCIReadLinkSupervisionTimeout,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ v_U8_t phyLinkHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIReadLinkSupervisionTimeout) ||
+ (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Validate the phyiscal link handle extracted from
+ logical link handle (lower byte valid) */
+ phyLinkHandle = (v_U8_t) pBapHCIReadLinkSupervisionTimeout->log_link_handle;
+
+ if (phyLinkHandle != btampContext->phy_link_handle)
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid Physical link handle in %s", __FUNCTION__);
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Link_Supervision_TO.link_supervision_timeout
+ = 0x00; /* Invalid value */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Link_Supervision_TO.log_link_handle
+ = pBapHCIReadLinkSupervisionTimeout->log_link_handle;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Link_Supervision_TO.status
+ = WLANBAP_ERROR_INVALID_HCI_CMND_PARAM;
+ }
+ else
+ {
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Link_Supervision_TO.link_supervision_timeout
+ = btampContext->bapLinkSupervisionTimerInterval;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Link_Supervision_TO.log_link_handle
+ = pBapHCIReadLinkSupervisionTimeout->log_link_handle;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Link_Supervision_TO.status
+ = WLANBAP_STATUS_SUCCESS;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_LINK_SUPERVISION_TIMEOUT_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadLinkSupervisionTimeout */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPWriteLinkSupervisionTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Write Link Supervision Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIWriteLinkSupervisionTimeout: pointer to the "HCI Link Supervision Timeout" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIWriteLinkSupervisionTimeout is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPWriteLinkSupervisionTimeout
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd *pBapHCIWriteLinkSupervisionTimeout,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ v_U8_t phyLinkHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIWriteLinkSupervisionTimeout) ||
+ (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Validate the phyiscal link handle extracted from
+ logical link handle (lower byte valid) */
+ phyLinkHandle = (v_U8_t) pBapHCIWriteLinkSupervisionTimeout->log_link_handle;
+
+ if (phyLinkHandle != btampContext->phy_link_handle)
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid Physical link handle in %s", __FUNCTION__);
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Link_Supervision_TO.log_link_handle
+ = pBapHCIWriteLinkSupervisionTimeout->log_link_handle;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Link_Supervision_TO.status
+ = WLANBAP_ERROR_INVALID_HCI_CMND_PARAM;
+ }
+ else
+ {
+ /* Save the LS timeout interval */
+ btampContext->bapLinkSupervisionTimerInterval =
+ pBapHCIWriteLinkSupervisionTimeout->link_supervision_timeout;
+
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Link_Supervision_TO.log_link_handle
+ = pBapHCIWriteLinkSupervisionTimeout->log_link_handle;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Link_Supervision_TO.status
+ = WLANBAP_STATUS_SUCCESS;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_WRITE_LINK_SUPERVISION_TIMEOUT_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPWriteLinkSupervisionTimeout */
+
+/* v3.0 Host Controller and Baseband Commands */
+
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadLogicalLinkAcceptTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Read Logical Link Accept Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadLogicalLinkAcceptTimeout is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadLogicalLinkAcceptTimeout
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Logical_Link_Accept_TO.status
+ = WLANBAP_STATUS_SUCCESS;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Logical_Link_Accept_TO.logical_link_accept_timeout
+ = btampContext->bapLogicalLinkAcceptTimerInterval;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadLogicalLinkAcceptTimeout */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPWriteLogicalLinkAcceptTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Write Logical Link Accept Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIWriteLogicalLinkAcceptTimeout: pointer to the "HCI Logical Link Accept Timeout" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIWriteLogicalLinkAcceptTimeout is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPWriteLogicalLinkAcceptTimeout
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd *pBapHCIWriteLogicalLinkAcceptTimeout,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIWriteLogicalLinkAcceptTimeout)
+ || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Validate the allowed timeout interval range */
+ if ((pBapHCIWriteLogicalLinkAcceptTimeout->logical_link_accept_timeout >
+ WLANBAP_CON_ACCEPT_TIMEOUT_MAX_RANGE) ||
+ (pBapHCIWriteLogicalLinkAcceptTimeout->logical_link_accept_timeout <
+ WLANBAP_CON_ACCEPT_TIMEOUT_MIN_RANGE))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Out of range for logical connection accept timeout parameters in %s",
+ __FUNCTION__);
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Logical_Link_Accept_TO.status
+ = WLANBAP_ERROR_INVALID_HCI_CMND_PARAM;
+ }
+ else
+ {
+ /* Save the Physical link connection accept timeout value */
+ btampContext->bapLogicalLinkAcceptTimerInterval =
+ pBapHCIWriteLogicalLinkAcceptTimeout->logical_link_accept_timeout;
+
+ /* Return status for command complete event */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Logical_Link_Accept_TO.status
+ = WLANBAP_STATUS_SUCCESS;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPWriteLogicalLinkAcceptTimeout */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPSetEventMaskPage2()
+
+ DESCRIPTION
+ Implements the actual HCI Set Event Mask Page 2 command. There is no need for
+ a callback because when this call returns the action has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCISetEventMaskPage2: pointer to the "HCI Set Event Mask Page 2" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCISetEventMaskPage2 is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPSetEventMaskPage2
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd *pBapHCISetEventMaskPage2,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCISetEventMaskPage2)
+ || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+
+ /* Save away the event mask */
+ vos_mem_copy(
+ btampContext->event_mask_page_2,
+ pBapHCISetEventMaskPage2->event_mask_page_2,
+ 8 );
+
+ /* Return status for command complete event */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Set_Event_Mask_Page_2.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_SET_EVENT_MASK_PAGE_2_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPSetEventMaskPage2 */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadLocationData()
+
+ DESCRIPTION
+ Implements the actual HCI Read Location Data command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadLocationData is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadLocationData
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ ptBtampContext btampContext;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ btampContext = (ptBtampContext) btampHandle;
+
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Location_Data.loc_domain_aware
+ = btampContext->btamp_Location_Data_Info.loc_domain_aware;
+
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Location_Data.loc_options
+ = btampContext->btamp_Location_Data_Info.loc_options;
+
+ vos_mem_copy(
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Location_Data.loc_domain,
+ btampContext->btamp_Location_Data_Info.loc_domain,
+ 3 );
+
+ /* Return status for command complete event */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Location_Data.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_LOCATION_DATA_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadLocationData */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPWriteLocationData()
+
+ DESCRIPTION
+ Implements the actual HCI Write Location Data command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIWriteLocationData: pointer to the "HCI Write Location Data" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIWriteLocationData is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPWriteLocationData
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Write_Location_Data_Cmd *pBapHCIWriteLocationData,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIWriteLocationData)
+ || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ btampContext = (ptBtampContext) btampHandle;
+
+ btampContext->btamp_Location_Data_Info.loc_domain_aware =
+ pBapHCIWriteLocationData->loc_domain_aware;
+
+ btampContext->btamp_Location_Data_Info.loc_options =
+ pBapHCIWriteLocationData->loc_options;
+
+ vos_mem_copy(
+ btampContext->btamp_Location_Data_Info.loc_domain,
+ pBapHCIWriteLocationData->loc_domain,
+ 3 );
+
+ /* Return status for command complete event */
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Write_Location_Data.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_WRITE_LOCATION_DATA_CMD;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPWriteLocationData */
+
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadFlowControlMode()
+
+ DESCRIPTION
+ Implements the actual HCI Read Flow Control Mode command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadFlowControlMode is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadFlowControlMode
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Fill in the parameters for command complete event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = TRUE;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_READ_FLOW_CONTROL_MODE_CMD;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Flow_Control_Mode.status
+ = WLANBAP_STATUS_SUCCESS;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Read_Flow_Control_Mode.flow_control_mode
+ = WLANBAP_FLOW_CONTROL_MODE_BLOCK_BASED;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadFlowControlMode */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPWriteFlowControlMode()
+
+ DESCRIPTION
+ Implements the actual HCI Write Flow Control Mode command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIWriteFlowControlMode: pointer to the "HCI Write Flow Control Mode" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIWriteFlowControlMode is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPWriteFlowControlMode
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Write_Flow_Control_Mode_Cmd *pBapHCIWriteFlowControlMode,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPWriteFlowControlMode */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPReadBestEffortFlushTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Read Best Effort Flush Timeout command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIReadBEFlushTO is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPReadBestEffortFlushTimeout
+(
+ ptBtampHandle btampHandle,
+ /* The log_link_hanlde identifies which logical link's BE TO*/
+ tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd *pBapHCIReadBEFlushTO,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including "Read" Command Complete*/
+)
+{
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPReadBestEffortFlushTimeout */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPWriteBestEffortFlushTimeout()
+
+ DESCRIPTION
+ Implements the actual HCI Write Best Effort Flush TO command. There
+ is no need for a callback because when this call returns the action
+ has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIWriteBEFlushTO: pointer to the "HCI Write BE Flush TO" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIWriteBEFlushTO is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPWriteBestEffortFlushTimeout
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd *pBapHCIWriteBEFlushTO,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPWriteBestEffortFlushTimeout */
+
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPSetShortRangeMode()
+
+ DESCRIPTION
+ Implements the actual HCI Set Short Range Mode command. There is no need for
+ a callback because when this call returns the action has been completed.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+ pBapHCIShortRangeMode: pointer to the "HCI Set Short Range Mode" Structure.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIShortRangeMode is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPSetShortRangeMode
+(
+ ptBtampHandle btampHandle,
+ tBtampTLVHCI_Set_Short_Range_Mode_Cmd *pBapHCIShortRangeMode,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ BTAMPFSM_INSTANCEDATA_T *instanceVar = &(btampContext->bapPhysLinkMachine);
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Validate the BAP state to accept the Short Range Mode set request;
+ SRM set requests are allowed only in CONNECTED state */
+
+ /* Form and return the command status event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_STATUS_EVENT;
+ pBapHCIEvent->u.btampCommandStatusEvent.present = 1;
+ pBapHCIEvent->u.btampCommandStatusEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandStatusEvent.command_opcode
+ = BTAMP_TLV_HCI_SET_SHORT_RANGE_MODE_CMD;
+
+ if (CONNECTED != instanceVar->stateVar)
+ {
+ /* Short Range Mode request in invalid state */
+ pBapHCIEvent->u.btampCommandStatusEvent.status =
+ WLANBAP_ERROR_CMND_DISALLOWED;
+ return VOS_STATUS_SUCCESS;
+ }
+ else if (pBapHCIShortRangeMode->phy_link_handle != btampContext->phy_link_handle)
+ {
+ /* Invalid Physical link handle */
+ pBapHCIEvent->u.btampCommandStatusEvent.status =
+ WLANBAP_ERROR_NO_CNCT;
+ return VOS_STATUS_SUCCESS;
+ }
+ else if (pBapHCIShortRangeMode->short_range_mode > 0x01)
+ {
+ /* Invalid mode requested */
+ pBapHCIEvent->u.btampCommandStatusEvent.status =
+ WLANBAP_ERROR_INVALID_HCI_CMND_PARAM;
+ return VOS_STATUS_SUCCESS;
+ }
+
+ pBapHCIEvent->u.btampCommandStatusEvent.status = WLANBAP_STATUS_SUCCESS;
+
+ /* Send the Command Status event (success) here, since Change Complete is next */
+ (*btampContext->pBapHCIEventCB)
+ (
+ btampContext->pHddHdl, /* this refers to the BSL per connection context */
+ pBapHCIEvent, /* This now encodes ALL event types */
+ VOS_FALSE /* Flag to indicate assoc-specific event */
+ );
+
+ /* Format the Short Range Mode Complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_SHORT_RANGE_MODE_CHANGE_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampShortRangeModeChangeCompleteEvent.present = 1;
+
+ pBapHCIEvent->u.btampShortRangeModeChangeCompleteEvent.status =
+ WLANBAP_STATUS_SUCCESS; /* Assumption for now */
+
+ /* The input parameters will go out in the CC Event */
+ pBapHCIEvent->u.btampShortRangeModeChangeCompleteEvent.phy_link_handle =
+ pBapHCIShortRangeMode->phy_link_handle;
+
+ pBapHCIEvent->u.btampShortRangeModeChangeCompleteEvent.short_range_mode =
+ pBapHCIShortRangeMode->short_range_mode; /* Assumption for now */
+
+ /* If the requested setting is different from the current setting... */
+ if (pBapHCIShortRangeMode->short_range_mode != btampContext->phy_link_srm)
+ {
+ /* ... then change the SRM according to the requested value.
+ * If the attempt fails, the assumptions above need to be corrected.
+ */
+ #if 0
+ // Suggested API, needs to be created
+ if (VOS_STATUS_SUCCESS != HALSetShortRangeMode(pBapHCIShortRangeMode->short_range_mode))
+ #else
+ if (0)
+ #endif
+ {
+ pBapHCIEvent->u.btampShortRangeModeChangeCompleteEvent.status =
+ WLANBAP_ERROR_HARDWARE_FAILURE;
+ pBapHCIEvent->u.btampShortRangeModeChangeCompleteEvent.short_range_mode =
+ btampContext->phy_link_srm; /* Switch back to current value */
+ }
+ else
+ {
+ /* Update the SRM setting for this physical link, since it worked */
+ btampContext->phy_link_srm = pBapHCIShortRangeMode->short_range_mode;
+ }
+ }
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPSetShortRangeMode */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPVendorSpecificCmd0()
+
+ DESCRIPTION
+ Implements the actual HCI Vendor Specific Command 0 (OGF 0x3f, OCF 0x0000).
+ There is no need for a callback because when this call returns the action has
+ been completed.
+
+ The command is received when:
+ - The A2MP Create Phy Link Response has been rx'd by the Bluetooth stack (initiator)
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIEvent is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPVendorSpecificCmd0
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ BTAMPFSM_INSTANCEDATA_T *instanceVar = &(btampContext->bapPhysLinkMachine);
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /* Validate the BAP state to accept the Vendor Specific Cmd 0:
+ this is only allowed for the BT_INITIATOR in the CONNECTING state */
+
+ /* Form and return the command status event... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_STATUS_EVENT;
+ pBapHCIEvent->u.btampCommandStatusEvent.present = 1;
+ pBapHCIEvent->u.btampCommandStatusEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandStatusEvent.command_opcode
+ = BTAMP_TLV_HCI_VENDOR_SPECIFIC_CMD_0;
+
+ if ( (BT_INITIATOR != btampContext->BAPDeviceRole) ||
+ (CONNECTING != instanceVar->stateVar) )
+ {
+ /* Vendor Specific Command 0 happened in invalid state */
+ pBapHCIEvent->u.btampCommandStatusEvent.status =
+ WLANBAP_ERROR_CMND_DISALLOWED;
+ return VOS_STATUS_SUCCESS;
+ }
+
+ /* Signal BT Coexistence code in firmware to prefer WLAN */
+ WLANBAP_NeedBTCoexPriority(btampContext, 1);
+
+ pBapHCIEvent->u.btampCommandStatusEvent.status = WLANBAP_STATUS_SUCCESS;
+
+ /* Send the Command Status event (success) here, since Command Complete is next */
+ (*btampContext->pBapHCIEventCB)
+ (
+ btampContext->pHddHdl, /* this refers to the BSL per connection context */
+ pBapHCIEvent, /* This now encodes ALL event types */
+ VOS_FALSE /* Flag to indicate assoc-specific event */
+ );
+
+ /* Format the Vendor Specific Command 0 Complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_VENDOR_SPECIFIC_CMD_0;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Vendor_Specific_Cmd_0.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPVendorSpecificCmd0 */
+
+/*----------------------------------------------------------------------------
+
+ FUNCTION WLAN_BAPVendorSpecificCmd1()
+
+ DESCRIPTION
+ Implements the actual HCI Vendor Specific Command 1 (OGF 0x3f, OCF 0x0001).
+ There is no need for a callback because when this call returns the action has
+ been completed.
+
+ The command is received when:
+ - HCI wants to enable testability
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ btampHandle: pointer to the BAP handle. Returned from WLANBAP_GetNewHndl.
+
+ IN/OUT
+ pBapHCIEvent: Return event value for the command complete event.
+ (The caller of this routine is responsible for sending
+ the Command Complete event up the HCI interface.)
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ VOS_STATUS_E_FAULT: pointer to pBapHCIEvent is NULL
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+
+----------------------------------------------------------------------------*/
+VOS_STATUS
+WLAN_BAPVendorSpecificCmd1
+(
+ ptBtampHandle btampHandle,
+ tpBtampHCI_Event pBapHCIEvent /* This now encodes ALL event types */
+ /* Including Command Complete and Command Status*/
+)
+{
+ ptBtampContext btampContext = (ptBtampContext) btampHandle;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: btampHandle value: %x", __FUNCTION__, btampHandle);
+
+ /* Validate params */
+ if ((NULL == btampHandle) || (NULL == pBapHCIEvent))
+ {
+ VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Invalid input parameters in %s", __FUNCTION__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+
+ btampContext->btamp_async_logical_link_create = TRUE;
+
+
+ /* Format the Vendor Specific Command 1 Complete event to return... */
+ pBapHCIEvent->bapHCIEventCode = BTAMP_TLV_HCI_COMMAND_COMPLETE_EVENT;
+ pBapHCIEvent->u.btampCommandCompleteEvent.present = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.num_hci_command_packets = 1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.command_opcode
+ = BTAMP_TLV_HCI_VENDOR_SPECIFIC_CMD_1;
+ pBapHCIEvent->u.btampCommandCompleteEvent.cc_event.Vendor_Specific_Cmd_1.status
+ = WLANBAP_STATUS_SUCCESS;
+
+ return VOS_STATUS_SUCCESS;
+} /* WLAN_BAPVendorSpecificCmd1 */
+
+/*----------------------------------------------------------------------------
+
+ DESCRIPTION
+ Callback registered with TL for BAP, this is required in order for
+ TL to inform BAP, that the flush operation requested has been completed.
+
+ The registered reception callback is being triggered by TL whenever a
+ frame SIR_TL_HAL_FLUSH_AC_RSP is received by TL from HAL.
+
+ PARAMETERS
+
+ IN
+ pvosGCtx: pointer to the global vos context; a handle to TL's
+ or SME's control block can be extracted from its context
+ ucStaId: station identifier for the requested value
+ ucTid: identifier of the tspec
+ status: status of the Flush operation
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+----------------------------------------------------------------------------*/
+VOS_STATUS WLANBAP_TLFlushCompCallback
+(
+ v_PVOID_t pvosGCtx,
+ v_U8_t ucStaId,
+ v_U8_t ucTID,
+ v_U8_t status
+)
+{
+
+ return VOS_STATUS_SUCCESS;
+} // WLANBAP_TLFlushCompCallback
+
+
+/* End of v3.0 Host Controller and Baseband Commands */
+
+
+
+
+