| /* |
| * Copyright (c) 2012-2013 The Linux Foundation. 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. |
| */ |
| |
| /* |
| * This file was originally distributed by Qualcomm Atheros, Inc. |
| * under proprietary terms before Copyright ownership was assigned |
| * to the Linux Foundation. |
| */ |
| |
| /** |
| * \file btampHCI.c |
| * |
| * \brief Structures, functions & definitions for |
| * working with 802.11 Frames |
| * |
| * |
| |
| * |
| * |
| * This file was automatically generated by 'framesc' |
| * Fri Feb 27 17:29:19 2009 from the following file(s): |
| * |
| * btampHCI.frms |
| * |
| * PLEASE DON'T EDIT THIS FILE BY HAND! |
| * |
| * |
| */ |
| |
| #include <memory.h> /* For memcpy */ |
| #include <stddef.h> /* For offsetof */ |
| |
| #define _vsnprintf vsnprintf |
| |
| #include "vos_api.h" |
| #include "btampHCI.h" |
| |
| #if defined ( _MSC_VER ) |
| # pragma warning (disable: 4244) |
| # pragma warning (disable: 4505) |
| # pragma warning (disable: 4702) |
| # pragma warning (disable: 4996) /* ... was declared deprecated */ |
| #endif /* Microsoft C/C++ */ |
| |
| /*Length of the value field expected in a TLV of type Connected Channel in an |
| AMP Assoc*/ |
| #define WLAN_BAP_PAL_AMP_ASSOC_CONN_CH_TLV_MIN_LEN 3 |
| |
| /*Length of the value field expected in a TLV of type Preferred Channel in an |
| AMP Assoc*/ |
| #define WLAN_BAP_PAL_AMP_ASSOC_PREF_CH_TLV_MIN_LEN 3 |
| |
| /*Length of the value field expected in a TLV of type MAC Address*/ |
| #define WLAN_BAP_PAL_MAC_ADDR_TLV_LEN 6 |
| |
| /*Length of the value field expected in a TLV of type Capabilities*/ |
| #define WLAN_BAP_PAL_CAPABILITIES_TLV_LEN 4 |
| |
| /*Length of the value field expected in a TLV of type Version*/ |
| #define WLAN_BAP_PAL_VERSION_TLV_LEN 5 |
| |
| /*Length of the value field expected in a TLV of type Accept Phy Link*/ |
| #define WLAN_BAP_PAL_ACC_PHY_LINK_TLV_MIN_LEN 3 |
| |
| /*Length of the value field expected in a TLV of type Accept Log Link*/ |
| #define WLAN_BAP_PAL_ACC_LOG_LINK_TLV_LEN 37 |
| |
| /*Length of the value field expected in a TLV of type Create Log Link*/ |
| #define WLAN_BAP_PAL_CREATE_LOG_LINK_TLV_LEN 37 |
| |
| /*Length of the value field expected in a TLV of type Create Phy Link*/ |
| #define WLAN_BAP_PAL_CREATE_PHY_LINK_TLV_MIN_LEN 3 |
| |
| /*Length of the value field expected in a TLV of type Disconnect Log Link*/ |
| #define WLAN_BAP_PAL_DISC_LOG_LINK_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Disconnect Phy Link*/ |
| #define WLAN_BAP_PAL_DISC_PHY_LINK_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Flow Spec Modify*/ |
| #define WLAN_BAP_PAL_FLOW_SPEC_MOD_TLV_LEN 34 |
| |
| /*Length of the value field expected in a TLV of type Flush*/ |
| #define WLAN_BAP_PAL_FLUSH_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type enhanced Flush*/ |
| #define WLAN_BAP_PAL_ENHANCED_FLUSH_TLV_LEN 3 |
| |
| /*Length of the value field expected in a TLV of type Cancel Log Link*/ |
| #define WLAN_BAP_PAL_CANCEL_LOG_LINK_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Read Best Effort Flush |
| Timeout*/ |
| #define WLAN_BAP_PAL_READ_BE_FLUSH_TIMEOUT_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Read Failed Contact |
| Counter*/ |
| #define WLAN_BAP_PAL_READ_FAILED_CONTACT_CNT_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Link Quality*/ |
| #define WLAN_BAP_PAL_READ_LINK_QUALITY_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Read Link Supervision |
| Timeout*/ |
| #define WLAN_BAP_PAL_READ_LINK_SVISISON_TIMEOUT_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Read Local AMP Assoc*/ |
| #define WLAN_BAP_PAL_READ_LOCAL_AMP_ASSOC_TLV_LEN 5 |
| |
| /*Length of the value field expected in a TLV of type Read RSSI*/ |
| #define WLAN_BAP_PAL_READ_RSSI_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Reset Failed Contact |
| Counter*/ |
| #define WLAN_BAP_PAL_RESET_FAILED_CONTACT_CNT_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Set Event Mask*/ |
| #define WLAN_BAP_PAL_SET_EVENT_MASK_TLV_LEN 8 |
| |
| /*Length of the value field expected in a TLV of type Set Event Mask2*/ |
| #define WLAN_BAP_PAL_SET_EVENT_MASK2_TLV_LEN 8 |
| |
| /*Length of the value field expected in a TLV of type Set SHort Range Mode*/ |
| #define WLAN_BAP_PAL_SET_SHORT_RANGE_MODE_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Write Best Effort Flush |
| Timeout*/ |
| #define WLAN_BAP_PAL_WRITE_BE_FLUSH_TIMEOUT_TLV_LEN 6 |
| |
| /*Length of the value field expected in a TLV of type Write Connection Accept |
| Timeout*/ |
| #define WLAN_BAP_PAL_WRITE_CON_ACC_TIMEOUT_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Write Flow Control Mode*/ |
| #define WLAN_BAP_PAL_WRITE_FLOW_CTRL_MODE_TLV_LEN 1 |
| |
| /*Length of the value field expected in a TLV of type Write Link Supervision |
| Timeout*/ |
| #define WLAN_BAP_PAL_WRITE_LINK_SVISION_TIMEOUT_TLV_LEN 4 |
| |
| /*Length of the value field expected in a TLV of type Write Location Data*/ |
| #define WLAN_BAP_PAL_WRITE_LOCATION_DATA_CMD_TLV_LEN 5 |
| |
| /*Length of the value field expected in a TLV of type Write LL Acc Timeout*/ |
| #define WLAN_BAP_PAL_WRITE_LOG_LINK_ACC_TIMEOUT_TLV_LEN 2 |
| |
| /*Length of the value field expected in a TLV of type Write Loopback Mode*/ |
| #define WLAN_BAP_PAL_WRITE_LOOOPBACK_MODE_TLV_LEN 1 |
| |
| /*Length of the value field expected in a TLV of type Write Remote AMP Assoc*/ |
| #define WLAN_BAP_PAL_WRITE_REMOTE_AMP_ASSOC_MIN_TLV_LEN 5 |
| |
| /* As per AMP specification */ |
| /* Regulatory Extension Identifier for channel list */ |
| #define WLAN_BAP_PAL_REG_EXTN_ID_VAL 201 |
| |
| /* Regulatory Class for channel list */ |
| #define WLAN_BAP_PAL_REG_CLASS_VAL 254 |
| |
| /* Coverage ClASS for channel list */ |
| #define WLAN_BAP_PAL_COVERAGE_CLASS_VAL 0 |
| |
| |
| /* LOGGING and VALIDITY_CHECKING control */ |
| //#define WLAN_BAPHCI_ENABLE_VALIDITY_CHECKING |
| //#define WLAN_BAPHCI_ENABLE_LOGGING |
| |
| typedef unsigned char tFRAMES_BOOL; |
| typedef void (*pfnGeneric_t)(void); |
| |
| |
| typedef struct sFFDefn { |
| v_U8_t size; |
| size_t offset; |
| v_U16_t sig; |
| pfnGeneric_t pfn; |
| const char *name; |
| } tFFDefn; |
| |
| typedef struct sIEDefn { |
| v_U8_t eid; |
| v_U16_t minSize; |
| v_U16_t maxSize; |
| size_t offset; |
| size_t presenceOffset; |
| size_t countOffset; |
| v_U16_t arraybound; |
| unsigned char oui[5]; |
| unsigned char noui; |
| v_U16_t sig; |
| pfnGeneric_t pfn; |
| const char *name; |
| tFRAMES_BOOL fMandatory; |
| } tIEDefn; |
| |
| #if !defined(countof) |
| #define countof(x) ( sizeof( (x) ) / sizeof( (x)[0] ) ) |
| #endif |
| |
| #if ! defined(BTAMP_MEMCPY) |
| # define BTAMP_MEMCPY(ctx, dst, src, len) \ |
| vos_mem_copy( (dst), (src), (len) ) \ |
| |
| #endif |
| |
| #if ! defined(BTAMP_MEMCMP) |
| # define BTAMP_MEMCMP(ctx, lhs, rhs, len) \ |
| memcmp( (lhs), (rhs), (len) ) \ |
| |
| #endif |
| |
| #ifndef BTAMP_HAVE_LOG_SEVERITIES |
| # define FRLOG_OFF ( 0 ) |
| # define FRLOGP ( 1 ) |
| # define FRLOGE ( 2 ) |
| # define FRLOGW ( 3 ) |
| # define FRLOG1 ( 4 ) |
| # define FRLOG2 ( 5 ) |
| # define FRLOG3 ( 6 ) |
| # define FRLOG4 ( 7 ) |
| #endif |
| |
| #define FRFL(x) x |
| |
| #ifdef BTAMP_ENABLE_LOGGING |
| |
| #ifndef BTAMP_HAVE_LOG_MACROS |
| |
| #include <stdio.h> |
| #include <stdarg.h> |
| |
| #ifndef BTAMP_LOG_GATE |
| # define BTAMP_LOG_GATE FRLOGW |
| #endif // BTAMP_LOG_GATE |
| |
| #ifdef WIN32 |
| |
| #if defined ( _CONSOLE ) || defined ( _WINDOWS ) || defined ( _DLL ) || defined ( _LIB ) |
| #include <windows.h> |
| #define DBGPRINT OutputDebugStringA |
| #else /* Not User mode */ |
| #define DBGPRINT DbgPrint |
| #endif /* User mode */ |
| |
| |
| |
| static void framesLog(void * pCtx, int nSev, |
| const char *lpszFormat, ...) |
| { |
| va_list val; |
| char buffer[1024]; |
| (void)pCtx; |
| if ( nSev <= BTAMP_LOG_GATE ) |
| { |
| va_start(val, lpszFormat); |
| _vsnprintf(buffer, 1024, lpszFormat, val); |
| va_end(val); |
| DBGPRINT(buffer); |
| } |
| } |
| static void framesDump(void * pCtx, int nSev, v_U8_t *pBuf, int nBuf) |
| { |
| char buffer[35]; |
| int i, offset; |
| pCtx; |
| offset = 0; |
| if ( nSev > BTAMP_LOG_GATE ) return; |
| for (i = 0; i < nBuf/8; ++i) |
| { |
| _snprintf(buffer, 35, "%08x: %02x %02x %02x %02x %02x %02x %02x %02x\n", offset, *pBuf, *(pBuf + 1), *(pBuf + 2), *(pBuf + 3), *(pBuf + 4), *(pBuf + 5), *(pBuf + 6), *(pBuf + 7)); |
| pBuf += 8; offset += 8; |
| DBGPRINT(buffer); |
| } |
| _snprintf(buffer, 35, "%08x: ", offset); |
| DBGPRINT(buffer); |
| for (i = 0; i < nBuf % 8; ++i) |
| { |
| _snprintf(buffer, 35, "%02x ", *pBuf); |
| ++pBuf; |
| DBGPRINT(buffer); |
| } |
| DBGPRINT("\n"); |
| } |
| |
| #elif defined OS_X /* Not WIN32 */ |
| static void framesLog(void * pCtx, int nSev, |
| const char *lpszFormat, ...) |
| {// To fill in when needed using IOLog |
| |
| } |
| |
| static void framesDump(void * pCtx, int nSev, v_U8_t *pBuf, int nBuf) |
| { |
| } |
| |
| #elif defined LINUX |
| |
| static void framesLog(void * pCtx, int nSev, |
| const char *lpszFormat, ...) |
| { |
| va_list marker; |
| (void)pCtx; |
| if ( nSev <= BTAMP_LOG_GATE ) |
| { |
| va_start( marker, lpszFormat ); |
| vprintf(lpszFormat, marker); |
| va_end( marker ); |
| } |
| } |
| |
| static void framesDump(void * pCtx, int nSev, v_U8_t *pBuf, int nBuf) |
| { |
| char buffer[35]; |
| int i, offset; |
| (void)pCtx; |
| offset = 0; |
| if ( nSev > BTAMP_LOG_GATE ) return; |
| for (i = 0; i < nBuf/8; ++i) |
| { |
| printf("%08x: %02x %02x %02x %02x %02x %02x %02x %02x\n", offset, *pBuf, *(pBuf + 1), *(pBuf + 2), *(pBuf + 3), *(pBuf + 4), *(pBuf + 5), *(pBuf + 6), *(pBuf + 7)); |
| pBuf += 8; offset += 8; |
| } |
| printf("%08x: ", offset); |
| for (i = 0; i < nBuf % 8; ++i) |
| { |
| printf("%02x ", *pBuf); |
| ++pBuf; |
| } |
| printf("\n"); |
| } |
| |
| #endif /* WIN32 */ |
| |
| #define FRAMES_LOG0(ctx, sev, fmt) \ |
| framesLog((ctx), (sev), (fmt)); |
| #define FRAMES_LOG1(ctx, sev, fmt, p1) \ |
| framesLog((ctx), (sev), (fmt), (p1)); |
| #define FRAMES_LOG2(ctx, sev, fmt, p1, p2) \ |
| framesLog((ctx), (sev), (fmt), (p1), (p2)); |
| #define FRAMES_LOG3(ctx, sev, fmt, p1, p2, p3) \ |
| framesLog((ctx), (sev), (fmt), (p1), (p2), (p3)); |
| #define FRAMES_DUMP(ctx, sev, p, n) \ |
| framesDump((ctx), (sev), (p), (n)); |
| #ifndef FRAMES_SEV_FOR_FRAME |
| # define FRAMES_SEV_FOR_FRAME(ctx, sig) FRLOG3 |
| #endif |
| |
| #endif /* End BTAMP_HAVE_LOG_MACROS */ |
| |
| #else // ! BTAMP_ENABLE_LOGGING |
| # define FRAMES_LOG0(ctx, sev, fmt) |
| # define FRAMES_LOG1(ctx, sev, fmt, p1) |
| # define FRAMES_LOG2(ctx, sev, fmt, p1, p2) |
| # define FRAMES_LOG3(ctx, sev, fmt, p1, p2, p3) |
| # define FRAMES_DUMP(ctx, sev, p, n) |
| # ifndef FRAMES_SEV_FOR_FRAME |
| # define FRAMES_SEV_FOR_FRAME(ctx, sig) FRLOG3 |
| # endif |
| #endif // BTAMP_ENABLE_LOGGING |
| |
| #if defined( BTAMP_ENABLE_DBG_BREAK ) && defined ( WIN32 ) |
| # define FRAMES_DBG_BREAK() { _asm int 3 } |
| #else |
| # define FRAMES_DBG_BREAK() |
| #endif |
| |
| #if ! defined(BTAMP_PARAMETER_CHECK2) |
| # if defined (BTAMP_HAVE_WIN32_API) |
| |
| # define BTAMP_PARAMETER_CHECK2(pSrc, pBuf, nBuf, pnConsumed) do { \ |
| if (!pSrc || IsBadReadPtr(pSrc, 4)) return BTAMP_BAD_INPUT_BUFFER; \ |
| if (!pBuf || IsBadWritePtr(pBuf, nBuf)) return BTAMP_BAD_OUTPUT_BUFFER; \ |
| if (!nBuf) return BTAMP_BAD_OUTPUT_BUFFER; \ |
| if (IsBadWritePtr(pnConsumed, 4)) return BTAMP_BAD_OUTPUT_BUFFER; \ |
| } while (0) |
| |
| # else |
| |
| # define BTAMP_PARAMETER_CHECK2(pSrc, pBuf, nBuf, pnConsumed) do { \ |
| if (!pSrc) return BTAMP_BAD_INPUT_BUFFER; \ |
| if (!pBuf) return BTAMP_BAD_OUTPUT_BUFFER; \ |
| if (!nBuf) return BTAMP_BAD_OUTPUT_BUFFER; \ |
| if (!pnConsumed) return BTAMP_BAD_OUTPUT_BUFFER; \ |
| } while (0) |
| # endif |
| #endif |
| |
| static void framesntohs(void * pCtx, |
| v_U16_t *pOut, |
| v_U8_t *pIn, |
| tFRAMES_BOOL fMsb) |
| { |
| (void)pCtx; |
| # if defined ( BTAMP_LITTLE_ENDIAN_HOST ) |
| if ( !fMsb ) |
| { |
| BTAMP_MEMCPY(pCtx, ( v_U16_t* )pOut, pIn, 2); |
| } |
| else |
| { |
| *pOut = ( v_U16_t )( *pIn << 8 ) | *( pIn + 1 ); |
| } |
| # else |
| if ( !fMsb ) |
| { |
| *pOut = ( v_U16_t )( *pIn | ( *( pIn + 1 ) << 8 ) ); |
| } |
| else |
| { |
| BTAMP_MEMCPY(pCtx, ( v_U16_t* )pOut, pIn, 2); |
| } |
| # endif |
| } |
| |
| static void framesntohl(void * pCtx, |
| v_U32_t *pOut, |
| v_U8_t *pIn, |
| tFRAMES_BOOL fMsb) |
| { |
| (void)pCtx; |
| # if defined ( BTAMP_LITTLE_ENDIAN_HOST ) |
| if ( !fMsb ) |
| { |
| *pOut = * ( v_U32_t* )pIn; |
| } |
| else |
| { |
| *pOut = ( v_U32_t )( *pIn << 24 ) | |
| ( *( pIn + 1 ) << 16 ) | |
| ( *( pIn + 2 ) << 8 ) | |
| ( *( pIn + 3 ) ); |
| } |
| # else |
| if ( !fMsb ) |
| { |
| *pOut = ( v_U32_t )( *( pIn + 3 ) << 24 ) | |
| ( *( pIn + 2 ) << 16 ) | |
| ( *( pIn + 1 ) << 8 ) | |
| ( *( pIn ) ); |
| } |
| else |
| { |
| *pOut = * ( v_U32_t* )pIn; |
| } |
| # endif |
| } |
| |
| static void frameshtons(void * pCtx |
| , v_U8_t *pOut, |
| v_U16_t pIn, |
| tFRAMES_BOOL fMsb) |
| { |
| (void)pCtx; |
| # if defined ( BTAMP_LITTLE_ENDIAN_HOST ) |
| if ( !fMsb ) |
| { |
| BTAMP_MEMCPY(pCtx, pOut, &pIn, 2); |
| } |
| else |
| { |
| *pOut = ( pIn & 0xff00 ) >> 8; |
| *( pOut + 1 ) = pIn & 0xff; |
| } |
| # else |
| if ( !fMsb ) |
| { |
| *pOut = pIn & 0xff; |
| *( pOut + 1 ) = ( pIn & 0xff00 ) >> 8; |
| } |
| else |
| { |
| BTAMP_MEMCPY(pCtx, pOut, &pIn, 2); |
| } |
| # endif |
| } |
| |
| static void frameshtonl(void * pCtx, |
| v_U8_t *pOut, |
| v_U32_t pIn, |
| tFRAMES_BOOL fMsb) |
| { |
| (void)pCtx; |
| # if defined ( BTAMP_LITTLE_ENDIAN_HOST ) |
| if ( !fMsb ) |
| { |
| BTAMP_MEMCPY(pCtx, pOut, &pIn, 4); |
| } |
| else |
| { |
| *pOut = ( pIn & 0xff000000 ) >> 24; |
| *( pOut + 1 ) = ( pIn & 0x00ff0000 ) >> 16; |
| *( pOut + 2 ) = ( pIn & 0x0000ff00 ) >> 8; |
| *( pOut + 3 ) = ( pIn & 0x000000ff ); |
| } |
| # else |
| if ( !fMsb ) |
| { |
| *( pOut ) = ( pIn & 0x000000ff ); |
| *( pOut + 1 ) = ( pIn & 0x0000ff00 ) >> 8; |
| *( pOut + 2 ) = ( pIn & 0x00ff0000 ) >> 16; |
| *( pOut + 3 ) = ( pIn & 0xff000000 ) >> 24; |
| } |
| else |
| { |
| BTAMP_MEMCPY(pCtx, pOut, &pIn, 4); |
| } |
| # endif |
| } |
| |
| typedef struct sTLVDefn { |
| v_U32_t id; |
| v_U32_t pec; |
| v_U32_t minSize; |
| v_U32_t maxSize; |
| size_t offset; |
| size_t presenceOffset; |
| v_U16_t sig; |
| pfnGeneric_t pfn; |
| const char * name; |
| v_U8_t fMandatory; |
| } tTLVDefn; |
| |
| static tTLVDefn* FindTLVDefn( void * pCtx, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| tTLVDefn TLVs[ ] ) |
| { |
| tTLVDefn *pTlv; |
| v_U32_t sType, sLen; |
| v_U32_t pec; |
| v_U16_t id; |
| |
| sType = 1; |
| sLen = 2; |
| |
| (void)pCtx; |
| |
| if (sType == 2) |
| framesntohs( pCtx, &id, pBuf, 2 ); |
| else { |
| id = *pBuf; |
| } |
| |
| pTlv = &( TLVs[ 0 ] ); |
| while ( 0xffff != pTlv->id ) |
| { |
| if ( id == pTlv->id ) |
| { |
| if ( 0 == pTlv->pec ) return pTlv; |
| |
| if( nBuf > 5 ) |
| { |
| pec = ( ( * ( pBuf + 4 ) ) << 16 ) | |
| ( ( * ( pBuf + 5 ) ) << 8 ) | |
| * ( pBuf + 6 ); |
| if ( pec == pTlv->pec ) |
| { |
| return pTlv; |
| } |
| } |
| } |
| |
| ++pTlv; |
| } |
| |
| return NULL; |
| } |
| |
| static v_U32_t UnpackTlvCore( void * pCtx, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| tTLVDefn TLVs[ ], |
| v_U8_t *pFrm, |
| size_t nFrm ); |
| static v_U32_t PackTlvCore(void * pCtx, |
| v_U8_t *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed, |
| tTLVDefn TLVs[], |
| v_U32_t *pidx); |
| static v_U32_t GetPackedSizeTlvCore(void * pCtx, |
| v_U8_t *pFrm, |
| v_U32_t *pnNeeded, |
| tTLVDefn TLVs[]); |
| |
| v_U32_t btampUnpackTlvAMP_Assoc_Connected_Channel(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVAMP_Assoc_Connected_Channel *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_AMP_ASSOC_CONN_CH_TLV_MIN_LEN > tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| |
| |
| pDst->present = 1; |
| BTAMP_MEMCPY(pCtx, pDst->country, pBuf, 3); |
| pBuf += 3; |
| tlvlen -= (v_U8_t)3; |
| if ( ! tlvlen ) |
| { |
| pDst->num_triplets = 0U; |
| return 0U; |
| } |
| else |
| { |
| /* Maximum of 5 triplets allowed, based on size of triplets definition */ |
| if (tlvlen / 3 > 5) |
| { |
| tlvlen = 15; |
| } |
| pDst->num_triplets = (v_U8_t)( tlvlen / 3 ); |
| |
| BTAMP_MEMCPY(pCtx, pDst->triplets, pBuf, ( tlvlen ) ); |
| pBuf += ( tlvlen ); |
| tlvlen -= ( tlvlen ); |
| } |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvAMP_Assoc_Connected_Channel. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvAMP_Assoc_Connected_Channel_t)(void *, v_U8_t*, v_U16_t, tBtampTLVAMP_Assoc_Connected_Channel*); |
| |
| #define SigUnpackTlvAMP_Assoc_Connected_Channel ( 0x0001 ) |
| |
| |
| v_U32_t btampUnpackTlvAMP_Assoc_MAC_Addr(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVAMP_Assoc_MAC_Addr *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_MAC_ADDR_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR,"Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| BTAMP_MEMCPY(pCtx, pDst->mac_addr, pBuf, 6); |
| pBuf += 6; |
| tlvlen -= (v_U8_t)6; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvAMP_Assoc_MAC_Addr. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvAMP_Assoc_MAC_Addr_t)(void *, v_U8_t*, v_U16_t, tBtampTLVAMP_Assoc_MAC_Addr*); |
| |
| #define SigUnpackTlvAMP_Assoc_MAC_Addr ( 0x0002 ) |
| |
| |
| v_U32_t btampUnpackTlvAMP_Assoc_PAL_Capabilities(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVAMP_Assoc_PAL_Capabilities *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_CAPABILITIES_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR,"Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohl(pCtx, &pDst->pal_capabilities, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvAMP_Assoc_PAL_Capabilities. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvAMP_Assoc_PAL_Capabilities_t)(void *, v_U8_t*, v_U16_t, tBtampTLVAMP_Assoc_PAL_Capabilities*); |
| |
| #define SigUnpackTlvAMP_Assoc_PAL_Capabilities ( 0x0003 ) |
| |
| |
| v_U32_t btampUnpackTlvAMP_Assoc_PAL_Version(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVAMP_Assoc_PAL_Version *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_VERSION_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR,"Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->pal_version = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->pal_CompanyID, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->pal_subversion, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvAMP_Assoc_PAL_Version. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvAMP_Assoc_PAL_Version_t)(void *, v_U8_t*, v_U16_t, tBtampTLVAMP_Assoc_PAL_Version*); |
| |
| #define SigUnpackTlvAMP_Assoc_PAL_Version ( 0x0004 ) |
| |
| |
| v_U32_t btampUnpackTlvAMP_Assoc_Preferred_Channel_List(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVAMP_Assoc_Preferred_Channel_List *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_AMP_ASSOC_PREF_CH_TLV_MIN_LEN > tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR,"Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| /* Contry String - 3 bytes */ |
| BTAMP_MEMCPY(pCtx, pDst->country, pBuf, 3); |
| pBuf += 3; |
| tlvlen -= (v_U8_t)3; |
| |
| if ( ! tlvlen ) |
| { |
| pDst->num_triplets = 0U; |
| return status; |
| } |
| else |
| { |
| /* Maximum of 5 triplets allowed, based on size of triplets definition */ |
| if (tlvlen / 3 > 5) |
| { |
| tlvlen = 15; |
| } |
| pDst->num_triplets = (v_U8_t)( tlvlen / 3 ); |
| |
| BTAMP_MEMCPY(pCtx, pDst->triplets, pBuf, ( tlvlen ) ); |
| pBuf += ( tlvlen ); |
| tlvlen -= ( tlvlen ); |
| } |
| return status; |
| } /* End btampUnpackTlvAMP_Assoc_Preferred_Channel_List. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvAMP_Assoc_Preferred_Channel_List_t)(void *, v_U8_t*, v_U16_t, tBtampTLVAMP_Assoc_Preferred_Channel_List*); |
| |
| #define SigUnpackTlvAMP_Assoc_Preferred_Channel_List ( 0x0005 ) |
| |
| |
| v_U32_t btampUnpackTlvFlow_Spec(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVFlow_Spec *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_FLOW_SPEC_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->flow_spec_id = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->service_type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->max_sdu, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohl(pCtx, &pDst->sdu_inter_arrival, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| framesntohl(pCtx, &pDst->access_latency, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| framesntohl(pCtx, &pDst->flush_timeout, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvFlow_Spec. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvFlow_Spec_t)(void *, v_U8_t*, v_U16_t, tBtampTLVFlow_Spec*); |
| |
| #define SigUnpackTlvFlow_Spec ( 0x0006 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Accept_Logical_Link_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Accept_Logical_Link_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| #ifdef WLAN_BAPHCI_ENABLE_VALIDITY_CHECKING |
| if ( WLAN_BAP_PAL_ACC_LOG_LINK_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| // return BTAMP_INVALID_TLV_LENGTH; |
| } |
| #endif |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| BTAMP_MEMCPY(pCtx, pDst->tx_flow_spec, pBuf, 18); |
| pBuf += 18; |
| tlvlen -= (v_U8_t)18; |
| BTAMP_MEMCPY(pCtx, pDst->rx_flow_spec, pBuf, 18); |
| pBuf += 18; |
| tlvlen -= (v_U8_t)18; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Accept_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Accept_Logical_Link_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Accept_Logical_Link_Cmd*); |
| |
| #define SigUnpackTlvHCI_Accept_Logical_Link_Cmd ( 0x0007 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Accept_Physical_Link_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Accept_Physical_Link_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_ACC_PHY_LINK_TLV_MIN_LEN > tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->key_length = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->key_type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| if (pDst->key_length > 32){ |
| pDst->present = 0; |
| return BTAMP_SKIPPED_BAD_IE; |
| } |
| |
| BTAMP_MEMCPY(pCtx, pDst->key_material, pBuf, ( pDst->key_length ) ); |
| pBuf += ( pDst->key_length ); |
| tlvlen -= ( pDst->key_length ); |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Accept_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Accept_Physical_Link_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Accept_Physical_Link_Cmd*); |
| |
| #define SigUnpackTlvHCI_Accept_Physical_Link_Cmd ( 0x0008 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Channel_Selected_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Channel_Selected_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Channel_Selected_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Channel_Selected_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Channel_Selected_Event*); |
| |
| #define SigUnpackTlvHCI_Channel_Selected_Event ( 0x0009 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Command_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Command_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| pDst->present = 1; |
| pDst->num_hci_command_packets = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->command_opcode, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| switch (pDst->command_opcode) |
| { |
| case 0x0c03: |
| pDst->cc_event.Reset.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 0x0c08: |
| pDst->cc_event.Flush.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Flush.log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 0x043b: |
| pDst->cc_event.Logical_Link_Cancel.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Logical_Link_Cancel.phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Logical_Link_Cancel.tx_flow_spec_id = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 0x0c05: |
| pDst->cc_event.Set_Event_Mask.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 0x0c15: |
| pDst->cc_event.Read_Connection_Accept_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Connection_Accept_TO.connection_accept_timeout, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 0x0c16: |
| pDst->cc_event.Write_Connection_Accept_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 0x0c36: |
| pDst->cc_event.Read_Link_Supervision_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Link_Supervision_TO.log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Link_Supervision_TO.link_supervision_timeout, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 0x0c37: |
| pDst->cc_event.Write_Link_Supervision_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Write_Link_Supervision_TO.log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 0x0c61: |
| pDst->cc_event.Read_Logical_Link_Accept_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Logical_Link_Accept_TO.logical_link_accept_timeout, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 0x0c62: |
| pDst->cc_event.Write_Logical_Link_Accept_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 0x0c63: |
| pDst->cc_event.Set_Event_Mask_Page_2.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 0x0c64: |
| pDst->cc_event.Read_Location_Data.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_Location_Data.loc_domain_aware = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| BTAMP_MEMCPY(pCtx, pDst->cc_event.Read_Location_Data.loc_domain, pBuf, 3); |
| pBuf += 3; |
| tlvlen -= (v_U8_t)3; |
| pDst->cc_event.Read_Location_Data.loc_options = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 3173: |
| pDst->cc_event.Write_Location_Data.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 3174: |
| pDst->cc_event.Read_Flow_Control_Mode.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_Flow_Control_Mode.flow_control_mode = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 3175: |
| pDst->cc_event.Write_Flow_Control_Mode.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 3177: |
| pDst->cc_event.Read_BE_Flush_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohl(pCtx, &pDst->cc_event.Read_BE_Flush_TO.best_effort_flush_timeout, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| break; |
| case 3178: |
| pDst->cc_event.Write_BE_Flush_TO.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 3179: |
| pDst->cc_event.Set_Short_Range_Mode.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 4097: |
| pDst->cc_event.Read_Local_Version_Info.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_Local_Version_Info.HC_HCI_Version = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Local_Version_Info.HC_HCI_Revision, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->cc_event.Read_Local_Version_Info.HC_PAL_Version = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Local_Version_Info.HC_Manufac_Name, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Local_Version_Info.HC_PAL_Sub_Version, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 4098: |
| pDst->cc_event.Read_Local_Supported_Cmds.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| BTAMP_MEMCPY(pCtx, pDst->cc_event.Read_Local_Supported_Cmds.HC_Support_Cmds, pBuf, 64); |
| pBuf += 64; |
| tlvlen -= (v_U8_t)64; |
| break; |
| case 4101: |
| pDst->cc_event.Read_Buffer_Size.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Buffer_Size.HC_ACL_Data_Packet_Length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->cc_event.Read_Buffer_Size.HC_SCO_Packet_Length = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Buffer_Size.HC_Total_Num_ACL_Packets, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Buffer_Size.HC_Total_Num_SCO_Packets, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 4106: |
| pDst->cc_event.Read_Data_Block_Size.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Data_Block_Size.HC_Max_ACL_Data_Packet_Length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Data_Block_Size.HC_Data_Block_Length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Data_Block_Size.HC_Total_Num_Data_Blocks, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 5121: |
| pDst->cc_event.Read_Failed_Contact_Counter.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Failed_Contact_Counter.log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Failed_Contact_Counter.failed_contact_counter, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 5122: |
| pDst->cc_event.Reset_Failed_Contact_Counter.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Reset_Failed_Contact_Counter.log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| break; |
| case 5123: |
| pDst->cc_event.Read_Link_Quality.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Link_Quality.log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->cc_event.Read_Link_Quality.link_quality = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 5125: |
| pDst->cc_event.Read_RSSI.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_RSSI.phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_RSSI.rssi = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 5129: |
| pDst->cc_event.Read_Local_AMP_Info.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_Local_AMP_Info.HC_AMP_Status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohl(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_Total_BW, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| framesntohl(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_Max_Guaranteed_BW, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| framesntohl(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_Min_Latency, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| framesntohl(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_Max_PDU_Size, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| pDst->cc_event.Read_Local_AMP_Info.HC_Controller_Type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_PAL_Capabilities, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_AMP_Assoc_Length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohl(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_Max_Flush_Timeout, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| framesntohl(pCtx, &pDst->cc_event.Read_Local_AMP_Info.HC_BE_Flush_Timeout, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| break; |
| case 5130: |
| pDst->cc_event.Read_Read_Local_AMP_Assoc.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_Read_Local_AMP_Assoc.phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->cc_event.Read_Read_Local_AMP_Assoc.remaining_length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| if (pDst->cc_event.Read_Read_Local_AMP_Assoc.remaining_length > 248){ |
| // pDst->cc_event.Read_Read_Local_AMP_Assoc.present = 0; |
| return BTAMP_SKIPPED_BAD_IE; |
| } |
| |
| BTAMP_MEMCPY(pCtx, pDst->cc_event.Read_Read_Local_AMP_Assoc.AMP_assoc_fragment, pBuf, ( pDst->cc_event.Read_Read_Local_AMP_Assoc.remaining_length ) ); |
| pBuf += ( pDst->cc_event.Read_Read_Local_AMP_Assoc.remaining_length ); |
| tlvlen -= ( pDst->cc_event.Read_Read_Local_AMP_Assoc.remaining_length ); |
| break; |
| case 5131: |
| pDst->cc_event.Write_Remote_AMP_Assoc.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Write_Remote_AMP_Assoc.phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 6145: |
| pDst->cc_event.Read_Loopback_Mode.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->cc_event.Read_Loopback_Mode.loopback_mode = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| case 6146: |
| pDst->cc_event.Write_Loopback_Mode.status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| break; |
| } |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Command_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Command_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Command_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Command_Complete_Event ( 0x000a ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Command_Status_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Command_Status_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->num_hci_command_packets = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->command_opcode, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Command_Status_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Command_Status_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Command_Status_Event*); |
| |
| #define SigUnpackTlvHCI_Command_Status_Event ( 0x000b ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Create_Logical_Link_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Create_Logical_Link_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| #ifdef WLAN_BAPHCI_ENABLE_VALIDITY_CHECKING |
| if ( WLAN_BAP_PAL_CREATE_LOG_LINK_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| // return BTAMP_INVALID_TLV_LENGTH; |
| } |
| #endif |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| BTAMP_MEMCPY(pCtx, pDst->tx_flow_spec, pBuf, 18); |
| pBuf += 18; |
| tlvlen -= (v_U8_t)18; |
| BTAMP_MEMCPY(pCtx, pDst->rx_flow_spec, pBuf, 18); |
| pBuf += 18; |
| tlvlen -= (v_U8_t)18; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Create_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Create_Logical_Link_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Create_Logical_Link_Cmd*); |
| |
| #define SigUnpackTlvHCI_Create_Logical_Link_Cmd ( 0x000c ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Create_Physical_Link_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Create_Physical_Link_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_CREATE_PHY_LINK_TLV_MIN_LEN > tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->key_length = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->key_type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| if (pDst->key_length > 32){ |
| pDst->present = 0; |
| return BTAMP_SKIPPED_BAD_IE; |
| } |
| |
| BTAMP_MEMCPY(pCtx, pDst->key_material, pBuf, ( pDst->key_length ) ); |
| pBuf += ( pDst->key_length ); |
| tlvlen -= ( pDst->key_length ); |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Create_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Create_Physical_Link_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Create_Physical_Link_Cmd*); |
| |
| #define SigUnpackTlvHCI_Create_Physical_Link_Cmd ( 0x000d ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Data_Buffer_Overflow_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Data_Buffer_Overflow_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->link_type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Data_Buffer_Overflow_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Data_Buffer_Overflow_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Data_Buffer_Overflow_Event*); |
| |
| #define SigUnpackTlvHCI_Data_Buffer_Overflow_Event ( 0x000e ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Disconnect_Logical_Link_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Disconnect_Logical_Link_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_DISC_LOG_LINK_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Disconnect_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Disconnect_Logical_Link_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Disconnect_Logical_Link_Cmd*); |
| |
| #define SigUnpackTlvHCI_Disconnect_Logical_Link_Cmd ( 0x000f ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Disconnect_Logical_Link_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->reason = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Disconnect_Logical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Disconnect_Logical_Link_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Disconnect_Logical_Link_Complete_Event ( 0x0010 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Disconnect_Physical_Link_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Disconnect_Physical_Link_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| #ifdef WLAN_BAPHCI_ENABLE_VALIDITY_CHECKING |
| if ( WLAN_BAP_PAL_DISC_PHY_LINK_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| // return BTAMP_INVALID_TLV_LENGTH; |
| } |
| #endif |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->reason = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Disconnect_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Disconnect_Physical_Link_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Disconnect_Physical_Link_Cmd*); |
| |
| #define SigUnpackTlvHCI_Disconnect_Physical_Link_Cmd ( 0x0011 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Disconnect_Physical_Link_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->reason = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Disconnect_Physical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Disconnect_Physical_Link_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Disconnect_Physical_Link_Complete_Event ( 0x0012 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Flow_Spec_Modify_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Flow_Spec_Modify_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_FLOW_SPEC_MOD_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->be_aggr_counter = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| BTAMP_MEMCPY(pCtx, pDst->tx_flow_spec, pBuf, 18); |
| pBuf += 18; |
| tlvlen -= (v_U8_t)18; |
| BTAMP_MEMCPY(pCtx, pDst->rx_flow_spec, pBuf, 18); |
| pBuf += 18; |
| tlvlen -= (v_U8_t)18; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Flow_Spec_Modify_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Flow_Spec_Modify_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Flow_Spec_Modify_Cmd*); |
| |
| #define SigUnpackTlvHCI_Flow_Spec_Modify_Cmd ( 0x0013 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Flow_Spec_Modify_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Flow_Spec_Modify_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Flow_Spec_Modify_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Flow_Spec_Modify_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Flow_Spec_Modify_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Flow_Spec_Modify_Complete_Event ( 0x0014 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Flush_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Flush_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_FLUSH_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Flush_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Flush_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Flush_Cmd*); |
| |
| #define SigUnpackTlvHCI_Flush_Cmd ( 0x0015 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Flush_Occurred_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Flush_Occurred_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Flush_Occurred_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Flush_Occurred_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Flush_Occurred_Event*); |
| |
| #define SigUnpackTlvHCI_Flush_Occurred_Event ( 0x0016 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Generic_AMP_Link_Key_Notification_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| BTAMP_MEMCPY(pCtx, pDst->bd_addr, pBuf, 6); |
| pBuf += 6; |
| tlvlen -= (v_U8_t)6; |
| BTAMP_MEMCPY(pCtx, pDst->generic_amp_link_key, pBuf, 32); |
| pBuf += 32; |
| tlvlen -= (v_U8_t)32; |
| pDst->key_type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Generic_AMP_Link_Key_Notification_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Generic_AMP_Link_Key_Notification_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event*); |
| |
| #define SigUnpackTlvHCI_Generic_AMP_Link_Key_Notification_Event ( 0x0017 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Hardware_Error_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Hardware_Error_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->hardware_code = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Hardware_Error_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Hardware_Error_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Hardware_Error_Event*); |
| |
| #define SigUnpackTlvHCI_Hardware_Error_Event ( 0x0018 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Logical_Link_Cancel_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Logical_Link_Cancel_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_CANCEL_LOG_LINK_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->tx_flow_spec_id = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Logical_Link_Cancel_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Logical_Link_Cancel_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Logical_Link_Cancel_Cmd*); |
| |
| #define SigUnpackTlvHCI_Logical_Link_Cancel_Cmd ( 0x0019 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Logical_Link_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Logical_Link_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Logical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Logical_Link_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Logical_Link_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Logical_Link_Complete_Event ( 0x001a ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Loopback_Command_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Loopback_Command_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| BTAMP_MEMCPY(pCtx, pDst->hci_command_packet, pBuf, 64); |
| pBuf += 64; |
| tlvlen -= (v_U8_t)64; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Loopback_Command_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Loopback_Command_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Loopback_Command_Event*); |
| |
| #define SigUnpackTlvHCI_Loopback_Command_Event ( 0x001b ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Physical_Link_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Physical_Link_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Physical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Physical_Link_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Physical_Link_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Physical_Link_Complete_Event ( 0x001c ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Physical_Link_Loss_Warning_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Physical_Link_Loss_Warning_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->reason = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Physical_Link_Loss_Warning_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Physical_Link_Loss_Warning_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Physical_Link_Loss_Warning_Event*); |
| |
| #define SigUnpackTlvHCI_Physical_Link_Loss_Warning_Event ( 0x001d ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Physical_Link_Recovery_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Physical_Link_Recovery_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Physical_Link_Recovery_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Physical_Link_Recovery_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Physical_Link_Recovery_Event*); |
| |
| #define SigUnpackTlvHCI_Physical_Link_Recovery_Event ( 0x001e ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Qos_Violation_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Qos_Violation_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Qos_Violation_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Qos_Violation_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Qos_Violation_Event*); |
| |
| #define SigUnpackTlvHCI_Qos_Violation_Event ( 0x001f ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_READ_BE_FLUSH_TIMEOUT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd ( 0x0020 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Buffer_Size_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Buffer_Size_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Buffer_Size_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Buffer_Size_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Buffer_Size_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Buffer_Size_Cmd ( 0x0021 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Connection_Accept_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Connection_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Connection_Accept_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Connection_Accept_Timeout_Cmd ( 0x0022 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Data_Block_Size_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Data_Block_Size_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Data_Block_Size_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Data_Block_Size_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Data_Block_Size_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Data_Block_Size_Cmd ( 0x0023 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Failed_Contact_Counter_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_READ_FAILED_CONTACT_CNT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Failed_Contact_Counter_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Failed_Contact_Counter_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Failed_Contact_Counter_Cmd ( 0x0024 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Flow_Control_Mode_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Flow_Control_Mode_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Flow_Control_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Flow_Control_Mode_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Flow_Control_Mode_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Flow_Control_Mode_Cmd ( 0x0025 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Link_Quality_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Link_Quality_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_READ_LINK_QUALITY_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Link_Quality_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Link_Quality_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Link_Quality_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Link_Quality_Cmd ( 0x0026 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Link_Supervision_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_READ_LINK_SVISISON_TIMEOUT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Link_Supervision_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Link_Supervision_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Link_Supervision_Timeout_Cmd ( 0x0027 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Local_AMP_Assoc_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s. tlvlen=%d.", __func__, tlvlen); |
| |
| #ifdef WLAN_BAPHCI_ENABLE_VALIDITY_CHECKING |
| if ( WLAN_BAP_PAL_READ_LOCAL_AMP_ASSOC_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| // return BTAMP_INVALID_TLV_LENGTH; |
| } |
| #endif |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->length_so_far, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->max_remote_amp_assoc_length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Local_AMP_Assoc_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Local_AMP_Assoc_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Local_AMP_Assoc_Cmd ( 0x0028 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Local_AMP_Information_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Local_AMP_Information_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Local_AMP_Information_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Local_AMP_Information_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Local_AMP_Information_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Local_AMP_Information_Cmd ( 0x0029 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Local_Supported_Cmds_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Local_Supported_Cmds_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Local_Supported_Cmds_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Local_Supported_Cmds_Cmd ( 0x002a ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Local_Version_Info_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Local_Version_Info_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Local_Version_Info_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Local_Version_Info_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Local_Version_Info_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Local_Version_Info_Cmd ( 0x002b ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Location_Data_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Location_Data_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Location_Data_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Location_Data_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Location_Data_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Location_Data_Cmd ( 0x002c ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd ( 0x002d ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_Loopback_Mode_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_Loopback_Mode_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_Loopback_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_Loopback_Mode_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_Loopback_Mode_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_Loopback_Mode_Cmd ( 0x002e ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Read_RSSI_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Read_RSSI_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_READ_RSSI_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Read_RSSI_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Read_RSSI_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Read_RSSI_Cmd*); |
| |
| #define SigUnpackTlvHCI_Read_RSSI_Cmd ( 0x002f ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Reset_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Reset_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Reset_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Reset_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Reset_Cmd*); |
| |
| #define SigUnpackTlvHCI_Reset_Cmd ( 0x0030 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Reset_Failed_Contact_Counter_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_RESET_FAILED_CONTACT_CNT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Reset_Failed_Contact_Counter_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Reset_Failed_Contact_Counter_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd*); |
| |
| #define SigUnpackTlvHCI_Reset_Failed_Contact_Counter_Cmd ( 0x0031 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Set_Event_Mask_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Set_Event_Mask_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_SET_EVENT_MASK_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| BTAMP_MEMCPY(pCtx, pDst->event_mask, pBuf, 8); |
| pBuf += 8; |
| tlvlen -= (v_U8_t)8; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Set_Event_Mask_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Set_Event_Mask_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Set_Event_Mask_Cmd*); |
| |
| #define SigUnpackTlvHCI_Set_Event_Mask_Cmd ( 0x0032 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Set_Event_Mask_Page_2_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s. tlvlen=%d.", __func__, tlvlen); |
| #ifdef WLAN_BAPHCI_ENABLE_VALIDITY_CHECKING |
| if ( WLAN_BAP_PAL_SET_EVENT_MASK2_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| // return BTAMP_INVALID_TLV_LENGTH; |
| } |
| #endif |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| BTAMP_MEMCPY(pCtx, pDst->event_mask_page_2, pBuf, 8); |
| pBuf += 8; |
| tlvlen -= (v_U8_t)8; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Set_Event_Mask_Page_2_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Set_Event_Mask_Page_2_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd*); |
| |
| #define SigUnpackTlvHCI_Set_Event_Mask_Page_2_Cmd ( 0x0033 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Set_Short_Range_Mode_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Set_Short_Range_Mode_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_SET_SHORT_RANGE_MODE_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->short_range_mode = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Set_Short_Range_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Set_Short_Range_Mode_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Set_Short_Range_Mode_Cmd*); |
| |
| #define SigUnpackTlvHCI_Set_Short_Range_Mode_Cmd ( 0x0034 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Short_Range_Mode_Change_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| pDst->status = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| pDst->short_range_mode = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Short_Range_Mode_Change_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Short_Range_Mode_Change_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Short_Range_Mode_Change_Complete_Event ( 0x0035 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_BE_FLUSH_TIMEOUT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohl(pCtx, &pDst->best_effort_flush_timeout, pBuf, 0); |
| pBuf += 4; |
| tlvlen -= (v_U8_t)4; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd ( 0x0036 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Connection_Accept_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_CON_ACC_TIMEOUT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->connection_accept_timeout, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Connection_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Connection_Accept_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Connection_Accept_Timeout_Cmd ( 0x0037 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Flow_Control_Mode_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Flow_Control_Mode_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_FLOW_CTRL_MODE_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->flow_control_mode = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Flow_Control_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Flow_Control_Mode_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Flow_Control_Mode_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Flow_Control_Mode_Cmd ( 0x0038 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Link_Supervision_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_LINK_SVISION_TIMEOUT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->link_supervision_timeout, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Link_Supervision_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Link_Supervision_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Link_Supervision_Timeout_Cmd ( 0x0039 ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Location_Data_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Location_Data_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_LOCATION_DATA_CMD_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->loc_domain_aware = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| BTAMP_MEMCPY(pCtx, pDst->loc_domain, pBuf, 3); |
| pBuf += 3; |
| tlvlen -= (v_U8_t)3; |
| pDst->loc_options = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Location_Data_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Location_Data_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Location_Data_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Location_Data_Cmd ( 0x003a ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_LOG_LINK_ACC_TIMEOUT_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->logical_link_accept_timeout, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd ( 0x003b ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Loopback_Mode_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Loopback_Mode_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_LOOOPBACK_MODE_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->loopback_mode = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Loopback_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Loopback_Mode_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Loopback_Mode_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Loopback_Mode_Cmd ( 0x003c ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Write_Remote_AMP_ASSOC_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_WRITE_REMOTE_AMP_ASSOC_MIN_TLV_LEN > tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| pDst->phy_link_handle = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| framesntohs(pCtx, &pDst->length_so_far, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| framesntohs(pCtx, &pDst->amp_assoc_remaining_length, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| if (pDst->amp_assoc_remaining_length > 248){ |
| pDst->present = 0; |
| return BTAMP_SKIPPED_BAD_IE; |
| } |
| |
| BTAMP_MEMCPY(pCtx, pDst->amp_assoc_fragment, pBuf, ( pDst->amp_assoc_remaining_length ) ); |
| pBuf += ( pDst->amp_assoc_remaining_length ); |
| tlvlen -= ( pDst->amp_assoc_remaining_length ); |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Write_Remote_AMP_ASSOC_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Write_Remote_AMP_ASSOC_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd*); |
| |
| #define SigUnpackTlvHCI_Write_Remote_AMP_ASSOC_Cmd ( 0x003d ) |
| |
| v_U32_t btampUnpackTlvHCI_Enhanced_Flush_Cmd(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Enhanced_Flush_Cmd *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| |
| /*----------------------------------------------------------------------- |
| TLV Sanity check |
| -------------------------------------------------------------------------*/ |
| if ( WLAN_BAP_PAL_ENHANCED_FLUSH_TLV_LEN != tlvlen ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| /*Log invalid len*/ |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, |
| "Invalid TLV len on %s", __func__); |
| #endif |
| return BTAMP_INVALID_TLV_LENGTH; |
| } |
| |
| /*----------------------------------------------------------------------- |
| Parse TLV |
| -----------------------------------------------------------------------*/ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| pDst->packet_type = *pBuf; |
| pBuf += 1; |
| tlvlen -= (v_U8_t)1; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Enhanced_Flush_Cmd. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Enhanced_Flush_Cmd_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Enhanced_Flush_Cmd*); |
| |
| #define SigUnpackTlvHCI_Enhanced_Flush_Cmd ( 0x003e ) |
| |
| |
| v_U32_t btampUnpackTlvHCI_Enhanced_Flush_Complete_Event(void * pCtx, v_U8_t *pBuf, v_U16_t tlvlen, tBtampTLVHCI_Enhanced_Flush_Complete_Event *pDst) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pBuf; (void)tlvlen; /* Shutup the compiler */ |
| pDst->present = 1; |
| framesntohs(pCtx, &pDst->log_link_handle, pBuf, 0); |
| pBuf += 2; |
| tlvlen -= (v_U8_t)2; |
| (void)pCtx; |
| return status; |
| } /* End btampUnpackTlvHCI_Enhanced_Flush_Completed_Event. */ |
| |
| typedef v_U32_t (*pfnUnpackTlvHCI_Enhanced_Flush_Complete_Event_t)(void *, v_U8_t*, v_U16_t, tBtampTLVHCI_Enhanced_Flush_Complete_Event*); |
| |
| #define SigUnpackTlvHCI_Enhanced_Flush_Complete_Event ( 0x003f ) |
| |
| |
| v_U32_t btampUnpackAMP_ASSOC(void * pCtx, v_U8_t *pBuf, v_U32_t nBuf, tBtampAMP_ASSOC *pFrm) |
| { |
| v_U32_t i; |
| static tTLVDefn TLVS[ ] = { |
| {BTAMP_TLV_AMP_ASSOC_MAC_ADDR, 0, 9, 9, offsetof(tBtampAMP_ASSOC, AMP_Assoc_MAC_Addr), offsetof(tBtampTLVAMP_Assoc_MAC_Addr, present), SigUnpackTlvAMP_Assoc_MAC_Addr, (pfnGeneric_t)btampUnpackTlvAMP_Assoc_MAC_Addr, "AMP_Assoc_MAC_Addr", 1, }, |
| {BTAMP_TLV_AMP_ASSOC_PREFERRED_CHANNEL_LIST, 0, 9, 0xFF/*12*/, offsetof(tBtampAMP_ASSOC, AMP_Assoc_Preferred_Channel_List), offsetof(tBtampTLVAMP_Assoc_Preferred_Channel_List, present), SigUnpackTlvAMP_Assoc_Preferred_Channel_List, (pfnGeneric_t)btampUnpackTlvAMP_Assoc_Preferred_Channel_List, "AMP_Assoc_Preferred_Channel_List", 1, }, |
| {BTAMP_TLV_AMP_ASSOC_CONNECTED_CHANNEL, 0, 9, 0xFF/*12*/, offsetof(tBtampAMP_ASSOC, AMP_Assoc_Connected_Channel), offsetof(tBtampTLVAMP_Assoc_Connected_Channel, present), SigUnpackTlvAMP_Assoc_Connected_Channel, (pfnGeneric_t)btampUnpackTlvAMP_Assoc_Connected_Channel, "AMP_Assoc_Connected_Channel", 0, }, |
| {BTAMP_TLV_AMP_ASSOC_PAL_CAPABILITIES, 0, 7, 7, offsetof(tBtampAMP_ASSOC, AMP_Assoc_PAL_Capabilities), offsetof(tBtampTLVAMP_Assoc_PAL_Capabilities, present), SigUnpackTlvAMP_Assoc_PAL_Capabilities, (pfnGeneric_t)btampUnpackTlvAMP_Assoc_PAL_Capabilities, "AMP_Assoc_PAL_Capabilities", 0, }, |
| {BTAMP_TLV_AMP_ASSOC_PAL_VERSION, 0, 8, 8, offsetof(tBtampAMP_ASSOC, AMP_Assoc_PAL_Version), offsetof(tBtampTLVAMP_Assoc_PAL_Version, present), SigUnpackTlvAMP_Assoc_PAL_Version, (pfnGeneric_t)btampUnpackTlvAMP_Assoc_PAL_Version, "AMP_Assoc_PAL_Version", 1, }, |
| { 0xffff, 0 }, |
| }; |
| |
| v_U32_t status = 0; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampUnpackAMP_ASSOC. nBuf - %d\n", nBuf); |
| #endif |
| |
| status |= UnpackTlvCore(pCtx,pBuf,nBuf,TLVS,(v_U8_t*)pFrm,sizeof(*pFrm)); |
| |
| (void)i; |
| # ifdef BTAMP_DUMP_FRAMES |
| if (!BTAMP_FAILED(status)) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Unpacked the AMP_ASSOC:\n")); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), pBuf, nBuf); |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("to:\n")); |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_MAC_Addr:\n")); |
| if (!pFrm->AMP_Assoc_MAC_Addr.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_MAC_Addr.mac_addr, 6); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_Preferred_Channel_List:\n")); |
| if (!pFrm->AMP_Assoc_Preferred_Channel_List.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_Preferred_Channel_List.country, 3); |
| FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("num_triplets: %d.\n"), pFrm->AMP_Assoc_Preferred_Channel_List.num_triplets); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* ) pFrm->AMP_Assoc_Preferred_Channel_List.triplets, 3 * pFrm->AMP_Assoc_Preferred_Channel_List.num_triplets); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_Connected_Channel:\n")); |
| if (!pFrm->AMP_Assoc_Connected_Channel.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_Connected_Channel.country, 3); |
| FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("num_triplets: %d.\n"), pFrm->AMP_Assoc_Connected_Channel.num_triplets); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* ) pFrm->AMP_Assoc_Connected_Channel.triplets, 3 * pFrm->AMP_Assoc_Connected_Channel.num_triplets); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_PAL_Capabilities:\n")); |
| if (!pFrm->AMP_Assoc_PAL_Capabilities.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Capabilities.pal_capabilities, 4); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_PAL_Version:\n")); |
| if (!pFrm->AMP_Assoc_PAL_Version.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Version.pal_version, 1); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Version.pal_CompanyID, 2); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Version.pal_subversion, 2); |
| } |
| } |
| # endif // BTAMP_DUMP_FRAMES |
| return status; |
| |
| } /* End btampUnpackAMP_ASSOC. */ |
| |
| static v_U32_t UnpackTlvCore( void * pCtx, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| tTLVDefn TLVs[ ], |
| v_U8_t *pFrm, |
| size_t nFrm ) |
| { |
| tTLVDefn *pTlv; |
| v_U32_t nBufRemaining, status, status2, npec; |
| v_U32_t sType, sLen; |
| v_U16_t id, len; |
| v_U8_t *pBufRemaining, *pfFound; |
| |
| (void)pCtx; // Shutup the compiler |
| (void)nFrm; |
| status = BTAMP_PARSE_SUCCESS; |
| status2 = BTAMP_PARSE_SUCCESS; |
| pBufRemaining = pBuf; |
| nBufRemaining = nBuf; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In UnpackTlvCore, nBufRemaining - %d\n", nBufRemaining); |
| #endif |
| |
| // While we have data... |
| while ( nBufRemaining ) |
| { |
| if ( 3 > nBufRemaining ) |
| { |
| FRAMES_LOG0( pCtx, FRLOGE, FRFL( "This frame reports " |
| "fewer three byte(s) remaining.\n" ) ); |
| status |= BTAMP_INCOMPLETE_TLV; |
| FRAMES_DBG_BREAK(); |
| goto MandatoryCheck; |
| } |
| |
| npec = 0U; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "Calling FindTLVDefn...\n", nBufRemaining); |
| #endif |
| |
| // Look for a matching TLV definition, |
| pTlv = FindTLVDefn( pCtx, pBufRemaining, nBufRemaining, TLVs ); |
| sType = 1; |
| sLen = 2; |
| // consume the type, |
| if (sType == 2) |
| framesntohs(pCtx, &id, pBufRemaining, 1); |
| else { |
| id = *pBufRemaining; |
| } |
| pBufRemaining += sType; |
| nBufRemaining -= sType; |
| // & length, |
| framesntohs(pCtx, &len, pBufRemaining, 1); |
| pBufRemaining += sLen; |
| nBufRemaining -= sLen; |
| |
| if ( pTlv && pTlv->pec ) |
| { |
| npec = 3U; |
| if ( 3 > nBufRemaining ) |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "3 > nBufRemaining\n"); |
| #endif |
| |
| FRAMES_LOG2(pCtx, FRLOGW, FRFL("TLV %d reports length" |
| "%d, but it has a Private Enterprise Code (3 byte" |
| "s.\n"), id, len); |
| FRAMES_DUMP(pCtx, FRLOG1, pBuf, nBuf); |
| FRAMES_LOG2(pCtx, FRLOG1, FRFL("We've parsed %d bytes" |
| "of this buffer, and show %d left.\n"), |
| pBufRemaining - pBuf, nBufRemaining); |
| status |= BTAMP_INCOMPLETE_TLV; |
| FRAMES_DBG_BREAK(); |
| goto MandatoryCheck; |
| } |
| pBufRemaining += 3; |
| nBufRemaining -= 3; |
| len -= 3; |
| } |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "Len - %d nBufRemaining - %d\n", len, nBufRemaining); |
| #endif |
| |
| // Whether we found a hit or not, we can validate the reported |
| // length of this TLV: |
| if ( len > nBufRemaining ) |
| { |
| FRAMES_LOG3(pCtx, FRLOGW, FRFL("TLV %d reports length %" |
| "d, but there are only %d bytes remaining in this f" |
| "rame.\n"), id, len, nBufRemaining ); |
| FRAMES_DUMP( pCtx, FRLOG1, pBuf, nBuf ); |
| FRAMES_LOG2( pCtx, FRLOG1, FRFL( "We've parsed %d bytes" |
| " of this buffer, and show %d left.\n"), |
| pBufRemaining - pBuf, nBufRemaining); |
| status |= BTAMP_INCOMPLETE_TLV; |
| FRAMES_DBG_BREAK(); |
| goto MandatoryCheck; |
| } |
| |
| // Now, *if* we found a hit... |
| if ( pTlv ) |
| { |
| if ( nBufRemaining < pTlv->minSize - npec - (sType + sLen)) |
| { |
| FRAMES_LOG3( pCtx, FRLOGW, FRFL("The IE %s must be " |
| "at least %d bytes in size, but there are only " |
| "%d bytes remaining in this frame.\n"), |
| pTlv->name, pTlv->minSize, nBufRemaining ); |
| FRAMES_DUMP( pCtx, FRLOG1, pBuf, nBuf ); |
| status |= BTAMP_INCOMPLETE_TLV; |
| FRAMES_DBG_BREAK( ); |
| goto MandatoryCheck; |
| } |
| else if ( len > pTlv->maxSize - npec - (sType + sLen)) |
| { |
| FRAMES_LOG1( pCtx, FRLOGW, FRFL("The TLV %s reports " |
| "an illegally large size; this TLV is presumably" |
| "corrupt or otherwise invalid & will be skipped " |
| "ipped.\n"), pTlv->name ); |
| FRAMES_DUMP( pCtx, FRLOG1, pBuf, nBuf ); |
| FRAMES_LOG2( pCtx, FRLOG1, FRFL("We've parsed %d by" |
| "tes of this buffer, and show %d left.\n"), |
| pBufRemaining - pBuf, nBufRemaining); |
| FRAMES_DBG_BREAK(); |
| status |= BTAMP_SKIPPED_BAD_TLV; |
| } |
| else |
| { |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "pTlv->sig - %d\n", pTlv->sig); |
| #endif |
| |
| switch (pTlv->sig) |
| { |
| case SigUnpackTlvAMP_Assoc_Connected_Channel: |
| status2 = ( (pfnUnpackTlvAMP_Assoc_Connected_Channel_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVAMP_Assoc_Connected_Channel* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvAMP_Assoc_MAC_Addr: |
| status2 = ( (pfnUnpackTlvAMP_Assoc_MAC_Addr_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVAMP_Assoc_MAC_Addr* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvAMP_Assoc_PAL_Capabilities: |
| status2 = ( (pfnUnpackTlvAMP_Assoc_PAL_Capabilities_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVAMP_Assoc_PAL_Capabilities* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvAMP_Assoc_PAL_Version: |
| status2 = ( (pfnUnpackTlvAMP_Assoc_PAL_Version_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVAMP_Assoc_PAL_Version* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvAMP_Assoc_Preferred_Channel_List: |
| status2 = ( (pfnUnpackTlvAMP_Assoc_Preferred_Channel_List_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVAMP_Assoc_Preferred_Channel_List* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvFlow_Spec: |
| status2 = ( (pfnUnpackTlvFlow_Spec_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVFlow_Spec* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Accept_Logical_Link_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Accept_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Accept_Logical_Link_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Accept_Physical_Link_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Accept_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Accept_Physical_Link_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Channel_Selected_Event: |
| status2 = ( (pfnUnpackTlvHCI_Channel_Selected_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Channel_Selected_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Command_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Command_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Command_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Command_Status_Event: |
| status2 = ( (pfnUnpackTlvHCI_Command_Status_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Command_Status_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Create_Logical_Link_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Create_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Create_Logical_Link_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Create_Physical_Link_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Create_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Create_Physical_Link_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Data_Buffer_Overflow_Event: |
| status2 = ( (pfnUnpackTlvHCI_Data_Buffer_Overflow_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Data_Buffer_Overflow_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Disconnect_Logical_Link_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Disconnect_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Disconnect_Logical_Link_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Disconnect_Logical_Link_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Disconnect_Logical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Disconnect_Physical_Link_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Disconnect_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Disconnect_Physical_Link_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Disconnect_Physical_Link_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Disconnect_Physical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Flow_Spec_Modify_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Flow_Spec_Modify_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Flow_Spec_Modify_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Flow_Spec_Modify_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Flow_Spec_Modify_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Flow_Spec_Modify_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Flush_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Flush_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Flush_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Flush_Occurred_Event: |
| status2 = ( (pfnUnpackTlvHCI_Flush_Occurred_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Flush_Occurred_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Generic_AMP_Link_Key_Notification_Event: |
| status2 = ( (pfnUnpackTlvHCI_Generic_AMP_Link_Key_Notification_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Hardware_Error_Event: |
| status2 = ( (pfnUnpackTlvHCI_Hardware_Error_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Hardware_Error_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Logical_Link_Cancel_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Logical_Link_Cancel_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Logical_Link_Cancel_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Logical_Link_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Logical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Logical_Link_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Loopback_Command_Event: |
| status2 = ( (pfnUnpackTlvHCI_Loopback_Command_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Loopback_Command_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Physical_Link_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Physical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Physical_Link_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Physical_Link_Loss_Warning_Event: |
| status2 = ( (pfnUnpackTlvHCI_Physical_Link_Loss_Warning_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Physical_Link_Loss_Warning_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Physical_Link_Recovery_Event: |
| status2 = ( (pfnUnpackTlvHCI_Physical_Link_Recovery_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Physical_Link_Recovery_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Qos_Violation_Event: |
| status2 = ( (pfnUnpackTlvHCI_Qos_Violation_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Qos_Violation_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Buffer_Size_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Buffer_Size_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Buffer_Size_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Connection_Accept_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Connection_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Data_Block_Size_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Data_Block_Size_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Data_Block_Size_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Failed_Contact_Counter_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Failed_Contact_Counter_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Flow_Control_Mode_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Flow_Control_Mode_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Flow_Control_Mode_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Link_Quality_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Link_Quality_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Link_Quality_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Link_Supervision_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Link_Supervision_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Local_AMP_Assoc_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Local_AMP_Assoc_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Local_AMP_Information_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Local_AMP_Information_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Local_AMP_Information_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Local_Supported_Cmds_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Local_Supported_Cmds_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Local_Version_Info_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Local_Version_Info_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Local_Version_Info_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Location_Data_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Location_Data_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Location_Data_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_Loopback_Mode_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_Loopback_Mode_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_Loopback_Mode_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Read_RSSI_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Read_RSSI_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Read_RSSI_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Reset_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Reset_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Reset_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Reset_Failed_Contact_Counter_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Reset_Failed_Contact_Counter_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Set_Event_Mask_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Set_Event_Mask_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Set_Event_Mask_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Set_Event_Mask_Page_2_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Set_Event_Mask_Page_2_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Set_Short_Range_Mode_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Set_Short_Range_Mode_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Set_Short_Range_Mode_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Short_Range_Mode_Change_Complete_Event: |
| status2 = ( (pfnUnpackTlvHCI_Short_Range_Mode_Change_Complete_Event_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Connection_Accept_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Connection_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Flow_Control_Mode_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Flow_Control_Mode_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Flow_Control_Mode_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Link_Supervision_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Link_Supervision_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Location_Data_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Location_Data_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Location_Data_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Loopback_Mode_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Loopback_Mode_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Loopback_Mode_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| case SigUnpackTlvHCI_Write_Remote_AMP_ASSOC_Cmd: |
| status2 = ( (pfnUnpackTlvHCI_Write_Remote_AMP_ASSOC_Cmd_t)(pTlv->pfn) )(pCtx, pBufRemaining, len, ( tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd* )(pFrm + pTlv->offset )); |
| break; |
| default: |
| FRAMES_LOG1(pCtx, FRLOGE, FRFL("INTERNAL ERROR: I" |
| " don't know about the TLV signature %d-- thi" |
| "s is most likely a 'framesc' bug.\n"), |
| pTlv->sig); |
| FRAMES_DBG_BREAK(); |
| return BTAMP_INTERNAL_ERROR; |
| } // End switch on sig. |
| } // End if on length check. |
| |
| status |= status2; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "status - %x\n", status); |
| #endif |
| } |
| else |
| { |
| FRAMES_LOG2(pCtx, FRLOG3, FRFL("Skipping unknown TLV %d (" |
| "length %d)\n"), id, len); |
| FRAMES_DUMP(pCtx, FRLOG3, pBufRemaining - (sType + sLen), len); |
| status |= BTAMP_UNKNOWN_TLVS; |
| } |
| |
| // Advance to the next TLV |
| pBufRemaining += len; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "len - %d nBufRemaining - %d\n", len, nBufRemaining); |
| #endif |
| |
| if (len > nBufRemaining) |
| { |
| FRAMES_LOG0(pCtx, FRLOGW, FRFL("This TLV extends past th" |
| "e buffer as it was defined to us. This could mean " |
| "a corrupt frame, or just an incorrect length parame" |
| "ter.\n")); |
| FRAMES_DBG_BREAK(); |
| status |= BTAMP_LAST_TLV_TOO_LONG; |
| goto MandatoryCheck; |
| } |
| |
| nBufRemaining -= len; |
| |
| } // End iteration over TLVs. |
| |
| MandatoryCheck: |
| pTlv = &TLVs[0]; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "pTlv->id - %x\n", pTlv->id); |
| #endif |
| |
| while (0xffff != pTlv->id) |
| { |
| if (pTlv->fMandatory) |
| { |
| pfFound = (v_U8_t*)(pFrm + pTlv->offset + |
| pTlv->presenceOffset); |
| if (!*pfFound) |
| { |
| FRAMES_LOG1(pCtx, FRLOGW, FRFL("ERROR: The mandatory " |
| "TLV %s wasn't seen.\n"), |
| pTlv->name); |
| FRAMES_DBG_BREAK(); |
| status |= BTAMP_MANDATORY_TLV_MISSING; |
| } |
| |
| } |
| ++pTlv; |
| } |
| |
| return status; |
| } /* End UnpacTlvkCore. */ |
| v_U32_t btampGetPackedTlvAMP_Assoc_Connected_Channel(void * pCtx, tBtampTLVAMP_Assoc_Connected_Channel *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampGetPackedTlvAMP_Assoc_Connected_Channel\n"); |
| #endif |
| |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 3; |
| if ( pTlv->num_triplets ) |
| { |
| *pnNeeded += ( pTlv->num_triplets * 3 ); |
| } |
| else break; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVAMP_Assoc_Connected_Channel. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvAMP_Assoc_Connected_Channel_t)(void *, tBtampTLVAMP_Assoc_Connected_Channel*, v_U32_t*); |
| #define SigPackSizeTlvAMP_Assoc_Connected_Channel ( 0x003e ) |
| |
| v_U32_t btampGetPackedTlvAMP_Assoc_MAC_Addr(void * pCtx, tBtampTLVAMP_Assoc_MAC_Addr *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampGetPackedTlvAMP_Assoc_MAC_Addr\n"); |
| #endif |
| |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 6; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVAMP_Assoc_MAC_Addr. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvAMP_Assoc_MAC_Addr_t)(void *, tBtampTLVAMP_Assoc_MAC_Addr*, v_U32_t*); |
| #define SigPackSizeTlvAMP_Assoc_MAC_Addr ( 0x003f ) |
| |
| v_U32_t btampGetPackedTlvAMP_Assoc_PAL_Capabilities(void * pCtx, tBtampTLVAMP_Assoc_PAL_Capabilities *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampGetPackedTlvAMP_Assoc_PAL_Capabilities\n"); |
| #endif |
| |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 4; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVAMP_Assoc_PAL_Capabilities. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvAMP_Assoc_PAL_Capabilities_t)(void *, tBtampTLVAMP_Assoc_PAL_Capabilities*, v_U32_t*); |
| #define SigPackSizeTlvAMP_Assoc_PAL_Capabilities ( 0x0040 ) |
| |
| v_U32_t btampGetPackedTlvAMP_Assoc_PAL_Version(void * pCtx, tBtampTLVAMP_Assoc_PAL_Version *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVAMP_Assoc_PAL_Version. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvAMP_Assoc_PAL_Version_t)(void *, tBtampTLVAMP_Assoc_PAL_Version*, v_U32_t*); |
| #define SigPackSizeTlvAMP_Assoc_PAL_Version ( 0x0041 ) |
| |
| v_U32_t btampGetPackedTlvAMP_Assoc_Preferred_Channel_List(void * pCtx, tBtampTLVAMP_Assoc_Preferred_Channel_List *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampGetPackedTlvAMP_Assoc_Preferred_Channel_List\n"); |
| #endif |
| |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 3; |
| if ( pTlv->num_triplets ) |
| { |
| *pnNeeded += ( pTlv->num_triplets * 3 ); |
| } |
| else break; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVAMP_Assoc_Preferred_Channel_List. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvAMP_Assoc_Preferred_Channel_List_t)(void *, tBtampTLVAMP_Assoc_Preferred_Channel_List*, v_U32_t*); |
| #define SigPackSizeTlvAMP_Assoc_Preferred_Channel_List ( 0x0042 ) |
| |
| v_U32_t btampGetPackedTlvFlow_Spec(void * pCtx, tBtampTLVFlow_Spec *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 4; |
| *pnNeeded += 4; |
| *pnNeeded += 4; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVFlow_Spec. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvFlow_Spec_t)(void *, tBtampTLVFlow_Spec*, v_U32_t*); |
| #define SigPackSizeTlvFlow_Spec ( 0x0043 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Accept_Logical_Link_Cmd(void * pCtx, tBtampTLVHCI_Accept_Logical_Link_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 18; |
| *pnNeeded += 18; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Accept_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Accept_Logical_Link_Cmd_t)(void *, tBtampTLVHCI_Accept_Logical_Link_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Accept_Logical_Link_Cmd ( 0x0044 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Accept_Physical_Link_Cmd(void * pCtx, tBtampTLVHCI_Accept_Physical_Link_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += pTlv->key_length; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Accept_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Accept_Physical_Link_Cmd_t)(void *, tBtampTLVHCI_Accept_Physical_Link_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Accept_Physical_Link_Cmd ( 0x0045 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Channel_Selected_Event(void * pCtx, tBtampTLVHCI_Channel_Selected_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Channel_Selected_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Channel_Selected_Event_t)(void *, tBtampTLVHCI_Channel_Selected_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Channel_Selected_Event ( 0x0046 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Command_Complete_Event(void * pCtx, tBtampTLVHCI_Command_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| switch (pTlv->command_opcode) |
| { |
| case 3075: |
| *pnNeeded += 1; |
| break; |
| case 3080: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| case 1083: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| case 3077: |
| *pnNeeded += 1; |
| break; |
| case 3093: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| case 3094: |
| *pnNeeded += 1; |
| break; |
| case 3126: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| case 3127: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| case 3169: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| case 3170: |
| *pnNeeded += 1; |
| break; |
| case 3171: |
| *pnNeeded += 1; |
| break; |
| case 3172: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 3; |
| *pnNeeded += 1; |
| break; |
| case 3173: |
| *pnNeeded += 1; |
| break; |
| case 3174: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| case 3175: |
| *pnNeeded += 1; |
| break; |
| case 3177: |
| *pnNeeded += 1; |
| *pnNeeded += 4; |
| break; |
| case 3178: |
| *pnNeeded += 1; |
| break; |
| case 3179: |
| *pnNeeded += 1; |
| break; |
| case 4097: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| case 4098: |
| *pnNeeded += 1; |
| *pnNeeded += 64; |
| break; |
| case 4101: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| case 4106: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| case 5121: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| case 5122: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| case 5123: |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| break; |
| case 5125: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| case 5129: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 4; |
| *pnNeeded += 4; |
| *pnNeeded += 4; |
| *pnNeeded += 4; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 4; |
| *pnNeeded += 4; |
| break; |
| case 5130: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += pTlv->cc_event.Read_Read_Local_AMP_Assoc.remaining_length; |
| break; |
| case 5131: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| case 6145: |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| case 6146: |
| *pnNeeded += 1; |
| break; |
| } |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Command_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Command_Complete_Event_t)(void *, tBtampTLVHCI_Command_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Command_Complete_Event ( 0x0047 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Command_Status_Event(void * pCtx, tBtampTLVHCI_Command_Status_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Command_Status_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Command_Status_Event_t)(void *, tBtampTLVHCI_Command_Status_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Command_Status_Event ( 0x0048 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Create_Logical_Link_Cmd(void * pCtx, tBtampTLVHCI_Create_Logical_Link_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 18; |
| *pnNeeded += 18; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Create_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Create_Logical_Link_Cmd_t)(void *, tBtampTLVHCI_Create_Logical_Link_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Create_Logical_Link_Cmd ( 0x0049 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Create_Physical_Link_Cmd(void * pCtx, tBtampTLVHCI_Create_Physical_Link_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += pTlv->key_length; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Create_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Create_Physical_Link_Cmd_t)(void *, tBtampTLVHCI_Create_Physical_Link_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Create_Physical_Link_Cmd ( 0x004a ) |
| |
| v_U32_t btampGetPackedTlvHCI_Data_Buffer_Overflow_Event(void * pCtx, tBtampTLVHCI_Data_Buffer_Overflow_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Data_Buffer_Overflow_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Data_Buffer_Overflow_Event_t)(void *, tBtampTLVHCI_Data_Buffer_Overflow_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Data_Buffer_Overflow_Event ( 0x004b ) |
| |
| v_U32_t btampGetPackedTlvHCI_Disconnect_Logical_Link_Cmd(void * pCtx, tBtampTLVHCI_Disconnect_Logical_Link_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Disconnect_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Disconnect_Logical_Link_Cmd_t)(void *, tBtampTLVHCI_Disconnect_Logical_Link_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Disconnect_Logical_Link_Cmd ( 0x004c ) |
| |
| v_U32_t btampGetPackedTlvHCI_Disconnect_Logical_Link_Complete_Event(void * pCtx, tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Disconnect_Logical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Disconnect_Logical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Disconnect_Logical_Link_Complete_Event ( 0x004d ) |
| |
| v_U32_t btampGetPackedTlvHCI_Disconnect_Physical_Link_Cmd(void * pCtx, tBtampTLVHCI_Disconnect_Physical_Link_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Disconnect_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Disconnect_Physical_Link_Cmd_t)(void *, tBtampTLVHCI_Disconnect_Physical_Link_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Disconnect_Physical_Link_Cmd ( 0x004e ) |
| |
| v_U32_t btampGetPackedTlvHCI_Disconnect_Physical_Link_Complete_Event(void * pCtx, tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Disconnect_Physical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Disconnect_Physical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Disconnect_Physical_Link_Complete_Event ( 0x004f ) |
| |
| v_U32_t btampGetPackedTlvHCI_Flow_Spec_Modify_Cmd(void * pCtx, tBtampTLVHCI_Flow_Spec_Modify_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| *pnNeeded += 18; |
| *pnNeeded += 18; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Flow_Spec_Modify_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Flow_Spec_Modify_Cmd_t)(void *, tBtampTLVHCI_Flow_Spec_Modify_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Flow_Spec_Modify_Cmd ( 0x0050 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Flow_Spec_Modify_Complete_Event(void * pCtx, tBtampTLVHCI_Flow_Spec_Modify_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Flow_Spec_Modify_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Flow_Spec_Modify_Complete_Event_t)(void *, tBtampTLVHCI_Flow_Spec_Modify_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Flow_Spec_Modify_Complete_Event ( 0x0051 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Flush_Cmd(void * pCtx, tBtampTLVHCI_Flush_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Flush_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Flush_Cmd_t)(void *, tBtampTLVHCI_Flush_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Flush_Cmd ( 0x0052 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Flush_Occurred_Event(void * pCtx, tBtampTLVHCI_Flush_Occurred_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Flush_Occurred_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Flush_Occurred_Event_t)(void *, tBtampTLVHCI_Flush_Occurred_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Flush_Occurred_Event ( 0x0053 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Num_Completed_Pkts_Event(void * pCtx, tBtampTLVHCI_Num_Completed_Pkts_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| // while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| #if 0 |
| // New |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| // End of New |
| #endif |
| // break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Num_Completed_Pkts_Event. */ |
| |
| v_U32_t btampGetPackedTlvHCI_Num_Completed_Data_Blocks_Event(void * pCtx, tBtampTLVHCI_Num_Completed_Data_Blocks_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| // while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| // break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Num_Completed_Data_Blocks_Event. */ |
| |
| //typedef v_U32_t (*pfnPackSizeTlvHCI_Num_Completed_Pkts_Event_t)(void *, tBtampTLVHCI_Command_Status_Event*, v_U32_t*); |
| //#define SigPackSizeTlvHCI_Num_Completed_Pkts_Event ( 0x0048 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Generic_AMP_Link_Key_Notification_Event(void * pCtx, tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 6; |
| *pnNeeded += 32; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Generic_AMP_Link_Key_Notification_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Generic_AMP_Link_Key_Notification_Event_t)(void *, tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Generic_AMP_Link_Key_Notification_Event ( 0x0054 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Hardware_Error_Event(void * pCtx, tBtampTLVHCI_Hardware_Error_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Hardware_Error_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Hardware_Error_Event_t)(void *, tBtampTLVHCI_Hardware_Error_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Hardware_Error_Event ( 0x0055 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Logical_Link_Cancel_Cmd(void * pCtx, tBtampTLVHCI_Logical_Link_Cancel_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Logical_Link_Cancel_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Logical_Link_Cancel_Cmd_t)(void *, tBtampTLVHCI_Logical_Link_Cancel_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Logical_Link_Cancel_Cmd ( 0x0056 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Logical_Link_Complete_Event(void * pCtx, tBtampTLVHCI_Logical_Link_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Logical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Logical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Logical_Link_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Logical_Link_Complete_Event ( 0x0057 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Loopback_Command_Event(void * pCtx, tBtampTLVHCI_Loopback_Command_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 64; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Loopback_Command_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Loopback_Command_Event_t)(void *, tBtampTLVHCI_Loopback_Command_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Loopback_Command_Event ( 0x0058 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Physical_Link_Complete_Event(void * pCtx, tBtampTLVHCI_Physical_Link_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Physical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Physical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Physical_Link_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Physical_Link_Complete_Event ( 0x0059 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Physical_Link_Loss_Warning_Event(void * pCtx, tBtampTLVHCI_Physical_Link_Loss_Warning_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Physical_Link_Loss_Warning_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Physical_Link_Loss_Warning_Event_t)(void *, tBtampTLVHCI_Physical_Link_Loss_Warning_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Physical_Link_Loss_Warning_Event ( 0x005a ) |
| |
| v_U32_t btampGetPackedTlvHCI_Physical_Link_Recovery_Event(void * pCtx, tBtampTLVHCI_Physical_Link_Recovery_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Physical_Link_Recovery_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Physical_Link_Recovery_Event_t)(void *, tBtampTLVHCI_Physical_Link_Recovery_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Physical_Link_Recovery_Event ( 0x005b ) |
| |
| v_U32_t btampGetPackedTlvHCI_Qos_Violation_Event(void * pCtx, tBtampTLVHCI_Qos_Violation_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Qos_Violation_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Qos_Violation_Event_t)(void *, tBtampTLVHCI_Qos_Violation_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Qos_Violation_Event ( 0x005c ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd ( 0x005d ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Buffer_Size_Cmd(void * pCtx, tBtampTLVHCI_Read_Buffer_Size_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Buffer_Size_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Buffer_Size_Cmd_t)(void *, tBtampTLVHCI_Read_Buffer_Size_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Buffer_Size_Cmd ( 0x005e ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Connection_Accept_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Connection_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Connection_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Connection_Accept_Timeout_Cmd ( 0x005f ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Data_Block_Size_Cmd(void * pCtx, tBtampTLVHCI_Read_Data_Block_Size_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Data_Block_Size_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Data_Block_Size_Cmd_t)(void *, tBtampTLVHCI_Read_Data_Block_Size_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Data_Block_Size_Cmd ( 0x0060 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Failed_Contact_Counter_Cmd(void * pCtx, tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Failed_Contact_Counter_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Failed_Contact_Counter_Cmd_t)(void *, tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Failed_Contact_Counter_Cmd ( 0x0061 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Flow_Control_Mode_Cmd(void * pCtx, tBtampTLVHCI_Read_Flow_Control_Mode_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Flow_Control_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Flow_Control_Mode_Cmd_t)(void *, tBtampTLVHCI_Read_Flow_Control_Mode_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Flow_Control_Mode_Cmd ( 0x0062 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Link_Quality_Cmd(void * pCtx, tBtampTLVHCI_Read_Link_Quality_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Link_Quality_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Link_Quality_Cmd_t)(void *, tBtampTLVHCI_Read_Link_Quality_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Link_Quality_Cmd ( 0x0063 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Link_Supervision_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Link_Supervision_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Link_Supervision_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Link_Supervision_Timeout_Cmd ( 0x0064 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Local_AMP_Assoc_Cmd(void * pCtx, tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Local_AMP_Assoc_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Local_AMP_Assoc_Cmd_t)(void *, tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Local_AMP_Assoc_Cmd ( 0x0065 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Local_AMP_Information_Cmd(void * pCtx, tBtampTLVHCI_Read_Local_AMP_Information_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Local_AMP_Information_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Local_AMP_Information_Cmd_t)(void *, tBtampTLVHCI_Read_Local_AMP_Information_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Local_AMP_Information_Cmd ( 0x0066 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Local_Supported_Cmds_Cmd(void * pCtx, tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Local_Supported_Cmds_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Local_Supported_Cmds_Cmd_t)(void *, tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Local_Supported_Cmds_Cmd ( 0x0067 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Local_Version_Info_Cmd(void * pCtx, tBtampTLVHCI_Read_Local_Version_Info_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Local_Version_Info_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Local_Version_Info_Cmd_t)(void *, tBtampTLVHCI_Read_Local_Version_Info_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Local_Version_Info_Cmd ( 0x0068 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Location_Data_Cmd(void * pCtx, tBtampTLVHCI_Read_Location_Data_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Location_Data_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Location_Data_Cmd_t)(void *, tBtampTLVHCI_Read_Location_Data_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Location_Data_Cmd ( 0x0069 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd ( 0x006a ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_Loopback_Mode_Cmd(void * pCtx, tBtampTLVHCI_Read_Loopback_Mode_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_Loopback_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_Loopback_Mode_Cmd_t)(void *, tBtampTLVHCI_Read_Loopback_Mode_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_Loopback_Mode_Cmd ( 0x006b ) |
| |
| v_U32_t btampGetPackedTlvHCI_Read_RSSI_Cmd(void * pCtx, tBtampTLVHCI_Read_RSSI_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Read_RSSI_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Read_RSSI_Cmd_t)(void *, tBtampTLVHCI_Read_RSSI_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Read_RSSI_Cmd ( 0x006c ) |
| |
| v_U32_t btampGetPackedTlvHCI_Reset_Cmd(void * pCtx, tBtampTLVHCI_Reset_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Reset_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Reset_Cmd_t)(void *, tBtampTLVHCI_Reset_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Reset_Cmd ( 0x006d ) |
| |
| v_U32_t btampGetPackedTlvHCI_Reset_Failed_Contact_Counter_Cmd(void * pCtx, tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Reset_Failed_Contact_Counter_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Reset_Failed_Contact_Counter_Cmd_t)(void *, tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Reset_Failed_Contact_Counter_Cmd ( 0x006e ) |
| |
| v_U32_t btampGetPackedTlvHCI_Set_Event_Mask_Cmd(void * pCtx, tBtampTLVHCI_Set_Event_Mask_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 8; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Set_Event_Mask_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Set_Event_Mask_Cmd_t)(void *, tBtampTLVHCI_Set_Event_Mask_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Set_Event_Mask_Cmd ( 0x006f ) |
| |
| v_U32_t btampGetPackedTlvHCI_Set_Event_Mask_Page_2_Cmd(void * pCtx, tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 8; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Set_Event_Mask_Page_2_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Set_Event_Mask_Page_2_Cmd_t)(void *, tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Set_Event_Mask_Page_2_Cmd ( 0x0070 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Set_Short_Range_Mode_Cmd(void * pCtx, tBtampTLVHCI_Set_Short_Range_Mode_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Set_Short_Range_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Set_Short_Range_Mode_Cmd_t)(void *, tBtampTLVHCI_Set_Short_Range_Mode_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Set_Short_Range_Mode_Cmd ( 0x0071 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Short_Range_Mode_Change_Complete_Event(void * pCtx, tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Short_Range_Mode_Change_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Short_Range_Mode_Change_Complete_Event_t)(void *, tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Short_Range_Mode_Change_Complete_Event ( 0x0072 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| *pnNeeded += 4; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd ( 0x0073 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Connection_Accept_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Connection_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Connection_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Connection_Accept_Timeout_Cmd ( 0x0074 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Flow_Control_Mode_Cmd(void * pCtx, tBtampTLVHCI_Write_Flow_Control_Mode_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Flow_Control_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Flow_Control_Mode_Cmd_t)(void *, tBtampTLVHCI_Write_Flow_Control_Mode_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Flow_Control_Mode_Cmd ( 0x0075 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Link_Supervision_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Link_Supervision_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Link_Supervision_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Link_Supervision_Timeout_Cmd ( 0x0076 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Location_Data_Cmd(void * pCtx, tBtampTLVHCI_Write_Location_Data_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 3; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Location_Data_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Location_Data_Cmd_t)(void *, tBtampTLVHCI_Write_Location_Data_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Location_Data_Cmd ( 0x0077 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd(void * pCtx, tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd ( 0x0078 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Loopback_Mode_Cmd(void * pCtx, tBtampTLVHCI_Write_Loopback_Mode_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Loopback_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Loopback_Mode_Cmd_t)(void *, tBtampTLVHCI_Write_Loopback_Mode_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Loopback_Mode_Cmd ( 0x0079 ) |
| |
| v_U32_t btampGetPackedTlvHCI_Write_Remote_AMP_ASSOC_Cmd(void * pCtx, tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampGetPackedTlvHCI_Write_Remote_AMP_ASSOC_Cmd\n"); |
| #endif |
| |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 1; |
| *pnNeeded += 2; |
| *pnNeeded += 2; |
| *pnNeeded += pTlv->amp_assoc_remaining_length; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Write_Remote_AMP_ASSOC_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Write_Remote_AMP_ASSOC_Cmd_t)(void *, tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Write_Remote_AMP_ASSOC_Cmd ( 0x007a ) |
| |
| v_U32_t btampGetPackedTlvHCI_Enhanced_Flush_Cmd(void * pCtx, tBtampTLVHCI_Enhanced_Flush_Cmd *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| *pnNeeded += 1; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Enhanced_Flush_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Enhanced_Flush_Cmd_t)(void *, tBtampTLVHCI_Enhanced_Flush_Cmd*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Enhanced_Flush_Cmd ( 0x007b ) |
| |
| v_U32_t btampGetPackedTlvHCI_Enhanced_Flush_Complete_Event(void * pCtx, tBtampTLVHCI_Enhanced_Flush_Complete_Event *pTlv, v_U32_t *pnNeeded) |
| { |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| (void)pCtx; (void)pTlv; (void)pnNeeded; |
| while ( pTlv->present ) |
| { |
| *pnNeeded += 2; |
| break; |
| } |
| return status; |
| } /* End btampGetPackedTLVHCI_Enhanced_Flush_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackSizeTlvHCI_Enhanced_Flush_Complete_Event_t)(void *, tBtampTLVHCI_Enhanced_Flush_Complete_Event*, v_U32_t*); |
| #define SigPackSizeTlvHCI_Enhanced_Flush_Complete_Event ( 0x007c ) |
| |
| v_U32_t btampGetPackedAMP_ASSOCSize(void * pCtx, tBtampAMP_ASSOC *pFrm, v_U32_t *pnNeeded) |
| { |
| static tTLVDefn TLVS[ ] = { |
| {BTAMP_TLV_AMP_ASSOC_MAC_ADDR, 0, 9, 9, offsetof(tBtampAMP_ASSOC, AMP_Assoc_MAC_Addr), offsetof(tBtampTLVAMP_Assoc_MAC_Addr, present), SigPackSizeTlvAMP_Assoc_MAC_Addr, (pfnGeneric_t)btampGetPackedTlvAMP_Assoc_MAC_Addr, "AMP_Assoc_MAC_Addr", 1, }, |
| {BTAMP_TLV_AMP_ASSOC_PREFERRED_CHANNEL_LIST, 0, 9, 12, offsetof(tBtampAMP_ASSOC, AMP_Assoc_Preferred_Channel_List), offsetof(tBtampTLVAMP_Assoc_Preferred_Channel_List, present), SigPackSizeTlvAMP_Assoc_Preferred_Channel_List, (pfnGeneric_t)btampGetPackedTlvAMP_Assoc_Preferred_Channel_List, "AMP_Assoc_Preferred_Channel_List", 1, }, |
| {BTAMP_TLV_AMP_ASSOC_CONNECTED_CHANNEL, 0, 9, 12, offsetof(tBtampAMP_ASSOC, AMP_Assoc_Connected_Channel), offsetof(tBtampTLVAMP_Assoc_Connected_Channel, present), SigPackSizeTlvAMP_Assoc_Connected_Channel, (pfnGeneric_t)btampGetPackedTlvAMP_Assoc_Connected_Channel, "AMP_Assoc_Connected_Channel", 0, }, |
| {BTAMP_TLV_AMP_ASSOC_PAL_CAPABILITIES, 0, 7, 7, offsetof(tBtampAMP_ASSOC, AMP_Assoc_PAL_Capabilities), offsetof(tBtampTLVAMP_Assoc_PAL_Capabilities, present), SigPackSizeTlvAMP_Assoc_PAL_Capabilities, (pfnGeneric_t)btampGetPackedTlvAMP_Assoc_PAL_Capabilities, "AMP_Assoc_PAL_Capabilities", 0, }, |
| {BTAMP_TLV_AMP_ASSOC_PAL_VERSION, 0, 8, 8, offsetof(tBtampAMP_ASSOC, AMP_Assoc_PAL_Version), offsetof(tBtampTLVAMP_Assoc_PAL_Version, present), SigPackSizeTlvAMP_Assoc_PAL_Version, (pfnGeneric_t)btampGetPackedTlvAMP_Assoc_PAL_Version, "AMP_Assoc_PAL_Version", 1, }, |
| { 0xffff, 0 }, |
| }; |
| |
| v_U32_t status = 0; |
| *pnNeeded = 0; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampGetPackedAMP_ASSOCSize\n"); |
| #endif |
| |
| status |= GetPackedSizeTlvCore(pCtx,(v_U8_t*)pFrm,pnNeeded,TLVS); |
| return status; |
| } /* End btampGetPackedAMP_ASSOCSize. */ |
| |
| static v_U32_t GetPackedSizeTlvCore(void * pCtx, |
| v_U8_t *pFrm, |
| v_U32_t *pnNeeded, |
| tTLVDefn TLVs[]) |
| { |
| tTLVDefn *pTlv; |
| v_U32_t status, status2; |
| tFRAMES_BOOL *pfFound; |
| |
| status = BTAMP_PARSE_SUCCESS; |
| status2 = BTAMP_PARSE_SUCCESS; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In GetPackedSizeTlvCore\n"); |
| #endif |
| |
| pTlv = &( TLVs[0] ); |
| while ( 0xffff != pTlv->id ) |
| { |
| pfFound = (tFRAMES_BOOL*)(pFrm + pTlv->offset + |
| pTlv->presenceOffset); |
| if ( *pfFound ) |
| { |
| *pnNeeded += 4U; |
| if ( pTlv->pec ) *pnNeeded += 3U; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In GetPackedSizeTlvCore, pTlv->sig - %d\n", pTlv->sig); |
| #endif |
| |
| switch (pTlv->sig) |
| { |
| case SigPackSizeTlvAMP_Assoc_Connected_Channel: |
| status2 = ( (pfnPackSizeTlvAMP_Assoc_Connected_Channel_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_Connected_Channel* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvAMP_Assoc_MAC_Addr: |
| status2 = ( (pfnPackSizeTlvAMP_Assoc_MAC_Addr_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_MAC_Addr* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvAMP_Assoc_PAL_Capabilities: |
| status2 = ( (pfnPackSizeTlvAMP_Assoc_PAL_Capabilities_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_PAL_Capabilities* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvAMP_Assoc_PAL_Version: |
| status2 = ( (pfnPackSizeTlvAMP_Assoc_PAL_Version_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_PAL_Version* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvAMP_Assoc_Preferred_Channel_List: |
| status2 = ( (pfnPackSizeTlvAMP_Assoc_Preferred_Channel_List_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_Preferred_Channel_List* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvFlow_Spec: |
| status2 = ( (pfnPackSizeTlvFlow_Spec_t)(pTlv->pfn) )(pCtx, ( tBtampTLVFlow_Spec* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Accept_Logical_Link_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Accept_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Accept_Logical_Link_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Accept_Physical_Link_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Accept_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Accept_Physical_Link_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Channel_Selected_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Channel_Selected_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Channel_Selected_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Command_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Command_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Command_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Command_Status_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Command_Status_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Command_Status_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Create_Logical_Link_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Create_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Create_Logical_Link_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Create_Physical_Link_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Create_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Create_Physical_Link_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Data_Buffer_Overflow_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Data_Buffer_Overflow_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Data_Buffer_Overflow_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Disconnect_Logical_Link_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Disconnect_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Logical_Link_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Disconnect_Logical_Link_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Disconnect_Logical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Disconnect_Physical_Link_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Disconnect_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Physical_Link_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Disconnect_Physical_Link_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Disconnect_Physical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Flow_Spec_Modify_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Flow_Spec_Modify_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flow_Spec_Modify_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Flow_Spec_Modify_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Flow_Spec_Modify_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flow_Spec_Modify_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Flush_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Flush_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flush_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Flush_Occurred_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Flush_Occurred_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flush_Occurred_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Generic_AMP_Link_Key_Notification_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Generic_AMP_Link_Key_Notification_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Hardware_Error_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Hardware_Error_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Hardware_Error_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Logical_Link_Cancel_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Logical_Link_Cancel_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Logical_Link_Cancel_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Logical_Link_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Logical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Logical_Link_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Loopback_Command_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Loopback_Command_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Loopback_Command_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Physical_Link_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Physical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Physical_Link_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Physical_Link_Loss_Warning_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Physical_Link_Loss_Warning_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Physical_Link_Loss_Warning_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Physical_Link_Recovery_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Physical_Link_Recovery_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Physical_Link_Recovery_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Qos_Violation_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Qos_Violation_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Qos_Violation_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Buffer_Size_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Buffer_Size_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Buffer_Size_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Connection_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Connection_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Data_Block_Size_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Data_Block_Size_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Data_Block_Size_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Failed_Contact_Counter_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Failed_Contact_Counter_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Flow_Control_Mode_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Flow_Control_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Flow_Control_Mode_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Link_Quality_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Link_Quality_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Link_Quality_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Link_Supervision_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Link_Supervision_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Local_AMP_Assoc_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Local_AMP_Assoc_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Local_AMP_Information_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Local_AMP_Information_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_AMP_Information_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Local_Supported_Cmds_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Local_Supported_Cmds_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Local_Version_Info_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Local_Version_Info_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_Version_Info_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Location_Data_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Location_Data_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Location_Data_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_Loopback_Mode_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_Loopback_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Loopback_Mode_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Read_RSSI_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Read_RSSI_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_RSSI_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Reset_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Reset_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Reset_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Reset_Failed_Contact_Counter_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Reset_Failed_Contact_Counter_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Set_Event_Mask_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Set_Event_Mask_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Set_Event_Mask_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Set_Event_Mask_Page_2_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Set_Event_Mask_Page_2_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Set_Short_Range_Mode_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Set_Short_Range_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Set_Short_Range_Mode_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Short_Range_Mode_Change_Complete_Event: |
| status2 = ( (pfnPackSizeTlvHCI_Short_Range_Mode_Change_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Connection_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Connection_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Flow_Control_Mode_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Flow_Control_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Flow_Control_Mode_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Link_Supervision_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Link_Supervision_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Location_Data_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Location_Data_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Location_Data_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Loopback_Mode_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Loopback_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Loopback_Mode_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| case SigPackSizeTlvHCI_Write_Remote_AMP_ASSOC_Cmd: |
| status2 = ( (pfnPackSizeTlvHCI_Write_Remote_AMP_ASSOC_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd* )(pFrm + pTlv->offset), pnNeeded); |
| if (status2) status |= status2; |
| break; |
| default: |
| FRAMES_LOG1(pCtx, FRLOGE, FRFL("INTERNAL ERROR-- I don" |
| "'t know about the TLV signature %d; this is most l" |
| "ikely a bug in 'framesc'.\n"), pTlv->sig); |
| return BTAMP_INTERNAL_ERROR; |
| } |
| } |
| ++pTlv; |
| } |
| return status; |
| } |
| v_U32_t btampPackTlvAMP_Assoc_Connected_Channel(void * pCtx, |
| tBtampTLVAMP_Assoc_Connected_Channel *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 2; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampPackTlvAMP_Assoc_Connected_Channel\n"); |
| #endif |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvAMP_Assoc_Connected_Channel(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3, 0); |
| else *pBuf = 3; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->country, 3); |
| *pnConsumed += 3; |
| pBuf += 3; |
| nBuf -= 3; |
| if ( pSrc->num_triplets ) { |
| BTAMP_MEMCPY(pCtx, pBuf, &( pSrc->triplets ), ( pSrc->num_triplets * 3 )); |
| *pnConsumed += ( pSrc->num_triplets * 3 ); |
| pBuf += ( ( pSrc->num_triplets * 3 ) ); |
| nBuf -= ( ( pSrc->num_triplets * 3 ) ); |
| } |
| else break; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } |
| else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvAMP_Assoc_Connected_Channel. */ |
| |
| typedef v_U32_t (*pfnPackTlvAMP_Assoc_Connected_Channel_t)(void *, tBtampTLVAMP_Assoc_Connected_Channel *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvAMP_Assoc_Connected_Channel ( 0x007b ) |
| |
| v_U32_t btampPackTlvAMP_Assoc_MAC_Addr(void * pCtx, |
| tBtampTLVAMP_Assoc_MAC_Addr *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 2; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampPackTlvAMP_Assoc_MAC_Addr\n"); |
| #endif |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvAMP_Assoc_MAC_Addr(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1, 0); |
| else *pBuf = 1; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->mac_addr, 6); |
| *pnConsumed += 6; |
| pBuf += 6; |
| nBuf -= 6; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvAMP_Assoc_MAC_Addr. */ |
| |
| typedef v_U32_t (*pfnPackTlvAMP_Assoc_MAC_Addr_t)(void *, tBtampTLVAMP_Assoc_MAC_Addr *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvAMP_Assoc_MAC_Addr ( 0x007c ) |
| |
| v_U32_t btampPackTlvAMP_Assoc_PAL_Capabilities(void * pCtx, |
| tBtampTLVAMP_Assoc_PAL_Capabilities *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 2; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampPackTlvAMP_Assoc_PAL_Capabilities\n"); |
| #endif |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvAMP_Assoc_PAL_Capabilities(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 4, 0); |
| else *pBuf = 4; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtonl(pCtx, pBuf, pSrc->pal_capabilities, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvAMP_Assoc_PAL_Capabilities. */ |
| |
| typedef v_U32_t (*pfnPackTlvAMP_Assoc_PAL_Capabilities_t)(void *, tBtampTLVAMP_Assoc_PAL_Capabilities *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvAMP_Assoc_PAL_Capabilities ( 0x007d ) |
| |
| v_U32_t btampPackTlvAMP_Assoc_PAL_Version(void * pCtx, |
| tBtampTLVAMP_Assoc_PAL_Version *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 2; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampPackTlvAMP_Assoc_PAL_Version\n"); |
| #endif |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvAMP_Assoc_PAL_Version(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5, 0); |
| else *pBuf = 5; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->pal_version; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->pal_CompanyID, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->pal_subversion, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvAMP_Assoc_PAL_Version. */ |
| |
| typedef v_U32_t (*pfnPackTlvAMP_Assoc_PAL_Version_t)(void *, tBtampTLVAMP_Assoc_PAL_Version *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvAMP_Assoc_PAL_Version ( 0x007e ) |
| |
| v_U32_t btampPackTlvAMP_Assoc_Preferred_Channel_List(void * pCtx, |
| tBtampTLVAMP_Assoc_Preferred_Channel_List *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 2; |
| #ifdef WLAN_BAPHCI_ENABLE_LOGGING |
| VOS_TRACE(VOS_MODULE_ID_BAP,VOS_TRACE_LEVEL_ERROR, |
| "In btampPackTlvAMP_Assoc_Preferred_Channel_List\n"); |
| #endif |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvAMP_Assoc_Preferred_Channel_List(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 2, 0); |
| else *pBuf = 2; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->country, 3); |
| *pnConsumed += 3; |
| pBuf += 3; |
| nBuf -= 3; |
| if ( pSrc->num_triplets ) { |
| BTAMP_MEMCPY(pCtx, pBuf, &( pSrc->triplets ), ( pSrc->num_triplets * 3 )); |
| *pnConsumed += ( pSrc->num_triplets * 3 ); |
| pBuf += ( ( pSrc->num_triplets * 3 ) ); |
| nBuf -= ( ( pSrc->num_triplets * 3 ) ); |
| } |
| else break; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvAMP_Assoc_Preferred_Channel_List. */ |
| |
| typedef v_U32_t (*pfnPackTlvAMP_Assoc_Preferred_Channel_List_t)(void *, tBtampTLVAMP_Assoc_Preferred_Channel_List *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvAMP_Assoc_Preferred_Channel_List ( 0x007f ) |
| |
| v_U32_t btampPackTlvFlow_Spec(void * pCtx, |
| tBtampTLVFlow_Spec *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvFlow_Spec(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 6, 0); |
| else *pBuf = 6; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->flow_spec_id; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->service_type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->max_sdu, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtonl(pCtx, pBuf, pSrc->sdu_inter_arrival, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| frameshtonl(pCtx, pBuf, pSrc->access_latency, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| frameshtonl(pCtx, pBuf, pSrc->flush_timeout, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvFlow_Spec. */ |
| |
| typedef v_U32_t (*pfnPackTlvFlow_Spec_t)(void *, tBtampTLVFlow_Spec *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvFlow_Spec ( 0x0080 ) |
| |
| v_U32_t btampPackTlvHCI_Accept_Logical_Link_Cmd(void * pCtx, |
| tBtampTLVHCI_Accept_Logical_Link_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Accept_Logical_Link_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1081, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->tx_flow_spec, 18); |
| *pnConsumed += 18; |
| pBuf += 18; |
| nBuf -= 18; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->rx_flow_spec, 18); |
| *pnConsumed += 18; |
| pBuf += 18; |
| nBuf -= 18; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Accept_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Accept_Logical_Link_Cmd_t)(void *, tBtampTLVHCI_Accept_Logical_Link_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Accept_Logical_Link_Cmd ( 0x0081 ) |
| |
| v_U32_t btampPackTlvHCI_Accept_Physical_Link_Cmd(void * pCtx, |
| tBtampTLVHCI_Accept_Physical_Link_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Accept_Physical_Link_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1078, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->key_length; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->key_type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, &( pSrc->key_material ), pSrc->key_length); |
| *pnConsumed += pSrc->key_length; |
| pBuf += ( pSrc->key_length ); |
| nBuf -= ( pSrc->key_length ); |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Accept_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Accept_Physical_Link_Cmd_t)(void *, tBtampTLVHCI_Accept_Physical_Link_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Accept_Physical_Link_Cmd ( 0x0082 ) |
| |
| v_U32_t btampPackTlvHCI_Channel_Selected_Event(void * pCtx, |
| tBtampTLVHCI_Channel_Selected_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Channel_Selected_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 65, 0); |
| else *pBuf = 65; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Channel_Selected_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Channel_Selected_Event_t)(void *, tBtampTLVHCI_Channel_Selected_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Channel_Selected_Event ( 0x0083 ) |
| |
| v_U32_t btampPackTlvHCI_Command_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Command_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Command_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 14, 0); |
| else *pBuf = 14; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->num_hci_command_packets; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->command_opcode, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| switch (pSrc->command_opcode) |
| { |
| case 3075: |
| *pBuf = pSrc->cc_event.Reset.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3080: |
| *pBuf = pSrc->cc_event.Flush.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Flush.log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 1083: |
| *pBuf = pSrc->cc_event.Logical_Link_Cancel.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Logical_Link_Cancel.phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Logical_Link_Cancel.tx_flow_spec_id; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3077: |
| *pBuf = pSrc->cc_event.Set_Event_Mask.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3093: |
| *pBuf = pSrc->cc_event.Read_Connection_Accept_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Connection_Accept_TO.connection_accept_timeout, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 3094: |
| *pBuf = pSrc->cc_event.Write_Connection_Accept_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3126: |
| *pBuf = pSrc->cc_event.Read_Link_Supervision_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Link_Supervision_TO.log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Link_Supervision_TO.link_supervision_timeout, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 3127: |
| *pBuf = pSrc->cc_event.Write_Link_Supervision_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Write_Link_Supervision_TO.log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 3169: |
| *pBuf = pSrc->cc_event.Read_Logical_Link_Accept_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Logical_Link_Accept_TO.logical_link_accept_timeout, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 3170: |
| *pBuf = pSrc->cc_event.Write_Logical_Link_Accept_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3171: |
| *pBuf = pSrc->cc_event.Set_Event_Mask_Page_2.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3172: |
| *pBuf = pSrc->cc_event.Read_Location_Data.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_Location_Data.loc_domain_aware; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->cc_event.Read_Location_Data.loc_domain, 3); |
| *pnConsumed += 3; |
| pBuf += 3; |
| nBuf -= 3; |
| *pBuf = pSrc->cc_event.Read_Location_Data.loc_options; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3173: |
| *pBuf = pSrc->cc_event.Write_Location_Data.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3174: |
| *pBuf = pSrc->cc_event.Read_Flow_Control_Mode.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_Flow_Control_Mode.flow_control_mode; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3175: |
| *pBuf = pSrc->cc_event.Write_Flow_Control_Mode.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3177: |
| *pBuf = pSrc->cc_event.Read_BE_Flush_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_BE_Flush_TO.best_effort_flush_timeout, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| break; |
| case 3178: |
| *pBuf = pSrc->cc_event.Write_BE_Flush_TO.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 3179: |
| *pBuf = pSrc->cc_event.Set_Short_Range_Mode.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 4097: |
| *pBuf = pSrc->cc_event.Read_Local_Version_Info.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_Local_Version_Info.HC_HCI_Version; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Local_Version_Info.HC_HCI_Revision, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->cc_event.Read_Local_Version_Info.HC_PAL_Version; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Local_Version_Info.HC_Manufac_Name, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Local_Version_Info.HC_PAL_Sub_Version, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 4098: |
| *pBuf = pSrc->cc_event.Read_Local_Supported_Cmds.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->cc_event.Read_Local_Supported_Cmds.HC_Support_Cmds, 64); |
| *pnConsumed += 64; |
| pBuf += 64; |
| nBuf -= 64; |
| break; |
| case 4101: |
| *pBuf = pSrc->cc_event.Read_Buffer_Size.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Buffer_Size.HC_ACL_Data_Packet_Length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->cc_event.Read_Buffer_Size.HC_SCO_Packet_Length; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Buffer_Size.HC_Total_Num_ACL_Packets, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Buffer_Size.HC_Total_Num_SCO_Packets, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 4106: |
| *pBuf = pSrc->cc_event.Read_Data_Block_Size.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Data_Block_Size.HC_Max_ACL_Data_Packet_Length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Data_Block_Size.HC_Data_Block_Length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Data_Block_Size.HC_Total_Num_Data_Blocks, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 5121: |
| *pBuf = pSrc->cc_event.Read_Failed_Contact_Counter.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Failed_Contact_Counter.log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Failed_Contact_Counter.failed_contact_counter, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 5122: |
| *pBuf = pSrc->cc_event.Reset_Failed_Contact_Counter.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Reset_Failed_Contact_Counter.log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| case 5123: |
| *pBuf = pSrc->cc_event.Read_Link_Quality.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Link_Quality.log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->cc_event.Read_Link_Quality.link_quality; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 5125: |
| *pBuf = pSrc->cc_event.Read_RSSI.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_RSSI.phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_RSSI.rssi; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 5129: |
| *pBuf = pSrc->cc_event.Read_Local_AMP_Info.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_Local_AMP_Info.HC_AMP_Status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_Total_BW, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_Max_Guaranteed_BW, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_Min_Latency, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_Max_PDU_Size, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| *pBuf = pSrc->cc_event.Read_Local_AMP_Info.HC_Controller_Type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_PAL_Capabilities, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_AMP_Assoc_Length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_Max_Flush_Timeout, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| frameshtonl(pCtx, pBuf, pSrc->cc_event.Read_Local_AMP_Info.HC_BE_Flush_Timeout, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| break; |
| case 5130: |
| *pBuf = pSrc->cc_event.Read_Read_Local_AMP_Assoc.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_Read_Local_AMP_Assoc.phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->cc_event.Read_Read_Local_AMP_Assoc.remaining_length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| BTAMP_MEMCPY(pCtx, pBuf, &( pSrc->cc_event.Read_Read_Local_AMP_Assoc.AMP_assoc_fragment ), pSrc->cc_event.Read_Read_Local_AMP_Assoc.remaining_length); |
| *pnConsumed += pSrc->cc_event.Read_Read_Local_AMP_Assoc.remaining_length; |
| pBuf += ( pSrc->cc_event.Read_Read_Local_AMP_Assoc.remaining_length ); |
| nBuf -= ( pSrc->cc_event.Read_Read_Local_AMP_Assoc.remaining_length ); |
| break; |
| case 5131: |
| *pBuf = pSrc->cc_event.Write_Remote_AMP_Assoc.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Write_Remote_AMP_Assoc.phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 6145: |
| *pBuf = pSrc->cc_event.Read_Loopback_Mode.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->cc_event.Read_Loopback_Mode.loopback_mode; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| case 6146: |
| *pBuf = pSrc->cc_event.Write_Loopback_Mode.status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Command_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Command_Complete_Event_t)(void *, tBtampTLVHCI_Command_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Command_Complete_Event ( 0x0084 ) |
| |
| v_U32_t btampPackTlvHCI_Command_Status_Event(void * pCtx, |
| tBtampTLVHCI_Command_Status_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Command_Status_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 15, 0); |
| else *pBuf = 15; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->num_hci_command_packets; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->command_opcode, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Command_Status_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Command_Status_Event_t)(void *, tBtampTLVHCI_Command_Status_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Command_Status_Event ( 0x0085 ) |
| |
| v_U32_t btampPackTlvHCI_Create_Logical_Link_Cmd(void * pCtx, |
| tBtampTLVHCI_Create_Logical_Link_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| |
| nConsumedOnEntry = *pnConsumed; |
| status = btampGetPackedTlvHCI_Create_Logical_Link_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1080, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->tx_flow_spec, 18); |
| *pnConsumed += 18; |
| pBuf += 18; |
| nBuf -= 18; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->rx_flow_spec, 18); |
| *pnConsumed += 18; |
| pBuf += 18; |
| nBuf -= 18; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Create_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Create_Logical_Link_Cmd_t)(void *, tBtampTLVHCI_Create_Logical_Link_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Create_Logical_Link_Cmd ( 0x0086 ) |
| |
| v_U32_t btampPackTlvHCI_Create_Physical_Link_Cmd(void * pCtx, |
| tBtampTLVHCI_Create_Physical_Link_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Create_Physical_Link_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1077, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->key_length; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->key_type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, &( pSrc->key_material ), pSrc->key_length); |
| *pnConsumed += pSrc->key_length; |
| pBuf += ( pSrc->key_length ); |
| nBuf -= ( pSrc->key_length ); |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Create_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Create_Physical_Link_Cmd_t)(void *, tBtampTLVHCI_Create_Physical_Link_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Create_Physical_Link_Cmd ( 0x0087 ) |
| |
| v_U32_t btampPackTlvHCI_Data_Buffer_Overflow_Event(void * pCtx, |
| tBtampTLVHCI_Data_Buffer_Overflow_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Data_Buffer_Overflow_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 26, 0); |
| else *pBuf = 26; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->link_type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Data_Buffer_Overflow_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Data_Buffer_Overflow_Event_t)(void *, tBtampTLVHCI_Data_Buffer_Overflow_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Data_Buffer_Overflow_Event ( 0x0088 ) |
| |
| v_U32_t btampPackTlvHCI_Disconnect_Logical_Link_Cmd(void * pCtx, |
| tBtampTLVHCI_Disconnect_Logical_Link_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Disconnect_Logical_Link_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1082, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Disconnect_Logical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Disconnect_Logical_Link_Cmd_t)(void *, tBtampTLVHCI_Disconnect_Logical_Link_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Disconnect_Logical_Link_Cmd ( 0x0089 ) |
| |
| v_U32_t btampPackTlvHCI_Disconnect_Logical_Link_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Disconnect_Logical_Link_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 70, 0); |
| else *pBuf = 70; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->reason; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Disconnect_Logical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Disconnect_Logical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Disconnect_Logical_Link_Complete_Event ( 0x008a ) |
| |
| v_U32_t btampPackTlvHCI_Disconnect_Physical_Link_Cmd(void * pCtx, |
| tBtampTLVHCI_Disconnect_Physical_Link_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Disconnect_Physical_Link_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1079, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->reason; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Disconnect_Physical_Link_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Disconnect_Physical_Link_Cmd_t)(void *, tBtampTLVHCI_Disconnect_Physical_Link_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Disconnect_Physical_Link_Cmd ( 0x008b ) |
| |
| v_U32_t btampPackTlvHCI_Disconnect_Physical_Link_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Disconnect_Physical_Link_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 66, 0); |
| else *pBuf = 66; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->reason; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Disconnect_Physical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Disconnect_Physical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Disconnect_Physical_Link_Complete_Event ( 0x008c ) |
| |
| v_U32_t btampPackTlvHCI_Flow_Spec_Modify_Cmd(void * pCtx, |
| tBtampTLVHCI_Flow_Spec_Modify_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Flow_Spec_Modify_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1084, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->be_aggr_counter; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->tx_flow_spec, 18); |
| *pnConsumed += 18; |
| pBuf += 18; |
| nBuf -= 18; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->rx_flow_spec, 18); |
| *pnConsumed += 18; |
| pBuf += 18; |
| nBuf -= 18; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Flow_Spec_Modify_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Flow_Spec_Modify_Cmd_t)(void *, tBtampTLVHCI_Flow_Spec_Modify_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Flow_Spec_Modify_Cmd ( 0x008d ) |
| |
| v_U32_t btampPackTlvHCI_Flow_Spec_Modify_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Flow_Spec_Modify_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Flow_Spec_Modify_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 71, 0); |
| else *pBuf = 71; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Flow_Spec_Modify_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Flow_Spec_Modify_Complete_Event_t)(void *, tBtampTLVHCI_Flow_Spec_Modify_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Flow_Spec_Modify_Complete_Event ( 0x008e ) |
| |
| v_U32_t btampPackTlvHCI_Flush_Cmd(void * pCtx, |
| tBtampTLVHCI_Flush_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Flush_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3080, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Flush_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Flush_Cmd_t)(void *, tBtampTLVHCI_Flush_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Flush_Cmd ( 0x008f ) |
| |
| v_U32_t btampPackTlvHCI_Flush_Occurred_Event(void * pCtx, |
| tBtampTLVHCI_Flush_Occurred_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Flush_Occurred_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 17, 0); |
| else *pBuf = 17; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Flush_Occurred_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Flush_Occurred_Event_t)(void *, tBtampTLVHCI_Flush_Occurred_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Flush_Occurred_Event ( 0x0090 ) |
| |
| v_U32_t btampPackTlvHCI_Num_Completed_Pkts_Event(void * pCtx, |
| tBtampTLVHCI_Num_Completed_Pkts_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Num_Completed_Pkts_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| // while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 19, 0); |
| else *pBuf = 19; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->num_handles; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->conn_handles[0], 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->num_completed_pkts[0], 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| #if 0 |
| // New |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| // End of new |
| #endif |
| // break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Num_Completed_Pkts_Event. */ |
| |
| v_U32_t btampPackTlvHCI_Num_Completed_Data_Blocks_Event(void * pCtx, |
| tBtampTLVHCI_Num_Completed_Data_Blocks_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Num_Completed_Data_Blocks_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| // while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 72, 0); |
| else *pBuf = 72; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->total_num_data_blocks, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->num_handles; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->conn_handles[0], 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->num_completed_pkts[0], 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->num_completed_blocks[0], 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| #if 0 |
| // New |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, 0, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| // End of new |
| #endif |
| // break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Num_Completed_Data_Blocks_Event. */ |
| |
| //typedef v_U32_t (*pfnPackTlvHCI_Num_Completed_Pkts_Event_t)(void *, tBtampTLVHCI_Num_Completed_Pkts_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| //#define SigPackTlvHCI_Num_Completed_Pkts_Event ( 0x0085 ) |
| |
| v_U32_t btampPackTlvHCI_Generic_AMP_Link_Key_Notification_Event(void * pCtx, |
| tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Generic_AMP_Link_Key_Notification_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 62, 0); |
| else *pBuf = 62; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->bd_addr, 6); |
| *pnConsumed += 6; |
| pBuf += 6; |
| nBuf -= 6; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->generic_amp_link_key, 32); |
| *pnConsumed += 32; |
| pBuf += 32; |
| nBuf -= 32; |
| *pBuf = pSrc->key_type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Generic_AMP_Link_Key_Notification_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Generic_AMP_Link_Key_Notification_Event_t)(void *, tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Generic_AMP_Link_Key_Notification_Event ( 0x0091 ) |
| |
| v_U32_t btampPackTlvHCI_Hardware_Error_Event(void * pCtx, |
| tBtampTLVHCI_Hardware_Error_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Hardware_Error_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 16, 0); |
| else *pBuf = 16; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->hardware_code; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Hardware_Error_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Hardware_Error_Event_t)(void *, tBtampTLVHCI_Hardware_Error_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Hardware_Error_Event ( 0x0092 ) |
| |
| v_U32_t btampPackTlvHCI_Logical_Link_Cancel_Cmd(void * pCtx, |
| tBtampTLVHCI_Logical_Link_Cancel_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Logical_Link_Cancel_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 1083, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->tx_flow_spec_id; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Logical_Link_Cancel_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Logical_Link_Cancel_Cmd_t)(void *, tBtampTLVHCI_Logical_Link_Cancel_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Logical_Link_Cancel_Cmd ( 0x0093 ) |
| |
| v_U32_t btampPackTlvHCI_Logical_Link_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Logical_Link_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Logical_Link_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 69, 0); |
| else *pBuf = 69; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->flow_spec_id; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Logical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Logical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Logical_Link_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Logical_Link_Complete_Event ( 0x0094 ) |
| |
| v_U32_t btampPackTlvHCI_Loopback_Command_Event(void * pCtx, |
| tBtampTLVHCI_Loopback_Command_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Loopback_Command_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 25, 0); |
| else *pBuf = 25; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->hci_command_packet, 64); |
| *pnConsumed += 64; |
| pBuf += 64; |
| nBuf -= 64; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Loopback_Command_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Loopback_Command_Event_t)(void *, tBtampTLVHCI_Loopback_Command_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Loopback_Command_Event ( 0x0095 ) |
| |
| v_U32_t btampPackTlvHCI_Physical_Link_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Physical_Link_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Physical_Link_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 64, 0); |
| else *pBuf = 64; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Physical_Link_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Physical_Link_Complete_Event_t)(void *, tBtampTLVHCI_Physical_Link_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Physical_Link_Complete_Event ( 0x0096 ) |
| |
| v_U32_t btampPackTlvHCI_Physical_Link_Loss_Warning_Event(void * pCtx, |
| tBtampTLVHCI_Physical_Link_Loss_Warning_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Physical_Link_Loss_Warning_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 67, 0); |
| else *pBuf = 67; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->reason; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Physical_Link_Loss_Warning_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Physical_Link_Loss_Warning_Event_t)(void *, tBtampTLVHCI_Physical_Link_Loss_Warning_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Physical_Link_Loss_Warning_Event ( 0x0097 ) |
| |
| v_U32_t btampPackTlvHCI_Physical_Link_Recovery_Event(void * pCtx, |
| tBtampTLVHCI_Physical_Link_Recovery_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Physical_Link_Recovery_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 68, 0); |
| else *pBuf = 68; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Physical_Link_Recovery_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Physical_Link_Recovery_Event_t)(void *, tBtampTLVHCI_Physical_Link_Recovery_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Physical_Link_Recovery_Event ( 0x0098 ) |
| |
| v_U32_t btampPackTlvHCI_Qos_Violation_Event(void * pCtx, |
| tBtampTLVHCI_Qos_Violation_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Qos_Violation_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 30, 0); |
| else *pBuf = 30; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Qos_Violation_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Qos_Violation_Event_t)(void *, tBtampTLVHCI_Qos_Violation_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Qos_Violation_Event ( 0x0099 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3177, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd ( 0x009a ) |
| |
| v_U32_t btampPackTlvHCI_Read_Buffer_Size_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Buffer_Size_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Buffer_Size_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 4101, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Buffer_Size_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Buffer_Size_Cmd_t)(void *, tBtampTLVHCI_Read_Buffer_Size_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Buffer_Size_Cmd ( 0x009b ) |
| |
| v_U32_t btampPackTlvHCI_Read_Connection_Accept_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Connection_Accept_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3093, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Connection_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Connection_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Connection_Accept_Timeout_Cmd ( 0x009c ) |
| |
| v_U32_t btampPackTlvHCI_Read_Data_Block_Size_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Data_Block_Size_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Data_Block_Size_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 4106, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Data_Block_Size_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Data_Block_Size_Cmd_t)(void *, tBtampTLVHCI_Read_Data_Block_Size_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Data_Block_Size_Cmd ( 0x009d ) |
| |
| v_U32_t btampPackTlvHCI_Read_Failed_Contact_Counter_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Failed_Contact_Counter_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5121, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Failed_Contact_Counter_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Failed_Contact_Counter_Cmd_t)(void *, tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Failed_Contact_Counter_Cmd ( 0x009e ) |
| |
| v_U32_t btampPackTlvHCI_Read_Flow_Control_Mode_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Flow_Control_Mode_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Flow_Control_Mode_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3174, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Flow_Control_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Flow_Control_Mode_Cmd_t)(void *, tBtampTLVHCI_Read_Flow_Control_Mode_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Flow_Control_Mode_Cmd ( 0x009f ) |
| |
| v_U32_t btampPackTlvHCI_Read_Link_Quality_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Link_Quality_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Link_Quality_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5123, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Link_Quality_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Link_Quality_Cmd_t)(void *, tBtampTLVHCI_Read_Link_Quality_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Link_Quality_Cmd ( 0x00a0 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Link_Supervision_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Link_Supervision_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3126, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Link_Supervision_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Link_Supervision_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Link_Supervision_Timeout_Cmd ( 0x00a1 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Local_AMP_Assoc_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Local_AMP_Assoc_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5130, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->length_so_far, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->max_remote_amp_assoc_length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Local_AMP_Assoc_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Local_AMP_Assoc_Cmd_t)(void *, tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Local_AMP_Assoc_Cmd ( 0x00a2 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Local_AMP_Information_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Local_AMP_Information_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Local_AMP_Information_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5129, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Local_AMP_Information_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Local_AMP_Information_Cmd_t)(void *, tBtampTLVHCI_Read_Local_AMP_Information_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Local_AMP_Information_Cmd ( 0x00a3 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Local_Supported_Cmds_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Local_Supported_Cmds_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 4098, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Local_Supported_Cmds_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Local_Supported_Cmds_Cmd_t)(void *, tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Local_Supported_Cmds_Cmd ( 0x00a4 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Local_Version_Info_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Local_Version_Info_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Local_Version_Info_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 4097, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Local_Version_Info_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Local_Version_Info_Cmd_t)(void *, tBtampTLVHCI_Read_Local_Version_Info_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Local_Version_Info_Cmd ( 0x00a5 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Location_Data_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Location_Data_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Location_Data_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3172, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Location_Data_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Location_Data_Cmd_t)(void *, tBtampTLVHCI_Read_Location_Data_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Location_Data_Cmd ( 0x00a6 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3169, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd ( 0x00a7 ) |
| |
| v_U32_t btampPackTlvHCI_Read_Loopback_Mode_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_Loopback_Mode_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_Loopback_Mode_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 6145, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_Loopback_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_Loopback_Mode_Cmd_t)(void *, tBtampTLVHCI_Read_Loopback_Mode_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_Loopback_Mode_Cmd ( 0x00a8 ) |
| |
| v_U32_t btampPackTlvHCI_Read_RSSI_Cmd(void * pCtx, |
| tBtampTLVHCI_Read_RSSI_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Read_RSSI_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5125, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Read_RSSI_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Read_RSSI_Cmd_t)(void *, tBtampTLVHCI_Read_RSSI_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Read_RSSI_Cmd ( 0x00a9 ) |
| |
| v_U32_t btampPackTlvHCI_Reset_Cmd(void * pCtx, |
| tBtampTLVHCI_Reset_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Reset_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3075, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Reset_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Reset_Cmd_t)(void *, tBtampTLVHCI_Reset_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Reset_Cmd ( 0x00aa ) |
| |
| v_U32_t btampPackTlvHCI_Reset_Failed_Contact_Counter_Cmd(void * pCtx, |
| tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Reset_Failed_Contact_Counter_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5122, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Reset_Failed_Contact_Counter_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Reset_Failed_Contact_Counter_Cmd_t)(void *, tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Reset_Failed_Contact_Counter_Cmd ( 0x00ab ) |
| |
| v_U32_t btampPackTlvHCI_Set_Event_Mask_Cmd(void * pCtx, |
| tBtampTLVHCI_Set_Event_Mask_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Set_Event_Mask_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3077, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->event_mask, 8); |
| *pnConsumed += 8; |
| pBuf += 8; |
| nBuf -= 8; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Set_Event_Mask_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Set_Event_Mask_Cmd_t)(void *, tBtampTLVHCI_Set_Event_Mask_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Set_Event_Mask_Cmd ( 0x00ac ) |
| |
| v_U32_t btampPackTlvHCI_Set_Event_Mask_Page_2_Cmd(void * pCtx, |
| tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Set_Event_Mask_Page_2_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3171, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->event_mask_page_2, 8); |
| *pnConsumed += 8; |
| pBuf += 8; |
| nBuf -= 8; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Set_Event_Mask_Page_2_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Set_Event_Mask_Page_2_Cmd_t)(void *, tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Set_Event_Mask_Page_2_Cmd ( 0x00ad ) |
| |
| v_U32_t btampPackTlvHCI_Set_Short_Range_Mode_Cmd(void * pCtx, |
| tBtampTLVHCI_Set_Short_Range_Mode_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Set_Short_Range_Mode_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3179, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->short_range_mode; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Set_Short_Range_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Set_Short_Range_Mode_Cmd_t)(void *, tBtampTLVHCI_Set_Short_Range_Mode_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Set_Short_Range_Mode_Cmd ( 0x00ae ) |
| |
| v_U32_t btampPackTlvHCI_Short_Range_Mode_Change_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Short_Range_Mode_Change_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 76, 0); |
| else *pBuf = 76; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->status; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| *pBuf = pSrc->short_range_mode; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Short_Range_Mode_Change_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Short_Range_Mode_Change_Complete_Event_t)(void *, tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Short_Range_Mode_Change_Complete_Event ( 0x00af ) |
| |
| v_U32_t btampPackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3178, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtonl(pCtx, pBuf, pSrc->best_effort_flush_timeout, 0); |
| *pnConsumed += 4; |
| pBuf += 4; |
| nBuf -= 4; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd ( 0x00b0 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Connection_Accept_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Connection_Accept_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3094, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->connection_accept_timeout, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Connection_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Connection_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Connection_Accept_Timeout_Cmd ( 0x00b1 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Flow_Control_Mode_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Flow_Control_Mode_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Flow_Control_Mode_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3175, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->flow_control_mode; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Flow_Control_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Flow_Control_Mode_Cmd_t)(void *, tBtampTLVHCI_Write_Flow_Control_Mode_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Flow_Control_Mode_Cmd ( 0x00b2 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Link_Supervision_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Link_Supervision_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3127, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->link_supervision_timeout, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Link_Supervision_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Link_Supervision_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Link_Supervision_Timeout_Cmd ( 0x00b3 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Location_Data_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Location_Data_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Location_Data_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3173, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->loc_domain_aware; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| BTAMP_MEMCPY(pCtx, pBuf, pSrc->loc_domain, 3); |
| *pnConsumed += 3; |
| pBuf += 3; |
| nBuf -= 3; |
| *pBuf = pSrc->loc_options; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Location_Data_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Location_Data_Cmd_t)(void *, tBtampTLVHCI_Write_Location_Data_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Location_Data_Cmd ( 0x00b4 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3170, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->logical_link_accept_timeout, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd_t)(void *, tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd ( 0x00b5 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Loopback_Mode_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Loopback_Mode_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Loopback_Mode_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 6146, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->loopback_mode; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Loopback_Mode_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Loopback_Mode_Cmd_t)(void *, tBtampTLVHCI_Write_Loopback_Mode_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Loopback_Mode_Cmd ( 0x00b6 ) |
| |
| v_U32_t btampPackTlvHCI_Write_Remote_AMP_ASSOC_Cmd(void * pCtx, |
| tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Write_Remote_AMP_ASSOC_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 5131, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| *pBuf = pSrc->phy_link_handle; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| frameshtons(pCtx, pBuf, pSrc->length_so_far, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| frameshtons(pCtx, pBuf, pSrc->amp_assoc_remaining_length, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| BTAMP_MEMCPY(pCtx, pBuf, &( pSrc->amp_assoc_fragment ), pSrc->amp_assoc_remaining_length); |
| *pnConsumed += pSrc->amp_assoc_remaining_length; |
| pBuf += ( pSrc->amp_assoc_remaining_length ); |
| nBuf -= ( pSrc->amp_assoc_remaining_length ); |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Write_Remote_AMP_ASSOC_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Write_Remote_AMP_ASSOC_Cmd_t)(void *, tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Write_Remote_AMP_ASSOC_Cmd ( 0x00b7 ) |
| |
| v_U32_t btampPackTlvHCI_Enhanced_Flush_Cmd(void * pCtx, |
| tBtampTLVHCI_Enhanced_Flush_Cmd *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 2; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Enhanced_Flush_Cmd(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 3167, 0); |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| *pBuf = pSrc->packet_type; |
| *pnConsumed += 1; |
| pBuf += 1; |
| nBuf -= 1; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Enhanced_Flush_Cmd. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Enhanced_Flush_Cmd_t)(void *, tBtampTLVHCI_Enhanced_Flush_Cmd *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Enhanced_Flush_Cmd ( 0x00b8 ) |
| |
| v_U32_t btampPackTlvHCI_Enhanced_Flush_Complete_Event(void * pCtx, |
| tBtampTLVHCI_Enhanced_Flush_Complete_Event *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed) |
| { |
| v_U8_t* pTlvLen = 0; |
| v_U32_t nConsumedOnEntry; |
| v_U32_t status = BTAMP_PARSE_SUCCESS; |
| v_U32_t nNeeded = 0U; |
| v_U32_t sType = 0U; |
| v_U32_t sLen = 0U; |
| sType = 1; |
| sLen = 1; |
| // sanity checking |
| if( pCtx == NULL || pSrc == NULL || |
| pBuf == NULL || pnConsumed == NULL) |
| { |
| VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "bad input" ); |
| return BTAMP_BAD_INPUT_BUFFER; |
| } |
| nConsumedOnEntry = *pnConsumed; |
| |
| status = btampGetPackedTlvHCI_Enhanced_Flush_Complete_Event(pCtx, pSrc, &nNeeded); |
| if ( ! BTAMP_SUCCEEDED( status ) ) return status; |
| nNeeded += sType + sLen; |
| if ( nNeeded > nBuf ) return BTAMP_BUFFER_OVERFLOW; |
| pTlvLen = pBuf; |
| while ( pSrc->present ) |
| { |
| if( sType == 2) frameshtons( pCtx, pBuf, 57, 0); |
| else *pBuf = 57; |
| pBuf += sType; nBuf -= sType; *pnConsumed += sType; |
| pTlvLen = pBuf; |
| pBuf += sLen; nBuf -= sLen; *pnConsumed += sLen; |
| frameshtons(pCtx, pBuf, pSrc->log_link_handle, 0); |
| *pnConsumed += 2; |
| pBuf += 2; |
| nBuf -= 2; |
| break; |
| } |
| |
| if (pTlvLen && sLen == 2) |
| { |
| frameshtons( pCtx, pTlvLen, *pnConsumed - nConsumedOnEntry - sType - sLen, 0); |
| } else if(NULL != pTlvLen) |
| { |
| *pTlvLen = (v_U8_t)(*pnConsumed - nConsumedOnEntry - sType - sLen); |
| } |
| return status; |
| } /* End btampPackTlvHCI_Enhanced_Flush_Complete_Event. */ |
| |
| typedef v_U32_t (*pfnPackTlvHCI_Enhanced_Flush_Complete_Event_t)(void *, tBtampTLVHCI_Enhanced_Flush_Complete_Event *, v_U8_t*, v_U32_t, v_U32_t*); |
| #define SigPackTlvHCI_Enhanced_Flush_Complete_Event ( 0x00b9 ) |
| |
| v_U32_t btampPackAMP_ASSOC(void * pCtx, tBtampAMP_ASSOC *pFrm, v_U8_t *pBuf, v_U32_t nBuf, v_U32_t *pnConsumed) |
| { |
| v_U32_t i; |
| static tTLVDefn TLVS[ ] = { |
| {BTAMP_TLV_AMP_ASSOC_MAC_ADDR, 0, 9, 9, offsetof(tBtampAMP_ASSOC, AMP_Assoc_MAC_Addr), offsetof(tBtampTLVAMP_Assoc_MAC_Addr, present), SigPackTlvAMP_Assoc_MAC_Addr, (pfnGeneric_t)btampPackTlvAMP_Assoc_MAC_Addr, "AMP_Assoc_MAC_Addr", 1, }, |
| {BTAMP_TLV_AMP_ASSOC_PREFERRED_CHANNEL_LIST, 0, 9, 12, offsetof(tBtampAMP_ASSOC, AMP_Assoc_Preferred_Channel_List), offsetof(tBtampTLVAMP_Assoc_Preferred_Channel_List, present), SigPackTlvAMP_Assoc_Preferred_Channel_List, (pfnGeneric_t)btampPackTlvAMP_Assoc_Preferred_Channel_List, "AMP_Assoc_Preferred_Channel_List", 1, }, |
| {BTAMP_TLV_AMP_ASSOC_CONNECTED_CHANNEL, 0, 9, 12, offsetof(tBtampAMP_ASSOC, AMP_Assoc_Connected_Channel), offsetof(tBtampTLVAMP_Assoc_Connected_Channel, present), SigPackTlvAMP_Assoc_Connected_Channel, (pfnGeneric_t)btampPackTlvAMP_Assoc_Connected_Channel, "AMP_Assoc_Connected_Channel", 0, }, |
| {BTAMP_TLV_AMP_ASSOC_PAL_CAPABILITIES, 0, 7, 7, offsetof(tBtampAMP_ASSOC, AMP_Assoc_PAL_Capabilities), offsetof(tBtampTLVAMP_Assoc_PAL_Capabilities, present), SigPackTlvAMP_Assoc_PAL_Capabilities, (pfnGeneric_t)btampPackTlvAMP_Assoc_PAL_Capabilities, "AMP_Assoc_PAL_Capabilities", 0, }, |
| {BTAMP_TLV_AMP_ASSOC_PAL_VERSION, 0, 8, 8, offsetof(tBtampAMP_ASSOC, AMP_Assoc_PAL_Version), offsetof(tBtampTLVAMP_Assoc_PAL_Version, present), SigPackTlvAMP_Assoc_PAL_Version, (pfnGeneric_t)btampPackTlvAMP_Assoc_PAL_Version, "AMP_Assoc_PAL_Version", 1, }, |
| { 0xffff, 0 }, |
| }; |
| |
| v_U32_t idx = 0; |
| v_U32_t status = 0; |
| (void)i; |
| *pnConsumed = 0U; |
| status |= PackTlvCore(pCtx,(v_U8_t*)pFrm,pBuf,nBuf,pnConsumed,TLVS,&idx); |
| |
| # ifdef BTAMP_DUMP_FRAMES |
| if (!BTAMP_FAILED(status)) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Packed the AMP_ASSOC:\n")); |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_MAC_Addr:\n")); |
| if (!pFrm->AMP_Assoc_MAC_Addr.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_MAC_Addr.mac_addr, 6); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_Preferred_Channel_List:\n")); |
| if (!pFrm->AMP_Assoc_Preferred_Channel_List.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_Preferred_Channel_List.country, 3); |
| FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("num_triplets: %d.\n"), pFrm->AMP_Assoc_Preferred_Channel_List.num_triplets); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* ) pFrm->AMP_Assoc_Preferred_Channel_List.triplets, 3 * pFrm->AMP_Assoc_Preferred_Channel_List.num_triplets); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_Connected_Channel:\n")); |
| if (!pFrm->AMP_Assoc_Connected_Channel.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_Connected_Channel.country, 3); |
| FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("num_triplets: %d.\n"), pFrm->AMP_Assoc_Connected_Channel.num_triplets); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* ) pFrm->AMP_Assoc_Connected_Channel.triplets, 3 * pFrm->AMP_Assoc_Connected_Channel.num_triplets); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_PAL_Capabilities:\n")); |
| if (!pFrm->AMP_Assoc_PAL_Capabilities.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Capabilities.pal_capabilities, 4); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("AMP_Assoc_PAL_Version:\n")); |
| if (!pFrm->AMP_Assoc_PAL_Version.present) |
| { |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("Not present.\n")); |
| } |
| else |
| { |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Version.pal_version, 1); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Version.pal_CompanyID, 2); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), ( v_U8_t* )&pFrm->AMP_Assoc_PAL_Version.pal_subversion, 2); |
| } |
| FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), FRFL("to:\n")); |
| FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, BTAMP_AMP_ASSOC), pBuf, nBuf); |
| } |
| # endif // BTAMP_DUMP_FRAMES |
| return status; |
| |
| } /* End btampUnpackAMP_ASSOC. */ |
| |
| |
| static v_U32_t PackTlvCore(void * pCtx, |
| v_U8_t *pSrc, |
| v_U8_t *pBuf, |
| v_U32_t nBuf, |
| v_U32_t *pnConsumed, |
| tTLVDefn TLVs[], |
| v_U32_t *pidx) |
| { |
| tTLVDefn *pTlv; |
| tFRAMES_BOOL *pfFound; |
| v_U8_t *pBufRemaining; |
| v_U32_t nBufRemaining, status, status2, len; |
| |
| BTAMP_PARAMETER_CHECK2(pSrc, pBuf, nBuf, pnConsumed); |
| |
| (void)pCtx; |
| status = BTAMP_PARSE_SUCCESS; |
| status2 = BTAMP_PARSE_SUCCESS; |
| pBufRemaining = pBuf; |
| nBufRemaining = nBuf; |
| |
| pTlv = &( TLVs[0] ); |
| while ( 0xffff != pTlv->id ) |
| { |
| pfFound = (tFRAMES_BOOL*)(pSrc + pTlv->offset + |
| pTlv->presenceOffset); |
| if ( *pfFound && pTlv->minSize > nBufRemaining ) |
| { |
| FRAMES_LOG3(pCtx, FRLOGE, FRFL("The TLV %s takes at least" |
| " %d bytes, but there are only %d left in the buffer." |
| "\n"), pTlv->name, pTlv->minSize, nBufRemaining); |
| return BTAMP_BUFFER_OVERFLOW; |
| } |
| |
| len = 0U; |
| |
| if ( *pfFound ) { |
| switch ( pTlv->sig ) |
| { |
| case SigPackTlvAMP_Assoc_Connected_Channel: |
| status2 = ( (pfnPackTlvAMP_Assoc_Connected_Channel_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_Connected_Channel* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvAMP_Assoc_MAC_Addr: |
| status2 = ( (pfnPackTlvAMP_Assoc_MAC_Addr_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_MAC_Addr* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvAMP_Assoc_PAL_Capabilities: |
| status2 = ( (pfnPackTlvAMP_Assoc_PAL_Capabilities_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_PAL_Capabilities* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvAMP_Assoc_PAL_Version: |
| status2 = ( (pfnPackTlvAMP_Assoc_PAL_Version_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_PAL_Version* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvAMP_Assoc_Preferred_Channel_List: |
| status2 = ( (pfnPackTlvAMP_Assoc_Preferred_Channel_List_t)(pTlv->pfn) )(pCtx, ( tBtampTLVAMP_Assoc_Preferred_Channel_List* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvFlow_Spec: |
| status2 = ( (pfnPackTlvFlow_Spec_t)(pTlv->pfn) )(pCtx, ( tBtampTLVFlow_Spec* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Accept_Logical_Link_Cmd: |
| status2 = ( (pfnPackTlvHCI_Accept_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Accept_Logical_Link_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Accept_Physical_Link_Cmd: |
| status2 = ( (pfnPackTlvHCI_Accept_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Accept_Physical_Link_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Channel_Selected_Event: |
| status2 = ( (pfnPackTlvHCI_Channel_Selected_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Channel_Selected_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Command_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Command_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Command_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Command_Status_Event: |
| status2 = ( (pfnPackTlvHCI_Command_Status_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Command_Status_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Create_Logical_Link_Cmd: |
| status2 = ( (pfnPackTlvHCI_Create_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Create_Logical_Link_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Create_Physical_Link_Cmd: |
| status2 = ( (pfnPackTlvHCI_Create_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Create_Physical_Link_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Data_Buffer_Overflow_Event: |
| status2 = ( (pfnPackTlvHCI_Data_Buffer_Overflow_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Data_Buffer_Overflow_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Disconnect_Logical_Link_Cmd: |
| status2 = ( (pfnPackTlvHCI_Disconnect_Logical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Logical_Link_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Disconnect_Logical_Link_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Disconnect_Logical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Logical_Link_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Disconnect_Physical_Link_Cmd: |
| status2 = ( (pfnPackTlvHCI_Disconnect_Physical_Link_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Physical_Link_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Disconnect_Physical_Link_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Disconnect_Physical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Disconnect_Physical_Link_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Flow_Spec_Modify_Cmd: |
| status2 = ( (pfnPackTlvHCI_Flow_Spec_Modify_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flow_Spec_Modify_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Flow_Spec_Modify_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Flow_Spec_Modify_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flow_Spec_Modify_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Flush_Cmd: |
| status2 = ( (pfnPackTlvHCI_Flush_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flush_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Flush_Occurred_Event: |
| status2 = ( (pfnPackTlvHCI_Flush_Occurred_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Flush_Occurred_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Generic_AMP_Link_Key_Notification_Event: |
| status2 = ( (pfnPackTlvHCI_Generic_AMP_Link_Key_Notification_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Generic_AMP_Link_Key_Notification_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Hardware_Error_Event: |
| status2 = ( (pfnPackTlvHCI_Hardware_Error_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Hardware_Error_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Logical_Link_Cancel_Cmd: |
| status2 = ( (pfnPackTlvHCI_Logical_Link_Cancel_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Logical_Link_Cancel_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Logical_Link_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Logical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Logical_Link_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Loopback_Command_Event: |
| status2 = ( (pfnPackTlvHCI_Loopback_Command_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Loopback_Command_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Physical_Link_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Physical_Link_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Physical_Link_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Physical_Link_Loss_Warning_Event: |
| status2 = ( (pfnPackTlvHCI_Physical_Link_Loss_Warning_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Physical_Link_Loss_Warning_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Physical_Link_Recovery_Event: |
| status2 = ( (pfnPackTlvHCI_Physical_Link_Recovery_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Physical_Link_Recovery_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Qos_Violation_Event: |
| status2 = ( (pfnPackTlvHCI_Qos_Violation_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Qos_Violation_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Best_Effort_Flush_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Best_Effort_Flush_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Buffer_Size_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Buffer_Size_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Buffer_Size_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Connection_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Connection_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Connection_Accept_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Data_Block_Size_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Data_Block_Size_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Data_Block_Size_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Failed_Contact_Counter_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Failed_Contact_Counter_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Failed_Contact_Counter_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Flow_Control_Mode_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Flow_Control_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Flow_Control_Mode_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Link_Quality_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Link_Quality_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Link_Quality_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Link_Supervision_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Link_Supervision_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Link_Supervision_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Local_AMP_Assoc_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Local_AMP_Assoc_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_AMP_Assoc_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Local_AMP_Information_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Local_AMP_Information_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_AMP_Information_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Local_Supported_Cmds_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Local_Supported_Cmds_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_Supported_Cmds_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Local_Version_Info_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Local_Version_Info_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Local_Version_Info_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Location_Data_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Location_Data_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Location_Data_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Logical_Link_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Logical_Link_Accept_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_Loopback_Mode_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_Loopback_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_Loopback_Mode_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Read_RSSI_Cmd: |
| status2 = ( (pfnPackTlvHCI_Read_RSSI_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Read_RSSI_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Reset_Cmd: |
| status2 = ( (pfnPackTlvHCI_Reset_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Reset_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Reset_Failed_Contact_Counter_Cmd: |
| status2 = ( (pfnPackTlvHCI_Reset_Failed_Contact_Counter_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Reset_Failed_Contact_Counter_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Set_Event_Mask_Cmd: |
| status2 = ( (pfnPackTlvHCI_Set_Event_Mask_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Set_Event_Mask_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Set_Event_Mask_Page_2_Cmd: |
| status2 = ( (pfnPackTlvHCI_Set_Event_Mask_Page_2_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Set_Event_Mask_Page_2_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Set_Short_Range_Mode_Cmd: |
| status2 = ( (pfnPackTlvHCI_Set_Short_Range_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Set_Short_Range_Mode_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Short_Range_Mode_Change_Complete_Event: |
| status2 = ( (pfnPackTlvHCI_Short_Range_Mode_Change_Complete_Event_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Short_Range_Mode_Change_Complete_Event* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Best_Effort_Flush_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Best_Effort_Flush_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Connection_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Connection_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Connection_Accept_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Flow_Control_Mode_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Flow_Control_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Flow_Control_Mode_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Link_Supervision_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Link_Supervision_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Link_Supervision_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Location_Data_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Location_Data_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Location_Data_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Logical_Link_Accept_Timeout_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Logical_Link_Accept_Timeout_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Loopback_Mode_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Loopback_Mode_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Loopback_Mode_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| case SigPackTlvHCI_Write_Remote_AMP_ASSOC_Cmd: |
| status2 = ( (pfnPackTlvHCI_Write_Remote_AMP_ASSOC_Cmd_t)(pTlv->pfn) )(pCtx, ( tBtampTLVHCI_Write_Remote_AMP_ASSOC_Cmd* )(pSrc + pTlv->offset), pBufRemaining, nBufRemaining, &len); |
| if (status2) status |= status2; |
| break; |
| default: |
| FRAMES_LOG1(pCtx, FRLOGE, FRFL("INTERNAL ERROR-- I don't " |
| "know about the TLV %d; this is most likely a bug in " |
| "'framesc'.\n"), pTlv->sig); |
| return BTAMP_INTERNAL_ERROR; |
| } |
| |
| } /* End if on *pfFound */ |
| pBufRemaining += len; |
| nBufRemaining -= len; |
| *pnConsumed += len; |
| ++pTlv; |
| if(len) ++*pidx; |
| } |
| |
| return status; |
| |
| } |
| |