1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Copyright (C) 1999-2012 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_H
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_H
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef BUILDCFG
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "buildcfg.h"
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Include platform-specific over-rides */
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (defined(NFC_STANDALONE) && (NFC_STANDALONE == TRUE))
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    #include "gki_target.h"
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* For non-nfc_standalone, include Bluetooth definitions */
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    #include "bt_target.h"
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "bt_types.h"
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Uncomment this line for verbose GKI debugging and buffer tracking */
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*#define GKI_BUFFER_DEBUG   TRUE*/
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Error codes */
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_SUCCESS         0x00
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_FAILURE         0x01
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_INVALID_TASK    0xF0
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_INVALID_POOL    0xFF
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Mailbox definitions. Each task has 4 mailboxes that are used to
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** send buffers to the task.
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_0    0
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_1    1
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_2    2
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_3    3
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NUM_TASK_MBOX  4
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Event definitions.
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 4 reserved events used to signal messages rcvd in task mailboxes.
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 4 reserved events used to signal timeout events.
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** There are 8 general purpose events available for applications.
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_EVENTS              16
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_0_EVT_MASK   0x0001
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_1_EVT_MASK   0x0002
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_2_EVT_MASK   0x0004
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TASK_MBOX_3_EVT_MASK   0x0008
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_0             0
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_1             1
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_2             2
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_3             3
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_0_EVT_MASK    0x0010
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_1_EVT_MASK    0x0020
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_2_EVT_MASK    0x0040
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_3_EVT_MASK    0x0080
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_0          8
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_1          9
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_2          10
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_3          11
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_4          12
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_5          13
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_6          14
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define APPL_EVT_7          15
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define EVENT_MASK(evt)       ((UINT16)(0x0001 << (evt)))
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Max Time Queue
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_TIMER_QUEUES
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_MAX_TIMER_QUEUES    3
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Utility macros for timer conversion
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef TICKS_PER_SEC
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_MS_TO_TICKS(x)   ((x) / (1000/TICKS_PER_SEC))
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_SECS_TO_TICKS(x) ((x) * (TICKS_PER_SEC))
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TICKS_TO_MS(x)   ((x) * (1000/TICKS_PER_SEC))
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TICKS_TO_SECS(x) ((x) * (1/TICKS_PER_SEC))
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Macro to determine the pool buffer size based on the GKI POOL ID at compile time.
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Pool IDs index from 0 to GKI_NUM_FIXED_BUF_POOLS - 1
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 1)
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_0
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_0                0
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_0 */
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF0_SIZE
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF0_SIZE                0
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF0_SIZE */
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 1 */
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 2)
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_1
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_1                0
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_1 */
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF1_SIZE
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF1_SIZE                0
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF1_SIZE */
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 2 */
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 3)
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_2
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_2                0
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_2 */
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF2_SIZE
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF2_SIZE                0
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF2_SIZE */
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 3 */
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 4)
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_3
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_3                0
161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_4 */
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF3_SIZE
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF3_SIZE                0
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF3_SIZE */
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 4 */
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 5)
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_4
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_4                0
174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_4 */
175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF4_SIZE
177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF4_SIZE                0
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF4_SIZE */
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 5 */
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 6)
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_5
186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_5                0
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_5 */
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF5_SIZE
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF5_SIZE                0
191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF5_SIZE */
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 6 */
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 7)
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_6
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_6                0
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_6 */
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF6_SIZE
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF6_SIZE                0
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF6_SIZE */
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 7 */
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 8)
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_7
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_7                0
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_7 */
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF7_SIZE
216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF7_SIZE                0
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF7_SIZE */
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 8 */
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 9)
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_8
225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_8                0
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_8 */
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF8_SIZE
229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF8_SIZE                0
230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF8_SIZE */
231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 9 */
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 10)
236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_9
238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_9                0
239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_9 */
240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF9_SIZE
242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF9_SIZE                0
243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF9_SIZE */
244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 10 */
246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 11)
249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_10
251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_10                0
252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_10 */
253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF10_SIZE
255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF10_SIZE                0
256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF10_SIZE */
257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 11 */
259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 12)
262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_11
264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_11                0
265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_11 */
266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF11_SIZE
268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF11_SIZE                0
269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF11_SIZE */
270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 12 */
272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 13)
275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_12
277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_12                0
278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_12 */
279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF12_SIZE
281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF12_SIZE                0
282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF12_SIZE */
283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 13 */
285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 14)
288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_13
290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_13                0
291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_13 */
292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF13_SIZE
294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF13_SIZE                0
295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF13_SIZE */
296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 14 */
298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 15)
301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_14
303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_14                0
304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_14 */
305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF14_SIZE
307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF14_SIZE                0
308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF14_SIZE */
309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 15 */
311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_NUM_FIXED_BUF_POOLS < 16)
314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_15
316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_POOL_ID_15                0
317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_POOL_ID_15 */
318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF15_SIZE
320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_BUF15_SIZE                0
321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ifndef GKI_BUF15_SIZE */
322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* GKI_NUM_FIXED_BUF_POOLS < 16 */
324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Timer list entry callback type
327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (TIMER_CBACK)(void *p_tle);
329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef TIMER_PARAM_TYPE
330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef  WIN2000
331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_PARAM_TYPE    void *
332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TIMER_PARAM_TYPE    UINT32
334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a timer list entry
337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct _tle
339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    struct _tle  *p_next;
341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    struct _tle  *p_prev;
342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    TIMER_CBACK  *p_cback;
343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    INT32         ticks;
344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    TIMER_PARAM_TYPE   param;
345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16        event;
346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8         in_use;
347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} TIMER_LIST_ENT;
348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a timer list queue
350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    TIMER_LIST_ENT   *p_first;
354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    TIMER_LIST_ENT   *p_last;
355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    INT32             last_ticks;
356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} TIMER_LIST_Q;
357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***********************************************************************
360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This queue is a general purpose buffer queue, for application use.
361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    void    *p_first;
365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    void    *p_last;
366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16   count;
367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} BUFFER_Q;
368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_IS_QUEUE_EMPTY(p_q) ((p_q)->count == 0)
370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Task constants
372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef TASKPTR
374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (*TASKPTR)(UINT32);
375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_PUBLIC_POOL         0       /* General pool accessible to GKI_getbuf() */
379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_RESTRICTED_POOL     1       /* Inaccessible pool to GKI_getbuf() */
380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***********************************************************************
382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function prototypes
383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" {
387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Task management
390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_create_task (TASKPTR, UINT8, INT8 *, UINT16 *, UINT16, void*, void*);
392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_exit_task(UINT8);
393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_get_taskid(void);
394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_init(void);
395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern INT8   *GKI_map_taskname(UINT8);
396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_resume_task(UINT8);
397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_run(void *);
398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_stop(void);
399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_suspend_task(UINT8);
400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_is_task_running(UINT8);
401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* memory management
403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_shiftdown (UINT8 *p_mem, UINT32 len, UINT32 shift_amount);
405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void GKI_shiftup (UINT8 *p_dest, UINT8 *p_src, UINT32 len);
406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To send buffers and events between tasks
408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_isend_event (UINT8, UINT16);
410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_isend_msg (UINT8, UINT8, void *);
411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_read_mbox  (UINT8);
412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_send_msg   (UINT8, UINT8, void *);
413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_send_event (UINT8, UINT16);
414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To get and release buffers, change owner and get size
417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_change_buf_owner (void *, UINT8);
419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_create_pool (UINT16, UINT16, UINT8, void *);
420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_delete_pool (UINT8);
421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_find_buf_start (void *);
422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_freebuf (void *);
423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_BUFFER_DEBUG
424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_getbuf(size)    GKI_getbuf_debug(size, __FUNCTION__, __LINE__)
425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getbuf_debug (UINT16, const char *, int);
426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getbuf (UINT16);
428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_get_buf_size (void *);
430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_BUFFER_DEBUG
431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_getpoolbuf(id)    GKI_getpoolbuf_debug(id, __FUNCTION__, __LINE__)
432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getpoolbuf_debug (UINT8, const char *, int);
433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getpoolbuf (UINT8);
435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_poolcount (UINT8);
438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_poolfreecount (UINT8);
439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_poolutilization (UINT8);
440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_register_mempool (void *p_mem);
441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT8   GKI_set_pool_permission(UINT8, UINT8);
442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* User buffer queue management
445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_dequeue  (BUFFER_Q *);
447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_enqueue (BUFFER_Q *, void *);
448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_enqueue_head (BUFFER_Q *, void *);
449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getfirst (BUFFER_Q *);
450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getlast (BUFFER_Q *);
451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_getnext (void *);
452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_init_q (BUFFER_Q *);
453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern BOOLEAN GKI_queue_is_empty(BUFFER_Q *);
454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void   *GKI_remove_from_queue (BUFFER_Q *, void *);
455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_get_pool_bufsize (UINT8);
456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Timer management
458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_add_to_timer_list (TIMER_LIST_Q *, TIMER_LIST_ENT  *);
460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_delay(UINT32);
461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT32  GKI_get_tick_count(void);
462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern INT8   *GKI_get_time_stamp(INT8 *);
463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_init_timer_list (TIMER_LIST_Q *);
464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_init_timer_list_entry (TIMER_LIST_ENT  *);
465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern INT32   GKI_ready_to_sleep (void);
466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_remove_from_timer_list (TIMER_LIST_Q *, TIMER_LIST_ENT  *);
467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_start_timer(UINT8, INT32, BOOLEAN);
468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_stop_timer (UINT8);
469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_timer_update(INT32);
470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_update_timer_list (TIMER_LIST_Q *, INT32);
471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT32  GKI_get_remaining_ticks (TIMER_LIST_Q *, TIMER_LIST_ENT  *);
472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT16  GKI_wait(UINT16, UINT32);
473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Start and Stop system time tick callback
475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * true for start system tick if time queue is not empty
476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * false to stop system tick if time queue is empty
477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (SYSTEM_TICK_CBACK)(BOOLEAN);
479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Time queue management for system ticks
481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern BOOLEAN GKI_timer_queue_empty (void);
483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_timer_queue_register_callback(SYSTEM_TICK_CBACK *);
484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Disable Interrupts, Enable Interrupts
486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_enable(void);
488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_disable(void);
489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_sched_lock(void);
490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_sched_unlock(void);
491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Allocate (Free) memory from an OS
493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void     *GKI_os_malloc (UINT32);
495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void      GKI_os_free (void *);
496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* os timer operation */
498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern UINT32 GKI_get_os_tick_count(void);
499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Exception handling
501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_exception (UINT16, char *);
503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_DEBUG == TRUE
505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_PrintBufferUsage(UINT8 *p_num_pools, UINT16 *p_cur_used);
506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_PrintBuffer(void);
507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern void    GKI_print_task(void);
508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else
509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#undef GKI_PrintBufferUsage
510e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_PrintBuffer() NULL
511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
520