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