Android Hardware Abstraction Layer
gki_target.h
Go to the documentation of this file.
1 /******************************************************************************
2  *
3  * Copyright (C) 1999-2012 Broadcom Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  ******************************************************************************/
18 #ifndef GKI_TARGET_H
19 #define GKI_TARGET_H
20 
21 #ifdef BUILDCFG
22 #include "buildcfg.h"
23 #endif
24 
25 #include "data_types.h"
26 
27 /* Operating System Selection */
28 #ifndef BTE_SIM_APP
29 #define _GKI_ARM
30 #define _GKI_STANDALONE
31 #else
32 #define _BT_WIN32
33 #endif
34 
35 /* define prefix for exporting APIs from libraries */
36 #define EXPORT_API
37 
38 #ifndef BTE_BSE_WRAPPER
39 #ifdef BTE_SIM_APP
40 #undef EXPORT_API
41 #define EXPORT_API __declspec(dllexport)
42 #endif
43 #endif
44 
45 #define GKI_API EXPORT_API
46 #define UDRV_API EXPORT_API
47 
48 
49 /******************************************************************************
50 **
51 ** Task configuration
52 **
53 ******************************************************************************/
54 
55 /* Definitions of task IDs for inter-task messaging */
56 #ifndef MMI_TASK
57 #define MMI_TASK 0
58 #endif
59 
60 #ifndef HCISU_TASK
61 #define HCISU_TASK 1
62 #endif
63 
64 #ifndef NCIT_TASK
65 #define NCIT_TASK 2
66 #endif
67 
68 #ifndef NFC_TASK
69 #define NFC_TASK 3
70 #endif
71 
72 #ifndef BTU_TASK
73 #define BTU_TASK 4
74 #endif
75 
76 /* BTE Application, Sample Apps, or Serial port Demo based on JP3 and JP4 setting) */
77 #ifndef BTE_APPL_TASK
78 #define BTE_APPL_TASK 5
79 #endif
80 
81 #ifndef DEV_MGR_TASK
82 #define DEV_MGR_TASK 6
83 #endif
84 
85 #ifndef ISE_SCR_TASK
86 #define ISE_SCR_TASK 7
87 #endif
88 
89 #ifndef UCODEC_TASK
90 #define UCODEC_TASK 8
91 #endif
92 
93 #ifndef RPCT_TASK
94 #define RPCT_TASK 9
95 #endif
96 
97 #ifndef UNV_TASK
98 #define UNV_TASK 10
99 #endif
100 
101 #ifndef BTE_IDLE_TASK
102 #define BTE_IDLE_TASK 11
103 #endif
104 
105 #ifndef UIPC_TASK
106 #define UIPC_TASK 12
107 #endif
108 
109 #ifndef HCISU_AMP_TASK
110 #define HCISU_AMP_TASK 13
111 #endif
112 
113 
114 /* The number of GKI tasks in the software system. */
115 #ifndef GKI_MAX_TASKS
116 #define GKI_MAX_TASKS 14
117 #endif
118 
119 /******************************************************************************
120 **
121 ** Timer configuration
122 **
123 ******************************************************************************/
124 
125 /* The number of GKI timers in the software system. */
126 #ifndef GKI_NUM_TIMERS
127 #define GKI_NUM_TIMERS 3
128 #endif
129 
130 /* A conversion value for translating ticks to calculate GKI timer. */
131 #ifndef TICKS_PER_SEC
132 #define TICKS_PER_SEC 100
133 #endif
134 
135 /* delay in ticks before stopping system tick. */
136 #ifndef GKI_DELAY_STOP_SYS_TICK
137 #define GKI_DELAY_STOP_SYS_TICK 10
138 #endif
139 
140 /******************************************************************************
141 **
142 ** Buffer configuration
143 **
144 ******************************************************************************/
145 
146 /* TRUE if GKI uses dynamic buffers. */
147 #ifndef GKI_USE_DYNAMIC_BUFFERS
148 #define GKI_USE_DYNAMIC_BUFFERS FALSE
149 #endif
150 
151 /* The size of the buffers in pool 0. */
152 #ifndef GKI_BUF0_SIZE
153 #define GKI_BUF0_SIZE 64
154 #endif
155 
156 /* The number of buffers in buffer pool 0. */
157 #ifndef GKI_BUF0_MAX
158 #define GKI_BUF0_MAX 48
159 #endif
160 
161 /* The ID of buffer pool 0. */
162 #ifndef GKI_POOL_ID_0
163 #define GKI_POOL_ID_0 0
164 #endif
165 
166 /* The size of the buffers in pool 1. */
167 #ifndef GKI_BUF1_SIZE
168 #define GKI_BUF1_SIZE 128
169 #endif
170 
171 /* The number of buffers in buffer pool 1. */
172 #ifndef GKI_BUF1_MAX
173 #define GKI_BUF1_MAX 26
174 #endif
175 
176 /* The ID of buffer pool 1. */
177 #ifndef GKI_POOL_ID_1
178 #define GKI_POOL_ID_1 1
179 #endif
180 
181 /* The size of the buffers in pool 2. */
182 #ifndef GKI_BUF2_SIZE
183 #define GKI_BUF2_SIZE 660
184 #endif
185 
186 /* The number of buffers in buffer pool 2. */
187 #ifndef GKI_BUF2_MAX
188 #define GKI_BUF2_MAX 45
189 #endif
190 
191 /* The ID of buffer pool 2. */
192 #ifndef GKI_POOL_ID_2
193 #define GKI_POOL_ID_2 2
194 #endif
195 
196 /* The size of the buffers in pool 3. */
197 #ifndef GKI_BUF3_SIZE
198 #define GKI_BUF3_SIZE 2500
199 #endif
200 
201 /* The number of buffers in buffer pool 3. */
202 #ifndef GKI_BUF3_MAX
203 #define GKI_BUF3_MAX 30
204 #endif
205 
206 /* The ID of buffer pool 3. */
207 #ifndef GKI_POOL_ID_3
208 #define GKI_POOL_ID_3 3
209 #endif
210 
211 /* The size of the largest PUBLIC fixed buffer in system. */
212 #ifndef GKI_MAX_BUF_SIZE
213 #define GKI_MAX_BUF_SIZE GKI_BUF3_SIZE
214 #endif
215 
216 /* The pool ID of the largest PUBLIC fixed buffer in system. */
217 #ifndef GKI_MAX_BUF_SIZE_POOL_ID
218 #define GKI_MAX_BUF_SIZE_POOL_ID GKI_POOL_ID_3
219 #endif
220 
221 /* RESERVED buffer pool for OBX */
222 /* Ideally there should be 1 buffer for each instance for RX data, and some number
223 of TX buffers based on active instances. OBX will only use these if packet size
224 requires it. In most cases the large packets are used in only one direction so
225 the other direction will use smaller buffers.
226 Devices with small amount of RAM should limit the number of active obex objects.
227 */
228 /* The size of the buffers in pool 4. */
229 #ifndef GKI_BUF4_SIZE
230 #define GKI_BUF4_SIZE 0x2000
231 #endif
232 
233 /* The number of buffers in buffer pool 4. */
234 #ifndef GKI_BUF4_MAX
235 #define GKI_BUF4_MAX (OBX_NUM_SERVERS + OBX_NUM_CLIENTS)
236 #endif
237 
238 /* The ID of buffer pool 4. */
239 #ifndef GKI_POOL_ID_4
240 #define GKI_POOL_ID_4 4
241 #endif
242 
243 /* The number of fixed GKI buffer pools.
244 If L2CAP_FCR_INCLUDED is FALSE, Pool ID 5 is unnecessary
245 If BTM_SCO_HCI_INCLUDED is FALSE, Pool ID 6 is unnecessary, otherwise set to 7
246 If BTA_HL_INCLUDED is FALSE then Pool ID 7 is uncessary and set the following to 7, otherwise set to 8
247 If GATT_SERVER_ENABLED is FALSE then Pool ID 8 is uncessary and set the following to 8, otherwise set to 9
248 */
249 #ifndef GKI_NUM_FIXED_BUF_POOLS
250 #define GKI_NUM_FIXED_BUF_POOLS 9
251 #endif
252 
253 /* The buffer pool usage mask. */
254 #ifndef GKI_DEF_BUFPOOL_PERM_MASK
255 #define GKI_DEF_BUFPOOL_PERM_MASK 0xfff0
256 #endif
257 
258 /* The number of fixed and dynamic buffer pools.
259 If L2CAP_FCR_INCLUDED is FALSE, Pool ID 4 is unnecessary */
260 #ifndef GKI_NUM_TOTAL_BUF_POOLS
261 #define GKI_NUM_TOTAL_BUF_POOLS 10
262 #endif
263 
264 /* The following is intended to be a reserved pool for L2CAP
265 Flow control and retransmissions and intentionally kept out
266 of order */
267 
268 /* The number of buffers in buffer pool 5. */
269 #ifndef GKI_BUF5_MAX
270 #define GKI_BUF5_MAX 64
271 #endif
272 
273 /* The ID of buffer pool 5. */
274 #ifndef GKI_POOL_ID_5
275 #define GKI_POOL_ID_5 5
276 #endif
277 
278 /* The size of the buffers in pool 5
279 ** Special pool used by l2cap retransmissions only. This size based on segment
280 ** that will fit into both DH5 and 2-DH3 packet types after accounting for GKI
281 ** header. 13 bytes of max headers allows us a 339 payload max. (in btui_app.txt)
282 ** Note: 748 used for insight scriptwrapper with CAT-2 scripts.
283 */
284 #ifndef GKI_BUF5_SIZE
285 #define GKI_BUF5_SIZE 748
286 #endif
287 
288 /* The buffer corruption check flag. */
289 #ifndef GKI_ENABLE_BUF_CORRUPTION_CHECK
290 #define GKI_ENABLE_BUF_CORRUPTION_CHECK TRUE
291 #endif
292 
293 /* The GKI severe error macro. */
294 #ifndef GKI_SEVERE
295 #define GKI_SEVERE(code)
296 #endif
297 
298 /* TRUE if GKI includes debug functionality. */
299 #ifndef GKI_DEBUG
300 #define GKI_DEBUG FALSE
301 #endif
302 
303 /* Maximum number of exceptions logged. */
304 #ifndef GKI_MAX_EXCEPTION
305 #define GKI_MAX_EXCEPTION 8
306 #endif
307 
308 /* Maximum number of chars stored for each exception message. */
309 #ifndef GKI_MAX_EXCEPTION_MSGLEN
310 #define GKI_MAX_EXCEPTION_MSGLEN 64
311 #endif
312 
313 #ifndef GKI_SEND_MSG_FROM_ISR
314 #define GKI_SEND_MSG_FROM_ISR FALSE
315 #endif
316 
317 
318 /* The following is intended to be a reserved pool for SCO
319 over HCI data and intentionally kept out of order */
320 
321 /* The ID of buffer pool 6. */
322 #ifndef GKI_POOL_ID_6
323 #define GKI_POOL_ID_6 6
324 #endif
325 
326 /* The size of the buffers in pool 6,
327  BUF_SIZE = max SCO data 255 + sizeof(BT_HDR) = 8 + SCO packet header 3 + padding 2 = 268 */
328 #ifndef GKI_BUF6_SIZE
329 #define GKI_BUF6_SIZE 268
330 #endif
331 
332 /* The number of buffers in buffer pool 6. */
333 #ifndef GKI_BUF6_MAX
334 #define GKI_BUF6_MAX 60
335 #endif
336 
337 
338 /* The following pool is a dedicated pool for HDP
339  If a shared pool is more desirable then
340  1. set BTA_HL_LRG_DATA_POOL_ID to the desired Gki Pool ID
341  2. make sure that the shared pool size is larger than 9472
342  3. adjust GKI_NUM_FIXED_BUF_POOLS accordingly since
343  POOL ID 7 is not needed
344 */
345 
346 /* The ID of buffer pool 7. */
347 #ifndef GKI_POOL_ID_7
348 #define GKI_POOL_ID_7 7
349 #endif
350 
351 /* The size of the buffers in pool 7 */
352 #ifndef GKI_BUF7_SIZE
353 #define GKI_BUF7_SIZE 9472
354 #endif
355 
356 /* The number of buffers in buffer pool 7. */
357 #ifndef GKI_BUF7_MAX
358 #define GKI_BUF7_MAX 2
359 #endif
360 
361 /* The following pool is a dedicated pool for GATT
362  If a shared pool is more desirable then
363  1. set GATT_DB_POOL_ID to the desired Gki Pool ID
364  2. make sure that the shared pool size fit a common GATT database needs
365  3. adjust GKI_NUM_FIXED_BUF_POOLS accordingly since
366  POOL ID 8 is not needed
367 */
368 
369 /* The ID of buffer pool 8. */
370 #ifndef GKI_POOL_ID_8
371 #define GKI_POOL_ID_8 8
372 #endif
373 
374 /* The size of the buffers in pool 8 */
375 #ifndef GKI_BUF8_SIZE
376 #define GKI_BUF8_SIZE 128
377 #endif
378 
379 /* The number of buffers in buffer pool 8. */
380 #ifndef GKI_BUF8_MAX
381 #define GKI_BUF8_MAX 30
382 #endif
383 
384 #if defined(GKI_DEBUG) && (GKI_DEBUG == TRUE)
385 #ifdef LOG_TAG
386 #undef LOG_TAG
387 #endif
388 #define LOG_TAG "GKI_LINUX"
389 /* GKI Trace Macros */
390 #define GKI_TRACE_0(m) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m)
391 #define GKI_TRACE_1(m,p1) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1)
392 #define GKI_TRACE_2(m,p1,p2) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2)
393 #define GKI_TRACE_3(m,p1,p2,p3) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3)
394 #define GKI_TRACE_4(m,p1,p2,p3,p4) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3,p4)
395 #define GKI_TRACE_5(m,p1,p2,p3,p4,p5) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3,p4,p5)
396 #define GKI_TRACE_6(m,p1,p2,p3,p4,p5,p6) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_GENERIC,m,p1,p2,p3,p4,p5,p6)
397 #else
398 #define GKI_TRACE_0(m)
399 #define GKI_TRACE_1(m,p1)
400 #define GKI_TRACE_2(m,p1,p2)
401 #define GKI_TRACE_3(m,p1,p2,p3)
402 #define GKI_TRACE_4(m,p1,p2,p3,p4)
403 #define GKI_TRACE_5(m,p1,p2,p3,p4,p5)
404 #define GKI_TRACE_6(m,p1,p2,p3,p4,p5,p6)
405 
406 #endif
407 
408 #define GKI_TRACE_ERROR_0(m) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m)
409 #define GKI_TRACE_ERROR_1(m,p1) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1)
410 #define GKI_TRACE_ERROR_2(m,p1,p2) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2)
411 #define GKI_TRACE_ERROR_3(m,p1,p2,p3) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3)
412 #define GKI_TRACE_ERROR_4(m,p1,p2,p3,p4) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3,p4)
413 #define GKI_TRACE_ERROR_5(m,p1,p2,p3,p4,p5) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3,p4,p5)
414 #define GKI_TRACE_ERROR_6(m,p1,p2,p3,p4,p5,p6) LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR,m,p1,p2,p3,p4,p5,p6)
415 
416 #ifdef __cplusplus
417 extern "C"
418 {
419 #endif
420 
421 EXPORT_API extern void LogMsg (UINT32 trace_set_mask, const char *fmt_str, ...);
422 
423 #ifdef __cplusplus
424 }
425 #endif
426 
427 #endif /* GKI_TARGET_H */