• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 /* Operating System Selection */
22 #ifndef BTE_SIM_APP
23 #define _GKI_ARM
24 #define _GKI_STANDALONE
25 #else
26 #define _BT_WIN32
27 #endif
28 
29 /* define prefix for exporting APIs from libraries */
30 #define EXPORT_API
31 
32 #ifndef BTE_BSE_WRAPPER
33 #ifdef  BTE_SIM_APP
34 #undef  EXPORT_API
35 #define EXPORT_API  __declspec(dllexport)
36 #endif
37 #endif
38 
39 #define GKI_API EXPORT_API
40 #define UDRV_API EXPORT_API
41 
42 #ifndef GKI_DEBUG
43 #define GKI_DEBUG FALSE
44 #endif
45 
46 
47 #if defined (GKI_DEBUG) && (GKI_DEBUG == TRUE)
48 #define GKI_TRACE(fmt, ...)     ALOGI ("%s: " fmt, __FUNCTION__, ## __VA_ARGS__)
49 #else
50 #define GKI_TRACE(fmt, ...)
51 #endif
52 
53 /******************************************************************************
54 **
55 ** Task configuration
56 **
57 ******************************************************************************/
58 
59 /* Definitions of task IDs for inter-task messaging */
60 #ifndef BTU_TASK
61 #define BTU_TASK                0
62 #endif
63 
64 #ifndef BTIF_TASK
65 #define BTIF_TASK               1
66 #endif
67 
68 #ifndef A2DP_MEDIA_TASK
69 #define A2DP_MEDIA_TASK         2
70 #endif
71 
72 /* The number of GKI tasks in the software system. */
73 #ifndef GKI_MAX_TASKS
74 #define GKI_MAX_TASKS               3
75 #endif
76 
77 /******************************************************************************
78 **
79 ** Timer configuration
80 **
81 ******************************************************************************/
82 
83 /* The number of GKI timers in the software system. */
84 #ifndef GKI_NUM_TIMERS
85 #define GKI_NUM_TIMERS              4
86 #endif
87 
88 /* A conversion value for translating ticks to calculate GKI timer.  */
89 #ifndef TICKS_PER_SEC
90 #define TICKS_PER_SEC               100
91 #endif
92 
93 /************************************************************************
94 **  Utility macros converting ticks to time with user define OS ticks per sec
95 **/
96 #ifndef GKI_MS_TO_TICKS
97 #define GKI_MS_TO_TICKS(x)   ((x) / (1000 / TICKS_PER_SEC))
98 #endif
99 
100 #ifndef GKI_SECS_TO_TICKS
101 #define GKI_SECS_TO_TICKS(x)   ((x) * (TICKS_PER_SEC))
102 #endif
103 
104 #ifndef GKI_TICKS_TO_MS
105 #define GKI_TICKS_TO_MS(x)   ((x) * 1000 / TICKS_PER_SEC)
106 #endif
107 
108 #ifndef GKI_TICKS_TO_SECS
109 #define GKI_TICKS_TO_SECS(x)   ((x) / TICKS_PER_SEC)
110 #endif
111 
112 
113 
114 /* TICK per second from OS (OS dependent change this macro accordingly to various OS) */
115 #ifndef OS_TICKS_PER_SEC
116 #define OS_TICKS_PER_SEC               1000
117 #endif
118 
119 /************************************************************************
120 **  Utility macros converting ticks to time with user define OS ticks per sec
121 **/
122 
123 #ifndef GKI_OS_TICKS_TO_MS
124 #define GKI_OS_TICKS_TO_MS(x)   ((x) * 1000 / OS_TICKS_PER_SEC)
125 #endif
126 
127 
128 #ifndef GKI_OS_TICKS_TO_SECS
129 #define GKI_OS_TICKS_TO_SECS(x)   ((x) / OS_TICKS_PER_SEC))
130 #endif
131 
132 /******************************************************************************
133 **
134 ** Buffer configuration
135 **
136 ******************************************************************************/
137 
138 /* TRUE if GKI uses dynamic buffers. */
139 #ifndef GKI_USE_DYNAMIC_BUFFERS
140 #define GKI_USE_DYNAMIC_BUFFERS     FALSE
141 #endif
142 
143 /* The size of the buffers in pool 0. */
144 #ifndef GKI_BUF0_SIZE
145 #define GKI_BUF0_SIZE               64
146 #endif
147 
148 /* The number of buffers in buffer pool 0. */
149 #ifndef GKI_BUF0_MAX
150 #define GKI_BUF0_MAX                48
151 #endif
152 
153 /* The ID of buffer pool 0. */
154 #ifndef GKI_POOL_ID_0
155 #define GKI_POOL_ID_0               0
156 #endif
157 
158 /* The size of the buffers in pool 1. */
159 #ifndef GKI_BUF1_SIZE
160 #define GKI_BUF1_SIZE               288
161 #endif
162 
163 /* The number of buffers in buffer pool 1. */
164 #ifndef GKI_BUF1_MAX
165 #define GKI_BUF1_MAX                26
166 #endif
167 
168 /* The ID of buffer pool 1. */
169 #ifndef GKI_POOL_ID_1
170 #define GKI_POOL_ID_1               1
171 #endif
172 
173 /* The size of the buffers in pool 2. */
174 #ifndef GKI_BUF2_SIZE
175 #define GKI_BUF2_SIZE               660
176 #endif
177 
178 /* The number of buffers in buffer pool 2. */
179 #ifndef GKI_BUF2_MAX
180 #define GKI_BUF2_MAX                45
181 #endif
182 
183 /* The ID of buffer pool 2. */
184 #ifndef GKI_POOL_ID_2
185 #define GKI_POOL_ID_2               2
186 #endif
187 
188 /* The size of the buffers in pool 3. */
189 #ifndef GKI_BUF3_SIZE
190 #define GKI_BUF3_SIZE               (4096+16)
191 #endif
192 
193 /* The number of buffers in buffer pool 3. */
194 #ifndef GKI_BUF3_MAX
195 #define GKI_BUF3_MAX                200
196 #endif
197 
198 /* The ID of buffer pool 3. */
199 #ifndef GKI_POOL_ID_3
200 #define GKI_POOL_ID_3               3
201 #endif
202 
203 /* The size of the largest PUBLIC fixed buffer in system. */
204 #ifndef GKI_MAX_BUF_SIZE
205 #define GKI_MAX_BUF_SIZE            GKI_BUF3_SIZE
206 #endif
207 
208 /* The pool ID of the largest PUBLIC fixed buffer in system. */
209 #ifndef GKI_MAX_BUF_SIZE_POOL_ID
210 #define GKI_MAX_BUF_SIZE_POOL_ID    GKI_POOL_ID_3
211 #endif
212 
213 /* RESERVED buffer pool for OBX */
214 /* Ideally there should be 1 buffer for each instance for RX data, and some number
215 of TX buffers based on active instances. OBX will only use these if packet size
216 requires it. In most cases the large packets are used in only one direction so
217 the other direction will use smaller buffers.
218 Devices with small amount of RAM should limit the number of active obex objects.
219 */
220 /* The size of the buffers in pool 4. */
221 #ifndef GKI_BUF4_SIZE
222 #define GKI_BUF4_SIZE               (8080+26)
223 #endif
224 
225 /* The number of buffers in buffer pool 4. */
226 #ifndef GKI_BUF4_MAX
227 #define GKI_BUF4_MAX                (OBX_NUM_SERVERS + OBX_NUM_CLIENTS)
228 #endif
229 
230 /* The ID of buffer pool 4. */
231 #ifndef GKI_POOL_ID_4
232 #define GKI_POOL_ID_4               4
233 #endif
234 
235 /* The number of fixed GKI buffer pools.
236 eL2CAP requires Pool ID 5
237 If BTM_SCO_HCI_INCLUDED is FALSE, Pool ID 6 is unnecessary, otherwise set to 7
238 If BTA_HL_INCLUDED is FALSE then Pool ID 7 is uncessary and set the following to 7, otherwise set to 8
239 If BLE_INCLUDED is FALSE then Pool ID 8 is uncessary and set the following to 8, otherwise set to 9
240 POOL_ID 9 is a public pool meant for large buffer needs such as SDP_DB
241 */
242 // btla-specific ++
243 #ifndef GKI_NUM_FIXED_BUF_POOLS
244 #define GKI_NUM_FIXED_BUF_POOLS     10
245 #endif
246 
247 /* The buffer pool usage mask. */
248 #ifndef GKI_DEF_BUFPOOL_PERM_MASK
249 /* Setting POOL_ID 9 as a public pool meant for large buffers such as SDP_DB */
250 #define GKI_DEF_BUFPOOL_PERM_MASK   0xfdf0
251 #endif
252 // btla-specific --
253 
254 /* The number of fixed and dynamic buffer pools */
255 #ifndef GKI_NUM_TOTAL_BUF_POOLS
256 #define GKI_NUM_TOTAL_BUF_POOLS     10
257 #endif
258 
259 /* The following is intended to be a reserved pool for L2CAP
260 Flow control and retransmissions and intentionally kept out
261 of order */
262 
263 /* The number of buffers in buffer pool 5. */
264 #ifndef GKI_BUF5_MAX
265 #define GKI_BUF5_MAX                64
266 #endif
267 
268 /* The ID of buffer pool 5. */
269 #ifndef GKI_POOL_ID_5
270 #define GKI_POOL_ID_5               5
271 #endif
272 
273 /* The size of the buffers in pool 5
274 ** Special pool used by l2cap retransmissions only.  This size based on segment
275 ** that will fit into both DH5 and 2-DH3 packet types after accounting for GKI
276 ** header.  13 bytes of max headers allows us a 339 payload max. (in btui_app.txt)
277 ** Note: 748 used for insight scriptwrapper with CAT-2 scripts.
278 */
279 #ifndef GKI_BUF5_SIZE
280 #define GKI_BUF5_SIZE               748
281 #endif
282 
283 /* The buffer corruption check flag. */
284 #ifndef GKI_ENABLE_BUF_CORRUPTION_CHECK
285 #define GKI_ENABLE_BUF_CORRUPTION_CHECK TRUE
286 #endif
287 
288 /* The GKI severe error macro. */
289 #ifndef GKI_SEVERE
290 #define GKI_SEVERE(code)
291 #endif
292 
293 /* TRUE if GKI includes debug functionality. */
294 #ifndef GKI_DEBUG
295 #define GKI_DEBUG                   FALSE
296 #endif
297 
298 /* Maximum number of exceptions logged. */
299 #ifndef GKI_MAX_EXCEPTION
300 #define GKI_MAX_EXCEPTION           8
301 #endif
302 
303 /* Maximum number of chars stored for each exception message. */
304 #ifndef GKI_MAX_EXCEPTION_MSGLEN
305 #define GKI_MAX_EXCEPTION_MSGLEN    64
306 #endif
307 
308 /* The following is intended to be a reserved pool for SCO
309 over HCI data and intentionally kept out of order */
310 
311 /* The ID of buffer pool 6. */
312 #ifndef GKI_POOL_ID_6
313 #define GKI_POOL_ID_6               6
314 #endif
315 
316 /* The size of the buffers in pool 6,
317   BUF_SIZE = max SCO data 255 + sizeof(BT_HDR) = 8 + SCO packet header 3 + padding 2 = 268 */
318 #ifndef GKI_BUF6_SIZE
319 #define GKI_BUF6_SIZE               268
320 #endif
321 
322 /* The number of buffers in buffer pool 6. */
323 #ifndef GKI_BUF6_MAX
324 #define GKI_BUF6_MAX                60
325 #endif
326 
327 
328 /* The following pool is a dedicated pool for HDP
329    If a shared pool is more desirable then
330    1. set BTA_HL_LRG_DATA_POOL_ID to the desired Gki Pool ID
331    2. make sure that the shared pool size is larger than 9472
332    3. adjust GKI_NUM_FIXED_BUF_POOLS accordingly since
333       POOL ID 7 is not needed
334 */
335 
336 /* The ID of buffer pool 7. */
337 #ifndef GKI_POOL_ID_7
338 #define GKI_POOL_ID_7               7
339 #endif
340 
341 /* The size of the buffers in pool 7 */
342 #ifndef GKI_BUF7_SIZE
343 #define GKI_BUF7_SIZE               (10240 + 24)
344 #endif
345 
346 /* The number of buffers in buffer pool 7. */
347 #ifndef GKI_BUF7_MAX
348 #define GKI_BUF7_MAX                2
349 #endif
350 
351 /* The following pool is a dedicated pool for GATT
352    If a shared pool is more desirable then
353    1. set GATT_DB_POOL_ID to the desired Gki Pool ID
354    2. make sure that the shared pool size fit a common GATT database needs
355    3. adjust GKI_NUM_FIXED_BUF_POOLS accordingly since
356       POOL ID 8 is not needed
357 */
358 
359 /* The ID of buffer pool 8. */
360 #ifndef GKI_POOL_ID_8
361 #define GKI_POOL_ID_8               8
362 #endif
363 
364 /* The size of the buffers in pool 8 */
365 #ifndef GKI_BUF8_SIZE
366 #define GKI_BUF8_SIZE               128
367 #endif
368 
369 /* The number of buffers in buffer pool 8. */
370 #ifndef GKI_BUF8_MAX
371 #define GKI_BUF8_MAX                30
372 #endif
373 
374 // btla-specific ++
375 /* The following pool is  meant for large allocations such as SDP_DB */
376 #ifndef GKI_POOL_ID_9
377 #define GKI_POOL_ID_9              9
378 #endif
379 
380 #ifndef GKI_BUF9_SIZE
381 #define GKI_BUF9_SIZE            8192
382 #endif
383 
384 #ifndef GKI_BUF9_MAX
385 #define GKI_BUF9_MAX           5
386 #endif
387 // btla-specific --
388 
389 #ifdef __cplusplus
390 extern "C"
391 {
392 #endif
393 
394 EXPORT_API extern void LogMsg (UINT32 trace_set_mask, const char *fmt_str, ...);
395 
396 #ifdef __cplusplus
397 }
398 #endif
399 
400 #endif  /* GKI_TARGET_H */
401