/******************************************************************************
*
* Copyright (C) 1999-2012 Broadcom Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
#ifndef GKI_H
#define GKI_H
#ifdef BUILDCFG
#if (!defined(NFC_HAL_TARGET) || (NFC_HAL_TARGET == FALSE))
#include "buildcfg.h"
#else
/* Build config when building HAL */
#include "buildcfg_hal.h"
#endif
#endif
/* Include platform-specific over-rides */
#if (defined(NFC_STANDALONE) && (NFC_STANDALONE == TRUE))
#include "gki_target.h"
#include "bt_types.h"
#elif (defined(NFC_HAL_TARGET) && (NFC_HAL_TARGET == TRUE))
/* If building NFC HAL, then use hal target file */
#include "gki_hal_target.h"
#include "nfc_types.h"
#else
/* For non-nfc_standalone, include Bluetooth definitions */
#include "bt_target.h"
#include "bt_types.h"
#endif
/* Uncomment this line for verbose GKI debugging and buffer tracking */
/*#define GKI_BUFFER_DEBUG TRUE*/
/* Error codes */
#define GKI_SUCCESS 0x00
#define GKI_FAILURE 0x01
#define GKI_INVALID_TASK 0xF0
#define GKI_INVALID_POOL 0xFF
/************************************************************************
** Mailbox definitions. Each task has 4 mailboxes that are used to
** send buffers to the task.
*/
#define TASK_MBOX_0 0
#define TASK_MBOX_1 1
#define TASK_MBOX_2 2
#define TASK_MBOX_3 3
#define NUM_TASK_MBOX 4
/************************************************************************
** Event definitions.
**
** There are 4 reserved events used to signal messages rcvd in task mailboxes.
** There are 4 reserved events used to signal timeout events.
** There are 8 general purpose events available for applications.
*/
#define MAX_EVENTS 16
#define TASK_MBOX_0_EVT_MASK 0x0001
#define TASK_MBOX_1_EVT_MASK 0x0002
#define TASK_MBOX_2_EVT_MASK 0x0004
#define TASK_MBOX_3_EVT_MASK 0x0008
#define TIMER_0 0
#define TIMER_1 1
#define TIMER_2 2
#define TIMER_3 3
#define TIMER_0_EVT_MASK 0x0010
#define TIMER_1_EVT_MASK 0x0020
#define TIMER_2_EVT_MASK 0x0040
#define TIMER_3_EVT_MASK 0x0080
#define APPL_EVT_0 8
#define APPL_EVT_1 9
#define APPL_EVT_2 10
#define APPL_EVT_3 11
#define APPL_EVT_4 12
#define APPL_EVT_5 13
#define APPL_EVT_6 14
#define APPL_EVT_7 15
#define EVENT_MASK(evt) ((UINT16)(0x0001 << (evt)))
/************************************************************************
** Max Time Queue
**/
#ifndef GKI_MAX_TIMER_QUEUES
#define GKI_MAX_TIMER_QUEUES 3
#endif
/************************************************************************
** Macro to determine the pool buffer size based on the GKI POOL ID at compile time.
** Pool IDs index from 0 to GKI_NUM_FIXED_BUF_POOLS - 1
*/
#if (GKI_NUM_FIXED_BUF_POOLS < 1)
#ifndef GKI_POOL_ID_0
#define GKI_POOL_ID_0 0
#endif /* ifndef GKI_POOL_ID_0 */
#ifndef GKI_BUF0_SIZE
#define GKI_BUF0_SIZE 0
#endif /* ifndef GKI_BUF0_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 1 */
#if (GKI_NUM_FIXED_BUF_POOLS < 2)
#ifndef GKI_POOL_ID_1
#define GKI_POOL_ID_1 0
#endif /* ifndef GKI_POOL_ID_1 */
#ifndef GKI_BUF1_SIZE
#define GKI_BUF1_SIZE 0
#endif /* ifndef GKI_BUF1_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 2 */
#if (GKI_NUM_FIXED_BUF_POOLS < 3)
#ifndef GKI_POOL_ID_2
#define GKI_POOL_ID_2 0
#endif /* ifndef GKI_POOL_ID_2 */
#ifndef GKI_BUF2_SIZE
#define GKI_BUF2_SIZE 0
#endif /* ifndef GKI_BUF2_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 3 */
#if (GKI_NUM_FIXED_BUF_POOLS < 4)
#ifndef GKI_POOL_ID_3
#define GKI_POOL_ID_3 0
#endif /* ifndef GKI_POOL_ID_4 */
#ifndef GKI_BUF3_SIZE
#define GKI_BUF3_SIZE 0
#endif /* ifndef GKI_BUF3_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 4 */
#if (GKI_NUM_FIXED_BUF_POOLS < 5)
#ifndef GKI_POOL_ID_4
#define GKI_POOL_ID_4 0
#endif /* ifndef GKI_POOL_ID_4 */
#ifndef GKI_BUF4_SIZE
#define GKI_BUF4_SIZE 0
#endif /* ifndef GKI_BUF4_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 5 */
#if (GKI_NUM_FIXED_BUF_POOLS < 6)
#ifndef GKI_POOL_ID_5
#define GKI_POOL_ID_5 0
#endif /* ifndef GKI_POOL_ID_5 */
#ifndef GKI_BUF5_SIZE
#define GKI_BUF5_SIZE 0
#endif /* ifndef GKI_BUF5_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 6 */
#if (GKI_NUM_FIXED_BUF_POOLS < 7)
#ifndef GKI_POOL_ID_6
#define GKI_POOL_ID_6 0
#endif /* ifndef GKI_POOL_ID_6 */
#ifndef GKI_BUF6_SIZE
#define GKI_BUF6_SIZE 0
#endif /* ifndef GKI_BUF6_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 7 */
#if (GKI_NUM_FIXED_BUF_POOLS < 8)
#ifndef GKI_POOL_ID_7
#define GKI_POOL_ID_7 0
#endif /* ifndef GKI_POOL_ID_7 */
#ifndef GKI_BUF7_SIZE
#define GKI_BUF7_SIZE 0
#endif /* ifndef GKI_BUF7_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 8 */
#if (GKI_NUM_FIXED_BUF_POOLS < 9)
#ifndef GKI_POOL_ID_8
#define GKI_POOL_ID_8 0
#endif /* ifndef GKI_POOL_ID_8 */
#ifndef GKI_BUF8_SIZE
#define GKI_BUF8_SIZE 0
#endif /* ifndef GKI_BUF8_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 9 */
#if (GKI_NUM_FIXED_BUF_POOLS < 10)
#ifndef GKI_POOL_ID_9
#define GKI_POOL_ID_9 0
#endif /* ifndef GKI_POOL_ID_9 */
#ifndef GKI_BUF9_SIZE
#define GKI_BUF9_SIZE 0
#endif /* ifndef GKI_BUF9_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 10 */
#if (GKI_NUM_FIXED_BUF_POOLS < 11)
#ifndef GKI_POOL_ID_10
#define GKI_POOL_ID_10 0
#endif /* ifndef GKI_POOL_ID_10 */
#ifndef GKI_BUF10_SIZE
#define GKI_BUF10_SIZE 0
#endif /* ifndef GKI_BUF10_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 11 */
#if (GKI_NUM_FIXED_BUF_POOLS < 12)
#ifndef GKI_POOL_ID_11
#define GKI_POOL_ID_11 0
#endif /* ifndef GKI_POOL_ID_11 */
#ifndef GKI_BUF11_SIZE
#define GKI_BUF11_SIZE 0
#endif /* ifndef GKI_BUF11_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 12 */
#if (GKI_NUM_FIXED_BUF_POOLS < 13)
#ifndef GKI_POOL_ID_12
#define GKI_POOL_ID_12 0
#endif /* ifndef GKI_POOL_ID_12 */
#ifndef GKI_BUF12_SIZE
#define GKI_BUF12_SIZE 0
#endif /* ifndef GKI_BUF12_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 13 */
#if (GKI_NUM_FIXED_BUF_POOLS < 14)
#ifndef GKI_POOL_ID_13
#define GKI_POOL_ID_13 0
#endif /* ifndef GKI_POOL_ID_13 */
#ifndef GKI_BUF13_SIZE
#define GKI_BUF13_SIZE 0
#endif /* ifndef GKI_BUF13_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 14 */
#if (GKI_NUM_FIXED_BUF_POOLS < 15)
#ifndef GKI_POOL_ID_14
#define GKI_POOL_ID_14 0
#endif /* ifndef GKI_POOL_ID_14 */
#ifndef GKI_BUF14_SIZE
#define GKI_BUF14_SIZE 0
#endif /* ifndef GKI_BUF14_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 15 */
#if (GKI_NUM_FIXED_BUF_POOLS < 16)
#ifndef GKI_POOL_ID_15
#define GKI_POOL_ID_15 0
#endif /* ifndef GKI_POOL_ID_15 */
#ifndef GKI_BUF15_SIZE
#define GKI_BUF15_SIZE 0
#endif /* ifndef GKI_BUF15_SIZE */
#endif /* GKI_NUM_FIXED_BUF_POOLS < 16 */
/* Timer list entry callback type
*/
typedef void (TIMER_CBACK)(void *p_tle);
#ifndef TIMER_PARAM_TYPE
#ifdef WIN2000
#define TIMER_PARAM_TYPE v