Android Hardware Abstraction Layer
bt_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 BT_TARGET_H
19 #define BT_TARGET_H
20 
21 #include "data_types.h"
22 
23 #ifdef BUILDCFG
24 #include "buildcfg.h"
25 #endif
26 
27 /* Include common GKI definitions used by this platform */
28 #include "gki_target.h"
29 
30 #include "bt_types.h" /* This must be defined AFTER buildcfg.h */
31 #include "dyn_mem.h" /* defines static and/or dynamic memory for components */
32 
33 /* #define BYPASS_AVDATATRACE */
34 
35 /******************************************************************************
36 **
37 ** Platform-Specific
38 **
39 ******************************************************************************/
40 
41 /* set to FALSE unless using Zeevo */
42 #ifndef ZEEVO_CTRL_DEFINED
43 #define ZEEVO_CTRL_DEFINED FALSE
44 #endif
45 
46 /* Supporting GPS shared transport */
47 #ifndef GPS_INCLUDED
48 #define GPS_INCLUDED TRUE
49 #endif
50 
51 /* API macros for simulator */
52 
53 #define BTAPI
54 
55 #ifndef BTE_BSE_WRAPPER
56 #ifdef BTE_SIM_APP
57 #undef BTAPI
58 #define BTAPI __declspec(dllexport)
59 #endif
60 #endif
61 
62 #define BT_API BTAPI
63 #define BTU_API BTAPI
64 #define A2D_API BTAPI
65 #define VDP_API BTAPI
66 #define AVDT_API BTAPI
67 #define AVCT_API BTAPI
68 #define AVRC_API BTAPI
69 #define BIP_API BTAPI
70 #define BNEP_API BTAPI
71 #define BPP_API BTAPI
72 #define BTM_API BTAPI
73 #define CTP_API BTAPI
74 #define DUN_API BTAPI
75 #define FTP_API BTAPI
76 #define GAP_API BTAPI
77 #define GOEP_API BTAPI
78 #define HCI_API BTAPI
79 #define HCRP_API BTAPI
80 #define HID_API BTAPI
81 #define HFP_API BTAPI
82 #define HSP2_API BTAPI
83 #define ICP_API BTAPI
84 #define L2C_API BTAPI
85 #define OBX_API BTAPI
86 #define OPP_API BTAPI
87 #define PAN_API BTAPI
88 #define RFC_API BTAPI
89 #define RPC_API BTAPI
90 #define SDP_API BTAPI
91 #define SPP_API BTAPI
92 #define TCS_API BTAPI
93 #define XML_API BTAPI
94 #define BTA_API BTAPI
95 #define SBC_API BTAPI
96 #define LPM_API BTAPI
97 #define AMP_API BTAPI
98 #define MCE_API BTAPI
99 #define MCA_API BTAPI
100 #define GATT_API BTAPI
101 #define SMP_API BTAPI
102 
103 
104 /******************************************************************************
105 **
106 ** GKI Buffer Pools
107 **
108 ******************************************************************************/
109 
110 /* Receives HCI events from the lower-layer. */
111 #ifndef HCI_CMD_POOL_ID
112 #define HCI_CMD_POOL_ID GKI_POOL_ID_2
113 #endif
114 
115 #ifndef HCI_CMD_POOL_BUF_SIZE
116 #define HCI_CMD_POOL_BUF_SIZE GKI_BUF2_SIZE
117 #endif
118 
119 /* Receives ACL data packets from thelower-layer. */
120 #ifndef HCI_ACL_POOL_ID
121 #define HCI_ACL_POOL_ID GKI_POOL_ID_3
122 #endif
123 
124 #ifndef HCI_ACL_POOL_BUF_SIZE
125 #define HCI_ACL_POOL_BUF_SIZE GKI_BUF3_SIZE
126 #endif
127 
128 /* Maximum number of buffers available for ACL receive data. */
129 #ifndef HCI_ACL_BUF_MAX
130 #define HCI_ACL_BUF_MAX GKI_BUF3_MAX
131 #endif
132 
133 /* Receives SCO data packets from the lower-layer. */
134 #ifndef HCI_SCO_POOL_ID
135 #define HCI_SCO_POOL_ID GKI_POOL_ID_6
136 #endif
137 
138 /* Not used. */
139 #ifndef HCI_DATA_DESCR_POOL_ID
140 #define HCI_DATA_DESCR_POOL_ID GKI_POOL_ID_0
141 #endif
142 
143 /* Sends SDP data packets. */
144 #ifndef SDP_POOL_ID
145 #define SDP_POOL_ID GKI_POOL_ID_2
146 #endif
147 
148 /* Sends RFCOMM command packets. */
149 #ifndef RFCOMM_CMD_POOL_ID
150 #define RFCOMM_CMD_POOL_ID GKI_POOL_ID_2
151 #endif
152 
153 #ifndef RFCOMM_CMD_POOL_BUF_SIZE
154 #define RFCOMM_CMD_POOL_BUF_SIZE GKI_BUF2_SIZE
155 #endif
156 
157 /* Sends RFCOMM data packets. */
158 #ifndef RFCOMM_DATA_POOL_ID
159 #define RFCOMM_DATA_POOL_ID GKI_POOL_ID_3
160 #endif
161 
162 #ifndef RFCOMM_DATA_POOL_BUF_SIZE
163 #define RFCOMM_DATA_POOL_BUF_SIZE GKI_BUF3_SIZE
164 #endif
165 
166 /* Sends L2CAP packets to the peer and HCI messages to the controller. */
167 #ifndef L2CAP_CMD_POOL_ID
168 #define L2CAP_CMD_POOL_ID GKI_POOL_ID_2
169 #endif
170 
171 /* Sends L2CAP segmented packets in ERTM mode */
172 #ifndef L2CAP_FCR_TX_POOL_ID
173 #define L2CAP_FCR_TX_POOL_ID HCI_ACL_POOL_ID
174 #endif
175 
176 /* Receives L2CAP segmented packets in ERTM mode */
177 #ifndef L2CAP_FCR_RX_POOL_ID
178 #define L2CAP_FCR_RX_POOL_ID HCI_ACL_POOL_ID
179 #endif
180 
181 /* Used by BTM when it sends HCI commands to the controller. */
182 #ifndef BTM_CMD_POOL_ID
183 #define BTM_CMD_POOL_ID GKI_POOL_ID_2
184 #endif
185 
186 /* Sends TCS messages. */
187 #ifndef TCS_MSG_POOL_ID
188 #define TCS_MSG_POOL_ID GKI_POOL_ID_2
189 #endif
190 
191 #ifndef OBX_CMD_POOL_SIZE
192 #define OBX_CMD_POOL_SIZE GKI_BUF2_SIZE
193 #endif
194 
195 #ifndef OBX_LRG_DATA_POOL_SIZE
196 #define OBX_LRG_DATA_POOL_SIZE GKI_BUF4_SIZE
197 #endif
198 
199 #ifndef OBX_LRG_DATA_POOL_ID
200 #define OBX_LRG_DATA_POOL_ID GKI_POOL_ID_4
201 #endif
202 
203 /* Used for CTP discovery database. */
204 #ifndef CTP_SDP_DB_POOL_ID
205 #define CTP_SDP_DB_POOL_ID GKI_POOL_ID_3
206 #endif
207 
208 /* Used for CTP data exchange feature. */
209 #ifndef CTP_DATA_EXCHG_POOL_ID
210 #define CTP_DATA_EXCHG_POOL_ID GKI_POOL_ID_2
211 #endif
212 
213 /* Used to send data to L2CAP. */
214 #ifndef GAP_DATA_POOL_ID
215 #define GAP_DATA_POOL_ID GKI_POOL_ID_3
216 #endif
217 
218 /* Used for SPP inquiry and discovery databases. */
219 #ifndef SPP_DB_POOL_ID
220 #define SPP_DB_POOL_ID GKI_POOL_ID_3
221 #endif
222 
223 #ifndef SPP_DB_SIZE
224 #define SPP_DB_SIZE GKI_BUF3_SIZE
225 #endif
226 
227 /* HCRP protocol and internal commands. */
228 #ifndef HCRP_CMD_POOL_ID
229 #define HCRP_CMD_POOL_ID GKI_POOL_ID_2
230 #endif
231 
232 #ifndef HCRP_CMD_POOL_SIZE
233 #define HCRP_CMD_POOL_SIZE GKI_BUF2_SIZE
234 #endif
235 
236 #ifndef BIP_EVT_POOL_SIZE
237 #define BIP_EVT_POOL_SIZE GKI_BUF3_SIZE
238 #endif
239 
240 #ifndef BIP_DB_SIZE
241 #define BIP_DB_SIZE GKI_BUF3_SIZE
242 #endif
243 
244 
245 /* BNEP data and protocol messages. */
246 #ifndef BNEP_POOL_ID
247 #define BNEP_POOL_ID GKI_POOL_ID_3
248 #endif
249 
250 /* RPC pool for temporary trace message buffers. */
251 #ifndef RPC_SCRATCH_POOL_ID
252 #define RPC_SCRATCH_POOL_ID GKI_POOL_ID_2
253 #endif
254 
255 /* RPC scratch buffer size (not related to RPC_SCRATCH_POOL_ID) */
256 #ifndef RPC_SCRATCH_BUF_SIZE
257 #define RPC_SCRATCH_BUF_SIZE GKI_BUF3_SIZE
258 #endif
259 
260 /* RPC pool for protocol messages */
261 #ifndef RPC_MSG_POOL_ID
262 #define RPC_MSG_POOL_ID GKI_POOL_ID_3
263 #endif
264 
265 #ifndef RPC_MSG_POOL_SIZE
266 #define RPC_MSG_POOL_SIZE GKI_BUF3_SIZE
267 #endif
268 
269 /* AVDTP pool for protocol messages */
270 #ifndef AVDT_CMD_POOL_ID
271 #define AVDT_CMD_POOL_ID GKI_POOL_ID_2
272 #endif
273 
274 /* AVDTP pool size for media packets in case of fragmentation */
275 #ifndef AVDT_DATA_POOL_SIZE
276 #define AVDT_DATA_POOL_SIZE GKI_BUF3_SIZE
277 #endif
278 
279 #ifndef PAN_POOL_ID
280 #define PAN_POOL_ID GKI_POOL_ID_3
281 #endif
282 
283 /* UNV pool for read/write serialization */
284 #ifndef UNV_MSG_POOL_ID
285 #define UNV_MSG_POOL_ID GKI_POOL_ID_2
286 #endif
287 
288 #ifndef UNV_MSG_POOL_SIZE
289 #define UNV_MSG_POOL_SIZE GKI_BUF2_SIZE
290 #endif
291 
292 /* AVCTP pool for protocol messages */
293 #ifndef AVCT_CMD_POOL_ID
294 #define AVCT_CMD_POOL_ID GKI_POOL_ID_1
295 #endif
296 
297 #ifndef AVCT_META_CMD_POOL_ID
298 #define AVCT_META_CMD_POOL_ID GKI_POOL_ID_2
299 #endif
300 
301 /* AVRCP pool for protocol messages */
302 #ifndef AVRC_CMD_POOL_ID
303 #define AVRC_CMD_POOL_ID GKI_POOL_ID_1
304 #endif
305 
306 /* AVRCP pool size for protocol messages */
307 #ifndef AVRC_CMD_POOL_SIZE
308 #define AVRC_CMD_POOL_SIZE GKI_BUF1_SIZE
309 #endif
310 
311 /* AVRCP Metadata pool for protocol messages */
312 #ifndef AVRC_META_CMD_POOL_ID
313 #define AVRC_META_CMD_POOL_ID GKI_POOL_ID_2
314 #endif
315 
316 /* AVRCP Metadata pool size for protocol messages */
317 #ifndef AVRC_META_CMD_POOL_SIZE
318 #define AVRC_META_CMD_POOL_SIZE GKI_BUF2_SIZE
319 #endif
320 
321 
322 /* AVRCP buffer size for browsing channel messages */
323 #ifndef AVRC_BROWSE_POOL_SIZE
324 #define AVRC_BROWSE_POOL_SIZE GKI_MAX_BUF_SIZE
325 #endif
326 
327 /* HDP buffer size for the Pulse Oximeter */
328 #ifndef BTA_HL_LRG_DATA_POOL_SIZE
329 #define BTA_HL_LRG_DATA_POOL_SIZE GKI_BUF7_SIZE
330 #endif
331 
332 #ifndef BTA_HL_LRG_DATA_POOL_ID
333 #define BTA_HL_LRG_DATA_POOL_ID GKI_POOL_ID_7
334 #endif
335 
336 /* GATT Server Database pool ID */
337 #ifndef GATT_DB_POOL_ID
338 #define GATT_DB_POOL_ID GKI_POOL_ID_8
339 #endif
340 
341 
342 /******************************************************************************
343 **
344 ** Lower Layer Interface
345 **
346 ******************************************************************************/
347 
348 /* Sends ACL data received over HCI to the upper stack. */
349 #ifndef HCI_ACL_DATA_TO_UPPER
350 #define HCI_ACL_DATA_TO_UPPER(p) {((BT_HDR *)p)->event = BT_EVT_TO_BTU_HCI_ACL; GKI_send_msg (BTU_TASK, BTU_HCI_RCV_MBOX, p);}
351 #endif
352 
353 /* Sends SCO data received over HCI to the upper stack. */
354 #ifndef HCI_SCO_DATA_TO_UPPER
355 #define HCI_SCO_DATA_TO_UPPER(p) {((BT_HDR *)p)->event = BT_EVT_TO_BTU_HCI_SCO; GKI_send_msg (BTU_TASK, BTU_HCI_RCV_MBOX, p);}
356 #endif
357 
358 /* Sends an HCI event received over HCI to theupper stack. */
359 #ifndef HCI_EVT_TO_UPPER
360 #define HCI_EVT_TO_UPPER(p) {((BT_HDR *)p)->event = BT_EVT_TO_BTU_HCI_EVT; GKI_send_msg (BTU_TASK, BTU_HCI_RCV_MBOX, p);}
361 #endif
362 
363 /* HCI 4 wire power management protocol. */
364 #ifndef HCILL_INCLUDED
365 #define HCILL_INCLUDED FALSE
366 #endif
367 
368 /* Macro for allocating buffer for HCI commands */
369 #ifndef HCI_GET_CMD_BUF
370 #if (!defined(HCI_USE_VARIABLE_SIZE_CMD_BUF) || (HCI_USE_VARIABLE_SIZE_CMD_BUF == FALSE))
371 /* Allocate fixed-size buffer from HCI_CMD_POOL (default case) */
372 #define HCI_GET_CMD_BUF(paramlen) ((BT_HDR *)GKI_getpoolbuf (HCI_CMD_POOL_ID))
373 #else
374 /* Allocate smallest possible buffer (for platforms with limited RAM) */
375 #define HCI_GET_CMD_BUF(paramlen) ((BT_HDR *)GKI_getbuf ((UINT16)(BT_HDR_SIZE + HCIC_PREAMBLE_SIZE + (paramlen))))
376 #endif
377 #endif /* HCI_GET_CMD_BUF */
378 
379 /******************************************************************************
380 **
381 ** HCI Services (H4)
382 **
383 ******************************************************************************/
384 #ifndef HCISU_H4_INCLUDED
385 #define HCISU_H4_INCLUDED FALSE
386 #endif
387 
388 #ifdef __cplusplus
389 extern "C" {
390 #endif
391 BT_API extern void bte_ncisu_send (BT_HDR *p_pkt, UINT16 event);
392 BT_API extern void bte_hcisu_send (BT_HDR *p_msg, UINT16 event);
393 #if (HCISU_H4_INCLUDED == TRUE)
394 BT_API extern void bte_hcisu_lp_allow_bt_device_sleep (void);
395 BT_API extern void bte_hcisu_lp_wakeup_host (void);
396 BT_API extern void bte_hcisu_lp_h4ibss_evt(UINT8 *p, UINT8 evt_len);
397 #endif
398 
399 /* HCILL API for the applications */
400 typedef void (tHCILL_SLEEP_ACK)(void);
401 BT_API extern void HCILL_GoToSleep( tHCILL_SLEEP_ACK *sl_ack_fn);
402 typedef void (tHCILL_STATE_CBACK)(BOOLEAN is_sleep);
403 BT_API extern void HCILL_RegState( tHCILL_STATE_CBACK *p_cback);
404 #ifdef __cplusplus
405 }
406 #endif
407 
408 /* Sends ACL data received from the upper stack to the BD/EDR HCI transport. */
409 #ifndef HCI_ACL_DATA_TO_LOWER
410 #define HCI_ACL_DATA_TO_LOWER(p) bte_hcisu_send((BT_HDR *)(p), BT_EVT_TO_LM_HCI_ACL);
411 #endif
412 
413 #ifndef HCI_BLE_ACL_DATA_TO_LOWER
414 #define HCI_BLE_ACL_DATA_TO_LOWER(p) bte_hcisu_send((BT_HDR *)(p), (UINT16)(BT_EVT_TO_LM_HCI_ACL|LOCAL_BLE_CONTROLLER_ID));
415 #endif
416 
417 /* Sends ACL data received from the upper stack to the AMP HCI transport. */
418 #ifndef HCI_AMP_DATA_TO_LOWER
419 #define HCI_AMP_DATA_TO_LOWER(p,x) bte_hcisu_send((BT_HDR *)(p), (UINT16)(BT_EVT_TO_LM_HCI_ACL|((UINT16)(x))));
420 #endif
421 
422 /* Sends SCO data received from the upper stack to the HCI transport. */
423 #ifndef HCI_SCO_DATA_TO_LOWER
424 #define HCI_SCO_DATA_TO_LOWER(p) bte_hcisu_send((BT_HDR *)(p), BT_EVT_TO_LM_HCI_SCO);
425 #endif
426 
427 /* Sends an HCI command received from the upper stack to the BD/EDR HCI transport. */
428 #ifndef HCI_CMD_TO_LOWER
429 #define HCI_CMD_TO_LOWER(p) bte_hcisu_send((BT_HDR *)(p), BT_EVT_TO_LM_HCI_CMD);
430 #endif
431 
432 /* Sends an HCI command received from the upper stack to the AMP HCI transport. */
433 #ifndef HCI_CMD_TO_AMP
434 #define HCI_CMD_TO_AMP(x,p) bte_hcisu_send((BT_HDR *)(p), (UINT16)(BT_EVT_TO_LM_HCI_CMD|((UINT16)(x))));
435 #endif
436 
437 /* Sends an LM Diagnosic command received from the upper stack to the HCI transport. */
438 #ifndef HCI_LM_DIAG_TO_LOWER
439 #define HCI_LM_DIAG_TO_LOWER(p) bte_hcisu_send((BT_HDR *)(p), BT_EVT_TO_LM_DIAG);
440 #endif
441 
442 /* Send HCISU a message to allow BT sleep */
443 #ifndef HCI_LP_ALLOW_BT_DEVICE_SLEEP
444 #if (HCISU_H4_INCLUDED == TRUE)
445 #define HCI_LP_ALLOW_BT_DEVICE_SLEEP() bte_hcisu_lp_allow_bt_device_sleep()
446 #else
447 #define HCI_LP_ALLOW_BT_DEVICE_SLEEP() HCILP_AllowBTDeviceSleep()
448 #endif
449 #endif
450 
451 /* Send HCISU a message to wakeup host */
452 #ifndef HCI_LP_WAKEUP_HOST
453 #if (HCISU_H4_INCLUDED == TRUE)
454 #define HCI_LP_WAKEUP_HOST() bte_hcisu_lp_wakeup_host()
455 #else
456 #define HCI_LP_WAKEUP_HOST() HCILP_WakeupHost()
457 #endif
458 #endif
459 
460 /* Send HCISU the received H4IBSS event from controller */
461 #ifndef HCI_LP_RCV_H4IBSS_EVT
462 #if (HCISU_H4_INCLUDED == TRUE)
463 #define HCI_LP_RCV_H4IBSS_EVT(p1, p2) bte_hcisu_lp_h4ibss_evt((UINT8*)(p1), (UINT8)(p2))
464 #else
465 #define HCI_LP_RCV_H4IBSS_EVT(p1, p2) h4ibss_sleep_mode_evt((UINT8*)(p1), (UINT8)(p2))
466 #endif
467 #endif
468 
469 /* If nonzero, the upper-layer sends at most this number of HCI commands to the lower-layer. */
470 #ifndef HCI_MAX_SIMUL_CMDS
471 #define HCI_MAX_SIMUL_CMDS 0
472 #endif
473 
474 /* Timeout for receiving response to HCI command */
475 #ifndef BTU_CMD_CMPL_TIMEOUT
476 #define BTU_CMD_CMPL_TIMEOUT 8
477 #endif
478 
479 /* If TRUE, BTU task will check HCISU again when HCI command timer expires */
480 #ifndef BTU_CMD_CMPL_TOUT_DOUBLE_CHECK
481 #define BTU_CMD_CMPL_TOUT_DOUBLE_CHECK FALSE
482 #endif
483 
484 /* If TRUE, stack is compiled to include MM dual stack functionality */
485 #ifndef BTU_DUAL_STACK_MM_INCLUDED
486 #define BTU_DUAL_STACK_MM_INCLUDED FALSE
487 #endif
488 
489 /* If TRUE, stack is compiled to support Embedded Lite Stack in BT chip */
490 #ifndef BTU_DUAL_STACK_BTC_INCLUDED
491 #define BTU_DUAL_STACK_BTC_INCLUDED FALSE
492 #endif
493 
494 /* If TRUE, stack is compiled to support Embedded Lite Stack for AV SNK in BT chip */
495 #ifndef BTU_BTC_SNK_INCLUDED
496 #define BTU_BTC_SNK_INCLUDED FALSE
497 #endif
498 
499 /* If TRUE, stack is compiled as Lite Stack in Multimedia chip */
500 /* If FALSE, stack is compiled as Full Stack in Baseband chip */
501 #ifndef BTU_STACK_LITE_ENABLED
502 #define BTU_STACK_LITE_ENABLED FALSE
503 #endif
504 
505 /* Transport pause time (BT slot(0.625ms) unit) when switching between BB and MM */
506 /* FW is using a tick which is 20 slot unit so if timeout is between 0 to 20 slot */
507 /* then actual timeout would be 0 to 12.5ms because it could be beteen ticks. */
508 /* if timeout is between 20 to 40 slot then actual timeout would be 12.5 to 25ms */
509 #ifndef BTU_DUAL_TRANSPORT_PAUSE_TIME
510 #define BTU_DUAL_TRANSPORT_PAUSE_TIME 40
511 #endif
512 
513 /* if UART baudrate is different between BB and MM, it will be updated during switching */
514 #ifndef BTU_DUAL_TRANSPORT_BB_BAUDRATE
515 #define BTU_DUAL_TRANSPORT_BB_BAUDRATE 115200
516 #endif
517 
518 #ifndef BTU_DUAL_TRANSPORT_MM_BAUDRATE
519 #define BTU_DUAL_TRANSPORT_MM_BAUDRATE 921600
520 #endif
521 
522 /* If TRUE, stack is compiled to include the multi-av feature (A2DP packets are duplicated inside controller) */
523 #ifndef BTU_MULTI_AV_INCLUDED
524 #define BTU_MULTI_AV_INCLUDED FALSE
525 #endif
526 
527 /* Use 2 second for low-resolution systems, override to 1 for high-resolution systems */
528 #ifndef BT_1SEC_TIMEOUT
529 #define BT_1SEC_TIMEOUT (2)
530 #endif
531 
532 /* Quick Timer */
533 /* if L2CAP_FCR_INCLUDED is TRUE then it should have 100 millisecond resolution */
534 /* if HCILP_INCLUDED is TRUE then it should have 100 millisecond resolution */
535 /* if SLIP_INCLUDED is TRUE then it should have 10 millisecond resolution */
536 /* if BCM2045_USE_DELAY is FALSE then it should have 10 millisecond resolution */
537 /* if none of them is included then QUICK_TIMER_TICKS_PER_SEC is set to 0 to exclude quick timer */
538 #ifndef QUICK_TIMER_TICKS_PER_SEC
539 #define QUICK_TIMER_TICKS_PER_SEC 100 /* 10ms timer */
540 #endif
541 
542 /******************************************************************************
543 **
544 ** BTM
545 **
546 ******************************************************************************/
547 /* if set to TRUE, stack will automatically send an HCI reset at start-up. To be
548 set to FALSE for advanced start-up / shut-down procedures using USER_HW_ENABLE_API
549 and USER_HW_DISABLE_API macros */
550 #ifndef BTM_AUTOMATIC_HCI_RESET
551 #define BTM_AUTOMATIC_HCI_RESET TRUE
552 #endif
553 
554 /* Include BTM Discovery database and code. */
555 #ifndef BTM_DISCOVERY_INCLUDED
556 #define BTM_DISCOVERY_INCLUDED TRUE
557 #endif
558 
559 /* Include inquiry code. */
560 #ifndef BTM_INQUIRY_INCLUDED
561 #define BTM_INQUIRY_INCLUDED TRUE
562 #endif
563 
564 /* Cancel Inquiry on incoming SSP - Work around code for a FW issue (CQ#167446). */
565 #ifndef BTM_NO_SSP_ON_INQUIRY
566 #define BTM_NO_SSP_ON_INQUIRY FALSE
567 #endif
568 
569 /* Include periodic inquiry code (used when BTM_INQUIRY_INCLUDED is TRUE). */
570 #ifndef BTM_PERIODIC_INQ_INCLUDED
571 #define BTM_PERIODIC_INQ_INCLUDED TRUE
572 #endif
573 
574 /* Include security authorization code */
575 #ifndef BTM_AUTHORIZATION_INCLUDED
576 #define BTM_AUTHORIZATION_INCLUDED TRUE
577 #endif
578 
579 /* Include the implemenation needed by Pre-Lisbon controller (2.0_EDR or older) */
580 #ifndef BTM_PRE_LISBON_INCLUDED
581 #define BTM_PRE_LISBON_INCLUDED TRUE
582 #endif
583 
584 
585 /* Includes SCO if TRUE */
586 #ifndef BTM_SCO_INCLUDED
587 #define BTM_SCO_INCLUDED TRUE /* TRUE includes SCO code */
588 #endif
589 
590 /* Includes SCO if TRUE */
591 #ifndef BTM_SCO_HCI_INCLUDED
592 #define BTM_SCO_HCI_INCLUDED FALSE /* TRUE includes SCO over HCI code */
593 #endif
594 
595 /* Includes WBS if TRUE */
596 #ifndef BTM_WBS_INCLUDED
597 #define BTM_WBS_INCLUDED FALSE /* TRUE includes WBS code */
598 #endif
599 
600 /* Includes PCM2 support if TRUE */
601 #ifndef BTM_PCM2_INCLUDED
602 #define BTM_PCM2_INCLUDED FALSE
603 #endif
604 
605 /* If FALSE, AFH channel automatically adjusted based on AMP channel in use */
606 /* Set TRUE, if want to bypass AFH channel automatic adjustment and use */
607 /* BTA_DM_API_SET_AFH_CHANNELS_ API */
608 
609 #ifndef BTM_BYPASS_AMP_AUTO_AFH
610 #define BTM_BYPASS_AMP_AUTO_AFH FALSE
611 #endif
612 
613 
614 /**************************
615 ** Initial SCO TX credit
616 *************************/
617 /* max TX SCO data packet size */
618 #ifndef BTM_SCO_DATA_SIZE_MAX
619 #define BTM_SCO_DATA_SIZE_MAX 240
620 #endif
621 
622 /* maximum BTM buffering capacity */
623 #ifndef BTM_SCO_MAX_BUF_CAP
624 #define BTM_SCO_MAX_BUF_CAP (BTM_SCO_INIT_XMIT_CREDIT * 4)
625 #endif
626 
627 /* The size in bytes of the BTM inquiry database. */
628 #ifndef BTM_INQ_DB_SIZE
629 #define BTM_INQ_DB_SIZE 12
630 #endif
631 
632 /* This is set to enable automatic periodic inquiry at startup. */
633 #ifndef BTM_ENABLE_AUTO_INQUIRY
634 #define BTM_ENABLE_AUTO_INQUIRY FALSE
635 #endif
636 
637 /* This is set to always try to acquire the remote device name. */
638 #ifndef BTM_INQ_GET_REMOTE_NAME
639 #define BTM_INQ_GET_REMOTE_NAME FALSE
640 #endif
641 
642 /* The inquiry duration in 1.28 second units when auto inquiry is enabled. */
643 #ifndef BTM_DEFAULT_INQ_DUR
644 #define BTM_DEFAULT_INQ_DUR 5
645 #endif
646 
647 /* The inquiry mode when auto inquiry is enabled. */
648 #ifndef BTM_DEFAULT_INQ_MODE
649 #define BTM_DEFAULT_INQ_MODE BTM_GENERAL_INQUIRY
650 #endif
651 
652 /* The default periodic inquiry maximum delay when auto inquiry is enabled, in 1.28 second units. */
653 #ifndef BTM_DEFAULT_INQ_MAX_DELAY
654 #define BTM_DEFAULT_INQ_MAX_DELAY 30
655 #endif
656 
657 /* The default periodic inquiry minimum delay when auto inquiry is enabled, in 1.28 second units. */
658 #ifndef BTM_DEFAULT_INQ_MIN_DELAY
659 #define BTM_DEFAULT_INQ_MIN_DELAY 20
660 #endif
661 
662 /* The maximum age of entries in inquiry database in seconds ('0' disables feature). */
663 #ifndef BTM_INQ_MAX_AGE
664 #define BTM_INQ_MAX_AGE 0
665 #endif
666 
667 /* The maximum age of entries in inquiry database based on inquiry response failure ('0' disables feature). */
668 #ifndef BTM_INQ_AGE_BY_COUNT
669 #define BTM_INQ_AGE_BY_COUNT 0
670 #endif
671 
672 /* TRUE if controller does not support inquiry event filtering. */
673 #ifndef BTM_BYPASS_EVENT_FILTERING
674 #define BTM_BYPASS_EVENT_FILTERING FALSE
675 #endif
676 
677 /* TRUE if inquiry filtering is desired from BTM. */
678 #ifndef BTM_USE_INQ_RESULTS_FILTER
679 #define BTM_USE_INQ_RESULTS_FILTER TRUE
680 #endif
681 
682 /* The default scan mode */
683 #ifndef BTM_DEFAULT_SCAN_TYPE
684 #define BTM_DEFAULT_SCAN_TYPE BTM_SCAN_TYPE_INTERLACED
685 #endif
686 
687 /* Should connections to unknown devices be allowed when not discoverable? */
688 #ifndef BTM_ALLOW_CONN_IF_NONDISCOVER
689 #define BTM_ALLOW_CONN_IF_NONDISCOVER FALSE
690 #endif
691 
692 /* When connectable mode is set to TRUE, the device will respond to paging. */
693 #ifndef BTM_IS_CONNECTABLE
694 #define BTM_IS_CONNECTABLE FALSE
695 #endif
696 
697 /* Sets the Page_Scan_Window: the length of time that the device is performing a page scan. */
698 #ifndef BTM_DEFAULT_CONN_WINDOW
699 #define BTM_DEFAULT_CONN_WINDOW 0x0012
700 #endif
701 
702 /* Sets the Page_Scan_Activity: the interval between the start of two consecutive page scans. */
703 #ifndef BTM_DEFAULT_CONN_INTERVAL
704 #define BTM_DEFAULT_CONN_INTERVAL 0x0800
705 #endif
706 
707 /* This is set to automatically perform inquiry scan on startup. */
708 #ifndef BTM_IS_DISCOVERABLE
709 #define BTM_IS_DISCOVERABLE FALSE
710 #endif
711 
712 /* When automatic inquiry scan is enabled, this sets the discovery mode. */
713 #ifndef BTM_DEFAULT_DISC_MODE
714 #define BTM_DEFAULT_DISC_MODE BTM_GENERAL_DISCOVERABLE
715 #endif
716 
717 /* When automatic inquiry scan is enabled, this sets the inquiry scan window. */
718 #ifndef BTM_DEFAULT_DISC_WINDOW
719 #define BTM_DEFAULT_DISC_WINDOW 0x0012
720 #endif
721 
722 /* When automatic inquiry scan is enabled, this sets the inquiry scan interval. */
723 #ifndef BTM_DEFAULT_DISC_INTERVAL
724 #define BTM_DEFAULT_DISC_INTERVAL 0x0800
725 #endif
726 
727 /* Sets the period, in seconds, to automatically perform service discovery. */
728 #ifndef BTM_AUTO_DISCOVERY_PERIOD
729 #define BTM_AUTO_DISCOVERY_PERIOD 0
730 #endif
731 
732 /* The size in bytes of the BTM discovery database (if discovery is included). */
733 #ifndef BTM_DISCOVERY_DB_SIZE
734 #define BTM_DISCOVERY_DB_SIZE 4000
735 #endif
736 
737 /* Number of milliseconds to delay BTU task startup upon device initialization. */
738 #ifndef BTU_STARTUP_DELAY
739 #define BTU_STARTUP_DELAY 0
740 #endif
741 
742 /* Whether BTA is included in BTU task. */
743 #ifndef BTU_BTA_INCLUDED
744 #define BTU_BTA_INCLUDED FALSE
745 #endif
746 
747 /* Number of seconds to wait to send an HCI Reset command upon device initialization. */
748 #ifndef BTM_FIRST_RESET_DELAY
749 #define BTM_FIRST_RESET_DELAY 0
750 #endif
751 
752 /* The number of seconds to wait for controller module to reset after issuing an HCI Reset command. */
753 #ifndef BTM_AFTER_RESET_TIMEOUT
754 #define BTM_AFTER_RESET_TIMEOUT 0
755 #endif
756 
757 /* The default class of device. */
758 #ifndef BTM_INIT_CLASS_OF_DEVICE
759 #define BTM_INIT_CLASS_OF_DEVICE "\x00\x1F\x00"
760 #endif
761 
762 /* The number of SCO links. */
763 #ifndef BTM_MAX_SCO_LINKS
764 #define BTM_MAX_SCO_LINKS 3
765 #endif
766 
767 /* The preferred type of SCO links (2-eSCO, 0-SCO). */
768 #ifndef BTM_DEFAULT_SCO_MODE
769 #define BTM_DEFAULT_SCO_MODE 2
770 #endif
771 
772 /* The number of security records for peer devices. */
773 #ifndef BTM_SEC_MAX_DEVICE_RECORDS
774 #define BTM_SEC_MAX_DEVICE_RECORDS 8
775 #endif
776 
777 /* The number of security records for services. */
778 #ifndef BTM_SEC_MAX_SERVICE_RECORDS
779 #define BTM_SEC_MAX_SERVICE_RECORDS 24
780 #endif
781 
782 /* If True, force a retrieval of remote device name for each bond in case it's changed */
783 #ifndef BTM_SEC_FORCE_RNR_FOR_DBOND
784 #define BTM_SEC_FORCE_RNR_FOR_DBOND TRUE
785 #endif
786 
787 /* Maximum device name length used in btm database. */
788 #ifndef BTM_MAX_REM_BD_NAME_LEN
789 #define BTM_MAX_REM_BD_NAME_LEN 20
790 #endif
791 
792 /* Maximum local device name length stored btm database.
793  '0' disables storage of the local name in BTM */
794 #ifndef BTM_MAX_LOC_BD_NAME_LEN
795 #define BTM_MAX_LOC_BD_NAME_LEN 31
796 #endif
797 
798 /* TRUE if default string is used, FALSE if device name is set in the application */
799 #ifndef BTM_USE_DEF_LOCAL_NAME
800 #define BTM_USE_DEF_LOCAL_NAME FALSE
801 #endif
802 
803 /* Fixed Default String (Ignored if BTM_USE_DEF_LOCAL_NAME is FALSE) */
804 #ifndef BTM_DEF_LOCAL_NAME
805 #define BTM_DEF_LOCAL_NAME ""
806 #endif
807 
808 /* Maximum service name stored with security authorization (0 if not needed) */
809 #ifndef BTM_SEC_SERVICE_NAME_LEN
810 #define BTM_SEC_SERVICE_NAME_LEN BT_MAX_SERVICE_NAME_LEN
811 #endif
812 
813 /* Maximum number of pending security callback */
814 #ifndef BTM_SEC_MAX_CALLBACKS
815 #define BTM_SEC_MAX_CALLBACKS 7
816 #endif
817 
818 /* Maximum length of the service name. */
819 #ifndef BT_MAX_SERVICE_NAME_LEN
820 #define BT_MAX_SERVICE_NAME_LEN 21
821 #endif
822 
823 /* ACL buffer size in HCI Host Buffer Size command. */
824 #ifndef BTM_ACL_BUF_SIZE
825 #define BTM_ACL_BUF_SIZE 0
826 #endif
827 
828 /* This is set to use the BTM power manager. */
829 #ifndef BTM_PWR_MGR_INCLUDED
830 #define BTM_PWR_MGR_INCLUDED TRUE
831 #endif
832 
833 /* The maximum number of clients that can register with the power manager. */
834 #ifndef BTM_MAX_PM_RECORDS
835 #define BTM_MAX_PM_RECORDS 2
836 #endif
837 
838 /* This is set to show debug trace messages for the power manager. */
839 #ifndef BTM_PM_DEBUG
840 #define BTM_PM_DEBUG FALSE
841 #endif
842 
843 /* This is set to TRUE if link is to be unparked due to BTM_CreateSCO API. */
844 #ifndef BTM_SCO_WAKE_PARKED_LINK
845 #define BTM_SCO_WAKE_PARKED_LINK TRUE
846 #endif
847 
848 /* May be set to the the name of a function used for vendor specific chip initialization */
849 #ifndef BTM_APP_DEV_INIT
850 /* #define BTM_APP_DEV_INIT myInitFunction() */
851 #endif
852 
853 /* This is set to TRUE if the busy level change event is desired. (replace ACL change event) */
854 #ifndef BTM_BUSY_LEVEL_CHANGE_INCLUDED
855 #define BTM_BUSY_LEVEL_CHANGE_INCLUDED TRUE
856 #endif
857 
858 /* If the user does not respond to security process requests within this many seconds,
859  * a negative response would be sent automatically.
860  * It's recommended to use a value between 30 and OBX_TIMEOUT_VALUE
861  * 30 is LMP response timeout value */
862 #ifndef BTM_SEC_TIMEOUT_VALUE
863 #define BTM_SEC_TIMEOUT_VALUE 35
864 #endif
865 
866 /* Maximum number of callbacks that can be registered using BTM_RegisterForVSEvents */
867 #ifndef BTM_MAX_VSE_CALLBACKS
868 #define BTM_MAX_VSE_CALLBACKS 3
869 #endif
870 
871 /* Number of streams for dual stack */
872 #ifndef BTM_SYNC_INFO_NUM_STR
873 #define BTM_SYNC_INFO_NUM_STR 2
874 #endif
875 
876 /* Number of streams for dual stack in BT Controller */
877 #ifndef BTM_SYNC_INFO_NUM_STR_BTC
878 #define BTM_SYNC_INFO_NUM_STR_BTC 2
879 #endif
880 
881 /******************************************
882 ** Lisbon Features
883 *******************************************/
884 /* This is set to TRUE if the server Extended Inquiry Response feature is desired. */
885 /* server sends EIR to client */
886 #ifndef BTM_EIR_SERVER_INCLUDED
887 #define BTM_EIR_SERVER_INCLUDED TRUE
888 #endif
889 
890 /* This is set to TRUE if the client Extended Inquiry Response feature is desired. */
891 /* client inquiry to server */
892 #ifndef BTM_EIR_CLIENT_INCLUDED
893 #define BTM_EIR_CLIENT_INCLUDED TRUE
894 #endif
895 
896 /* This is set to TRUE if the FEC is required for EIR packet. */
897 #ifndef BTM_EIR_DEFAULT_FEC_REQUIRED
898 #define BTM_EIR_DEFAULT_FEC_REQUIRED TRUE
899 #endif
900 
901 /* User defined UUID look up table */
902 #ifndef BTM_EIR_UUID_LKUP_TBL
903 #endif
904 
905 /* The IO capability of the local device (for Simple Pairing) */
906 #ifndef BTM_LOCAL_IO_CAPS
907 #define BTM_LOCAL_IO_CAPS BTM_IO_CAP_IO
908 #endif
909 
910 /* The default MITM Protection Requirement (for Simple Pairing)
911  * Possible values are BTM_AUTH_SP_YES or BTM_AUTH_SP_NO */
912 #ifndef BTM_DEFAULT_AUTH_REQ
913 #define BTM_DEFAULT_AUTH_REQ BTM_AUTH_SP_NO
914 #endif
915 
916 /* The default MITM Protection Requirement for dedicated bonding using Simple Pairing
917  * Possible values are BTM_AUTH_AP_YES or BTM_AUTH_AP_NO */
918 #ifndef BTM_DEFAULT_DD_AUTH_REQ
919 #define BTM_DEFAULT_DD_AUTH_REQ BTM_AUTH_AP_YES
920 #endif
921 
922 /* Include Out-of-Band implementation for Simple Pairing */
923 #ifndef BTM_OOB_INCLUDED
924 #define BTM_OOB_INCLUDED TRUE
925 #endif
926 
927 /* TRUE to include Sniff Subrating */
928 #ifndef BTM_SSR_INCLUDED
929 #define BTM_SSR_INCLUDED TRUE
930 #endif
931 
932 /*************************
933 ** End of Lisbon Features
934 **************************/
935 
936 /* Used for conformance testing ONLY */
937 #ifndef BTM_BLE_CONFORMANCE_TESTING
938 #define BTM_BLE_CONFORMANCE_TESTING FALSE
939 #endif
940 
941 
942 /******************************************************************************
943 **
944 ** L2CAP
945 **
946 ******************************************************************************/
947 
948 /* Flow control and retransmission mode */
949 
950 #ifndef L2CAP_FCR_INCLUDED
951 #define L2CAP_FCR_INCLUDED FALSE
952 #endif
953 
954 /* The maximum number of simultaneous links that L2CAP can support. */
955 #ifndef MAX_L2CAP_LINKS
956 #define MAX_L2CAP_LINKS 4
957 #endif
958 
959 /* The maximum number of simultaneous channels that L2CAP can support. */
960 #ifndef MAX_L2CAP_CHANNELS
961 #define MAX_L2CAP_CHANNELS 10
962 #endif
963 
964 /* The maximum number of simultaneous applications that can register with L2CAP. */
965 #ifndef MAX_L2CAP_CLIENTS
966 #define MAX_L2CAP_CLIENTS 8
967 #endif
968 
969 /* The number of seconds of link inactivity before a link is disconnected. */
970 #ifndef L2CAP_LINK_INACTIVITY_TOUT
971 #define L2CAP_LINK_INACTIVITY_TOUT 3
972 #endif
973 
974 /* The number of seconds of link inactivity after bonding before a link is disconnected. */
975 #ifndef L2CAP_BONDING_TIMEOUT
976 #define L2CAP_BONDING_TIMEOUT 3
977 #endif
978 
979 /* The time from the HCI connection complete to disconnect if no channel is established. */
980 #ifndef L2CAP_LINK_STARTUP_TOUT
981 #define L2CAP_LINK_STARTUP_TOUT 60
982 #endif
983 
984 /* The L2CAP MTU; must be in accord with the HCI ACL pool size. */
985 #ifndef L2CAP_MTU_SIZE
986 #define L2CAP_MTU_SIZE 1691
987 #endif
988 
989 /* The L2CAP MPS over Bluetooth; must be in accord with the FCR tx pool size and ACL down buffer size. */
990 #ifndef L2CAP_MPS_OVER_BR_EDR
991 #define L2CAP_MPS_OVER_BR_EDR 1010
992 #endif
993 
994 /* The L2CAP MPS over AMP; must be in accord with the FCR tx pool size and ACL down buffer size. */
995 #ifndef L2CAP_MPS_OVER_AMP
996 #define L2CAP_MPS_OVER_AMP 1480
997 #endif
998 
999 /* This is set to enable host flow control. */
1000 #ifndef L2CAP_HOST_FLOW_CTRL
1001 #define L2CAP_HOST_FLOW_CTRL FALSE
1002 #endif
1003 
1004 /* If host flow control enabled, this is the number of buffers the controller can have unacknowledged. */
1005 #ifndef L2CAP_HOST_FC_ACL_BUFS
1006 #define L2CAP_HOST_FC_ACL_BUFS 20
1007 #endif
1008 
1009 /* The percentage of the queue size allowed before a congestion event is sent to the L2CAP client (typically 120%). */
1010 #ifndef L2CAP_FWD_CONG_THRESH
1011 #define L2CAP_FWD_CONG_THRESH 120
1012 #endif
1013 
1014 /* This is set to enable L2CAP to take the ACL link out of park mode when ACL data is to be sent. */
1015 #ifndef L2CAP_WAKE_PARKED_LINK
1016 #define L2CAP_WAKE_PARKED_LINK TRUE
1017 #endif
1018 
1019 /* Whether link wants to be the master or the slave. */
1020 #ifndef L2CAP_DESIRED_LINK_ROLE
1021 #define L2CAP_DESIRED_LINK_ROLE HCI_ROLE_SLAVE
1022 #endif
1023 
1024 /* Include Non-Flushable Packet Boundary Flag feature of Lisbon */
1025 #ifndef L2CAP_NON_FLUSHABLE_PB_INCLUDED
1026 #define L2CAP_NON_FLUSHABLE_PB_INCLUDED TRUE
1027 #endif
1028 
1029 /* max queued Multi-AV packets per link including controller */
1030 #ifndef L2CAP_MULTI_AV_TOTAL_QUEUED_BUF
1031 #define L2CAP_MULTI_AV_TOTAL_QUEUED_BUF 6
1032 #endif
1033 
1034 /* max links supported by Multi-AV feature */
1035 #ifndef L2CAP_MAX_MULTI_AV_CID
1036 #define L2CAP_MAX_MULTI_AV_CID 5
1037 #endif
1038 
1039 /* Minimum number of ACL credit for high priority link */
1040 #ifndef L2CAP_HIGH_PRI_MIN_XMIT_QUOTA
1041 #define L2CAP_HIGH_PRI_MIN_XMIT_QUOTA 4
1042 #endif
1043 
1044 /* used for monitoring HCI ACL credit management */
1045 #ifndef L2CAP_HCI_FLOW_CONTROL_DEBUG
1046 #define L2CAP_HCI_FLOW_CONTROL_DEBUG TRUE
1047 #endif
1048 
1049 /* Used for calculating transmit buffers off of */
1050 #ifndef L2CAP_NUM_XMIT_BUFFS
1051 #define L2CAP_NUM_XMIT_BUFFS HCI_ACL_BUF_MAX
1052 #endif
1053 
1054 /* Unicast Connectionless Data */
1055 #ifndef L2CAP_UCD_INCLUDED
1056 #define L2CAP_UCD_INCLUDED FALSE
1057 #endif
1058 
1059 /* Unicast Connectionless Data MTU */
1060 #ifndef L2CAP_UCD_MTU
1061 #define L2CAP_UCD_MTU L2CAP_MTU_SIZE
1062 #endif
1063 
1064 /* Unicast Connectionless Data Idle Timeout */
1065 #ifndef L2CAP_UCD_IDLE_TIMEOUT
1066 #define L2CAP_UCD_IDLE_TIMEOUT 2
1067 #endif
1068 
1069 /* Unicast Connectionless Data Idle Timeout */
1070 #ifndef L2CAP_UCD_CH_PRIORITY
1071 #define L2CAP_UCD_CH_PRIORITY L2CAP_CHNL_PRIORITY_MEDIUM
1072 #endif
1073 
1074 /* Max clients on Unicast Connectionless Data */
1075 #ifndef L2CAP_MAX_UCD_CLIENTS
1076 #define L2CAP_MAX_UCD_CLIENTS 5
1077 #endif
1078 
1079 /* Used for features using fixed channels; set to zero if no fixed channels supported (AMP, BLE, etc.) */
1080 /* Excluding L2CAP signaling channel and UCD */
1081 #ifndef L2CAP_NUM_FIXED_CHNLS
1082 #define L2CAP_NUM_FIXED_CHNLS 4
1083 #endif
1084 
1085 /* First fixed channel supported; 3 if AMP supported */
1086 #ifndef L2CAP_FIRST_FIXED_CHNL
1087 #define L2CAP_FIRST_FIXED_CHNL 3
1088 #endif
1089 
1090 #ifndef L2CAP_LAST_FIXED_CHNL
1091 #define L2CAP_LAST_FIXED_CHNL (L2CAP_FIRST_FIXED_CHNL + L2CAP_NUM_FIXED_CHNLS - 1)
1092 #endif
1093 
1094 /* Round Robin service channels in link */
1095 #ifndef L2CAP_ROUND_ROBIN_CHANNEL_SERVICE
1096 #define L2CAP_ROUND_ROBIN_CHANNEL_SERVICE TRUE
1097 #endif
1098 
1099 /* Reconfig after move channel between BR/EDR and AMP */
1100 #ifndef L2CAP_MOVE_CH_RECONFIG_INCLUDED
1101 #define L2CAP_MOVE_CH_RECONFIG_INCLUDED FALSE
1102 #endif
1103 
1104 /* Initiate reconfig after move channel between BR/EDR and AMP */
1105 #ifndef L2CAP_MOVE_CH_RECONFIG_INTITIATOR
1106 #define L2CAP_MOVE_CH_RECONFIG_INTITIATOR FALSE
1107 #endif
1108 
1109 /* Adjust our monitor timeout in ms plus peer's processing time on class 2 AMP controller */
1110 #ifndef L2CAP_AMP_ADJUST_MONITOR_TOUT
1111 #define L2CAP_AMP_ADJUST_MONITOR_TOUT 500
1112 #endif
1113 
1114 /* Adjust our retrans timeout in ms plus peer's processing time on class 2 AMP controller */
1115 #ifndef L2CAP_AMP_ADJUST_RETRANS_TOUT
1116 #define L2CAP_AMP_ADJUST_RETRANS_TOUT 500
1117 #endif
1118 
1119 /* Default local device's processing time (ms) */
1120 #ifndef L2CAP_AMP_PROCESSING_TIME
1121 #define L2CAP_AMP_PROCESSING_TIME 500
1122 #endif
1123 
1124 /* Used for calculating transmit buffers off of */
1125 #ifndef L2CAP_NUM_XMIT_BUFFS
1126 #define L2CAP_NUM_XMIT_BUFFS HCI_ACL_BUF_MAX
1127 #endif
1128 
1129 /* Used for features using fixed channels; set to zero if no fixed channels supported (AMP, BLE, etc.) */
1130 #ifndef L2CAP_NUM_FIXED_CHNLS
1131 #define L2CAP_NUM_FIXED_CHNLS 1
1132 #endif
1133 
1134 /* First fixed channel supported; 3 if AMP supported */
1135 #ifndef L2CAP_FIRST_FIXED_CHNL
1136 #define L2CAP_FIRST_FIXED_CHNL 3
1137 #endif
1138 
1139 #ifndef L2CAP_LAST_FIXED_CHNL
1140 #define L2CAP_LAST_FIXED_CHNL (L2CAP_FIRST_FIXED_CHNL + L2CAP_NUM_FIXED_CHNLS - 1)
1141 #endif
1142 
1143 /* used for monitoring eL2CAP data flow */
1144 #ifndef L2CAP_ERTM_STATS
1145 #define L2CAP_ERTM_STATS FALSE
1146 #endif
1147 
1148 /* USED FOR FCR TEST ONLY: When TRUE generates bad tx and rx packets */
1149 #ifndef L2CAP_CORRUPT_ERTM_PKTS
1150 #define L2CAP_CORRUPT_ERTM_PKTS FALSE
1151 #endif
1152 
1153 /* Used for conformance testing ONLY: When TRUE lets scriptwrapper overwrite info response */
1154 #ifndef L2CAP_CONFORMANCE_TESTING
1155 #define L2CAP_CONFORMANCE_TESTING FALSE
1156 #endif
1157 
1158 /******************************************************************************
1159 **
1160 ** AMP
1161 **
1162 ******************************************************************************/
1163 
1164 #ifndef AMP_INCLUDED
1165 #define AMP_INCLUDED FALSE
1166 #endif
1167 
1168 /* TRUE if AMP includes debug functionality. */
1169 #ifndef AMP_DEBUG
1170 #define AMP_DEBUG FALSE
1171 #endif
1172 
1173 /* Maximum number of simultaneous remote AMP Hosts in system */
1174 #ifndef AMP_MAX_REMOTE_HOSTS
1175 #define AMP_MAX_REMOTE_HOSTS MAX_L2CAP_LINKS
1176 #endif
1177 
1178 /* Maximum number of simultaneous remote AMP controllers in system (BR/EDR excluded) */
1179 #ifndef AMP_MAX_REMOTE_CTRLS
1180 #define AMP_MAX_REMOTE_CTRLS 2
1181 #endif
1182 
1183 /* Maximum number of UUIDs per remote AMP host */
1184 #ifndef AMP_MAX_UUIDS_PER_REM_HOST
1185 #define AMP_MAX_UUIDS_PER_REM_HOST 4
1186 #endif
1187 
1188 /* Maximum number of simultaneous local AMP controllers in system (BR/EDR excluded) */
1189 #ifndef AMP_MAX_LOCAL_CTRLS
1190 #define AMP_MAX_LOCAL_CTRLS 1
1191 #endif
1192 
1193 /* Maximum number of simultaneous Physical Links in system */
1194 #ifndef AMP_MAX_PHYS_LINKS
1195 #define AMP_MAX_PHYS_LINKS 1
1196 #endif
1197 
1198 /* The maximum number of simultaneous AMP logical links that L2CAP can support. */
1199 #ifndef AMP_MAX_L2C_LOG_LINKS
1200 #define AMP_MAX_L2C_LOG_LINKS (MAX_L2CAP_LINKS * 2)
1201 #endif
1202 
1203 /* The number of seconds of link inactivity on AMP fixed channel before the ACL is disconnected. */
1204 #ifndef AMP_L2C_INACTIVITY_TIMER
1205 #define AMP_L2C_INACTIVITY_TIMER 7
1206 #endif
1207 
1208 #ifndef AMP_NUM_ALWAYS_PRESENT_LOC_CTRLRS
1209 #define AMP_NUM_ALWAYS_PRESENT_LOC_CTRLRS AMP_MAX_LOCAL_CTRLS
1210 #endif
1211 
1212 /* If this is non-zero value then l2cap overwrites total ACL credit on AMP. */
1213 /* This temporarily needs until number in dhd driver is finalized */
1214 #ifndef AMP_TOTAL_NUM_BLOCKS
1215 #define AMP_TOTAL_NUM_BLOCKS 0
1216 #endif
1217 
1218 /****************************
1219 ** AMP Autoswitch Constants
1220 *****************************/
1221 /* AMP physical link inactivity timeout
1222 ** This is started when the last logical channel got disconnected */
1223 #ifndef AMP_PHYS_LINK_INACT_DISC_TOUT
1224 #define AMP_PHYS_LINK_INACT_DISC_TOUT 20
1225 #endif
1226 
1227 /* interval between the moments to check if auto-switch ready connections
1228 ** on this AMP controller have to be moved to BR/EDR and if yes - to
1229 ** start to move the connections */
1230 #ifndef AMP_AS_TOUT_ON_AMP
1231 #define AMP_AS_TOUT_ON_AMP 1
1232 #endif
1233 
1234 /* on timeout all auto-switch ready connections
1235 ** have to be moved from BR/EDR to AMP */
1236 #ifndef AMP_AS_TOUT_ON_BR_EDR
1237 #define AMP_AS_TOUT_ON_BR_EDR 1
1238 #endif
1239 
1240 /* min time to stay on BR/EDR after auto-switch from AMP
1241 ** (during this time conditions to switch from BR/EDR to
1242 ** AMP are ignored) */
1243 #ifndef AMP_AS_TOUT_NO_MOVE_TO_AMP
1244 #define AMP_AS_TOUT_NO_MOVE_TO_AMP 4
1245 #endif
1246 
1247 /* TRUE means that "tout to check throughput on BR/EDR"
1248 ** is restarted after "no move to AMP" timer expires,
1249 ** i.e. move from BR/EDR will start not earlier than
1250 ** AMP_AS_TOUT_NO_MOVE_TO_AMP + AMP_AS_TOUT_ON_BR_EDR
1251 ** FALSE means that "tout no move to AMP" and "tout
1252 ** to check throughput on BR/EDR" run in parallel, i.e.
1253 ** connections can be moved from BR/EDR any moment after
1254 ** "tout no move to AMP" expires. */
1255 #ifndef AMP_AS_TOUT_ON_BR_EDR_AFTER_NO_MOVE_TO_AMP
1256 #define AMP_AS_TOUT_ON_BR_EDR_AFTER_NO_MOVE_TO_AMP TRUE
1257 #endif
1258 
1259 /* Until the number of packets sent to L2CAP is <= than this
1260 ** value preparations for auto-switch BR/EDR->AMP do not start.
1261 ** If the number of packets sent to L2CAP falls to this
1262 ** value preparations for auto-switch BR/EDR->AMP stop. */
1263 #ifndef AMP_AS_THRESHOLD_ON_BR_EDR
1264 #define AMP_AS_THRESHOLD_ON_BR_EDR 3
1265 #endif
1266 
1267 /* the number of counters used to collect throughput data
1268 ** on AMP controller. Check for auto-switch conditions starts
1269 ** AMP_AMP_AS_COUNT_ARRAY_SIZE * AMP_AS_TOUT_ON_AMP
1270 ** sec after the first auto-switch ready connection is moved
1271 ** to this controller */
1272 #ifndef AMP_AMP_AS_COUNT_ARRAY_SIZE
1273 #define AMP_AMP_AS_COUNT_ARRAY_SIZE 10
1274 #endif
1275 
1276 /* meaning: flow spec modify is never sent to controller
1277 ** best effort logical link is created with all
1278 ** parameters sent to unknown...*/
1279 #ifndef AMP_SIMPLISTIC_AGGREGATION
1280 #define AMP_SIMPLISTIC_AGGREGATION TRUE
1281 #endif
1282 
1283 /* meaning: auto-switch ready connections start move
1284 ** BR/EDR->AMP after throughput to remote host passes
1285 ** some threshold in bytes (as opposite to move that
1286 ** starts if during some time the number of UNACKED
1287 ** L2CAP packets to remote host stays bigger than some
1288 ** threshold) */
1289 #ifndef AMP_AUTO_SW_TO_AMP_BY_THROUGHPUT
1290 #define AMP_AUTO_SW_TO_AMP_BY_THROUGHPUT TRUE
1291 #endif
1292 
1293 /* the number of counters used to collect throughput data
1294 ** on BR/EDR controller. Check for auto-switch conditions starts
1295 ** AMP_BR_EDR_AS_COUNT_ARRAY_SIZE * AMP_AS_TOUT_ON_BR_EDR
1296 ** sec after the first auto-switch ready connection is moved
1297 ** to this controller */
1298 #ifndef AMP_BR_EDR_AS_COUNT_ARRAY_SIZE
1299 #define AMP_BR_EDR_AS_COUNT_ARRAY_SIZE 7
1300 #endif
1301 
1302 /* if it takes more than this amount of time to transfer object on BR/EDR
1303 ** application(BTA) will initiate to AMP connection. */
1304 #ifndef AMP_AS_TRANSFER_TIME_ON_BR_EDR
1305 #define AMP_AS_TRANSFER_TIME_ON_BR_EDR 5
1306 #endif
1307 
1308 
1309 #ifndef AMP_RFC_TEST
1310 #define AMP_RFC_TEST FALSE
1311 #endif
1312 
1313 #ifndef TIMER_PARAM_TYPE
1314 #ifdef WIN2000
1315 #define TIMER_PARAM_TYPE void *
1316 #else
1317 #define TIMER_PARAM_TYPE UINT32
1318 #endif
1319 #endif
1320 
1321 /******************************************************************************
1322 **
1323 ** BLE
1324 **
1325 ******************************************************************************/
1326 
1327 #ifndef BLE_INCLUDED
1328 #define BLE_INCLUDED FALSE
1329 #endif
1330 
1331 #ifndef LOCAL_BLE_CONTROLLER_ID
1332 #define LOCAL_BLE_CONTROLLER_ID (AMP_MAX_LOCAL_CTRLS + 1)
1333 #endif
1334 
1335 /******************************************************************************
1336 **
1337 ** ATT/GATT Protocol/Profile Settings
1338 **
1339 ******************************************************************************/
1340 #ifndef ATT_INCLUDED
1341 #define ATT_INCLUDED FALSE
1342 #endif
1343 
1344 #ifndef ATT_DEBUG
1345 #define ATT_DEBUG FALSE
1346 #endif
1347 
1348 #ifndef GATT_SERVER_ENABLED
1349 #define GATT_SERVER_ENABLED FALSE
1350 #endif
1351 
1352 #ifndef GATT_CLIENT_ENABLED
1353 #define GATT_CLIENT_ENABLED FALSE
1354 #endif
1355 
1356 #ifndef GATT_MAX_SR_PROFILES
1357 #define GATT_MAX_SR_PROFILES 32 /* max is 32 */
1358 #endif
1359 
1360 #ifndef GATT_MAX_APPS
1361 #define GATT_MAX_APPS 10 /* note: 2 apps used internally GATT and GAP */
1362 #endif
1363 
1364 #ifndef GATT_MAX_PHY_CHANNEL
1365 #define GATT_MAX_PHY_CHANNEL 4
1366 #endif
1367 
1368 /* Used for conformance testing ONLY */
1369 #ifndef GATT_CONFORMANCE_TESTING
1370 #define GATT_CONFORMANCE_TESTING FALSE
1371 #endif
1372 
1373 /* number of background connection device allowence, ideally to be the same as WL size
1374 */
1375 #ifndef GATT_MAX_BG_CONN_DEV
1376 #define GATT_MAX_BG_CONN_DEV 32
1377 #endif
1378 
1379 /******************************************************************************
1380 **
1381 ** SMP
1382 **
1383 ******************************************************************************/
1384 #ifndef SMP_INCLUDED
1385 #define SMP_INCLUDED FALSE
1386 #endif
1387 
1388 #ifndef SMP_DEBUG
1389 #define SMP_DEBUG FALSE
1390 #endif
1391 
1392 #ifndef SMP_DEFAULT_AUTH_REQ
1393 #define SMP_DEFAULT_AUTH_REQ SMP_AUTH_NB_ENC_ONLY
1394 #endif
1395 
1396 #ifndef SMP_MAX_ENC_KEY_SIZE
1397 #define SMP_MAX_ENC_KEY_SIZE 16
1398 #endif
1399 
1400 #ifndef SMP_MIN_ENC_KEY_SIZE
1401 #define SMP_MIN_ENC_KEY_SIZE 7
1402 #endif
1403 
1404 /* Used for conformance testing ONLY */
1405 #ifndef SMP_CONFORMANCE_TESTING
1406 #define SMP_CONFORMANCE_TESTING FALSE
1407 #endif
1408 
1409 /******************************************************************************
1410 **
1411 ** SDP
1412 **
1413 ******************************************************************************/
1414 
1415 /* This is set to enable SDP server functionality. */
1416 #ifndef SDP_SERVER_ENABLED
1417 #define SDP_SERVER_ENABLED TRUE
1418 #endif
1419 
1420 /* The maximum number of SDP records the server can support. */
1421 #ifndef SDP_MAX_RECORDS
1422 #define SDP_MAX_RECORDS 20
1423 #endif
1424 
1425 /* The maximum number of attributes in each record. */
1426 #ifndef SDP_MAX_REC_ATTR
1427 #if defined(HID_DEV_INCLUDED) && (HID_DEV_INCLUDED==TRUE)
1428 #define SDP_MAX_REC_ATTR 25
1429 #else
1430 #define SDP_MAX_REC_ATTR 13
1431 #endif
1432 #endif
1433 
1434 #ifndef SDP_MAX_PAD_LEN
1435 #define SDP_MAX_PAD_LEN 350
1436 #endif
1437 
1438 /* The maximum length, in bytes, of an attribute. */
1439 #ifndef SDP_MAX_ATTR_LEN
1440 #if defined(HID_DEV_INCLUDED) && (HID_DEV_INCLUDED==TRUE)
1441 #define SDP_MAX_ATTR_LEN 80
1442 #else
1443 #define SDP_MAX_ATTR_LEN 100
1444 #endif
1445 #endif
1446 
1447 /* The maximum number of attribute filters supported by SDP databases. */
1448 #ifndef SDP_MAX_ATTR_FILTERS
1449 #define SDP_MAX_ATTR_FILTERS 12
1450 #endif
1451 
1452 /* The maximum number of UUID filters supported by SDP databases. */
1453 #ifndef SDP_MAX_UUID_FILTERS
1454 #define SDP_MAX_UUID_FILTERS 3
1455 #endif
1456 
1457 /* This is set to enable SDP client functionality. */
1458 #ifndef SDP_CLIENT_ENABLED
1459 #define SDP_CLIENT_ENABLED TRUE
1460 #endif
1461 
1462 /* The maximum number of record handles retrieved in a search. */
1463 #ifndef SDP_MAX_DISC_SERVER_RECS
1464 #define SDP_MAX_DISC_SERVER_RECS 21
1465 #endif
1466 
1467 /* The size of a scratchpad buffer, in bytes, for storing the response to an attribute request. */
1468 #ifndef SDP_MAX_LIST_BYTE_COUNT
1469 #define SDP_MAX_LIST_BYTE_COUNT 1000
1470 #endif
1471 
1472 /* The maximum number of parameters in an SDP protocol element. */
1473 #ifndef SDP_MAX_PROTOCOL_PARAMS
1474 #define SDP_MAX_PROTOCOL_PARAMS 2
1475 #endif
1476 
1477 /* The maximum number of simultaneous client and server connections. */
1478 #ifndef SDP_MAX_CONNECTIONS
1479 #define SDP_MAX_CONNECTIONS 4
1480 #endif
1481 
1482 /* The MTU size for the L2CAP configuration. */
1483 #ifndef SDP_MTU_SIZE
1484 #define SDP_MTU_SIZE 256
1485 #endif
1486 
1487 /* The flush timeout for the L2CAP configuration. */
1488 #ifndef SDP_FLUSH_TO
1489 #define SDP_FLUSH_TO 0xFFFF
1490 #endif
1491 
1492 /* The name for security authorization. */
1493 #ifndef SDP_SERVICE_NAME
1494 #define SDP_SERVICE_NAME "Service Discovery"
1495 #endif
1496 
1497 /* The security level for BTM. */
1498 #ifndef SDP_SECURITY_LEVEL
1499 #define SDP_SECURITY_LEVEL BTM_SEC_NONE
1500 #endif
1501 
1502 /* Device identification feature. */
1503 #ifndef SDP_DI_INCLUDED
1504 #define SDP_DI_INCLUDED FALSE
1505 #endif
1506 
1507 /******************************************************************************
1508 **
1509 ** RFCOMM
1510 **
1511 ******************************************************************************/
1512 
1513 #ifndef RFCOMM_INCLUDED
1514 #define RFCOMM_INCLUDED FALSE
1515 #endif
1516 
1517 /* The maximum number of ports supported. */
1518 #ifndef MAX_RFC_PORTS
1519 #define MAX_RFC_PORTS 5
1520 #endif
1521 
1522 /* The maximum simultaneous links to different devices. */
1523 #ifndef MAX_BD_CONNECTIONS
1524 #define MAX_BD_CONNECTIONS 1
1525 #endif
1526 
1527 /* The port receive queue low watermark level, in bytes. */
1528 #ifndef PORT_RX_LOW_WM
1529 #define PORT_RX_LOW_WM 5000
1530 #endif
1531 
1532 /* The port receive queue high watermark level, in bytes. */
1533 #ifndef PORT_RX_HIGH_WM
1534 #define PORT_RX_HIGH_WM 8000
1535 #endif
1536 
1537 /* The port receive queue critical watermark level, in bytes. */
1538 #ifndef PORT_RX_CRITICAL_WM
1539 #define PORT_RX_CRITICAL_WM 12000
1540 #endif
1541 
1542 /* The port receive queue low watermark level, in number of buffers. */
1543 #ifndef PORT_RX_BUF_LOW_WM
1544 #define PORT_RX_BUF_LOW_WM 8
1545 #endif
1546 
1547 /* The port receive queue high watermark level, in number of buffers. */
1548 #ifndef PORT_RX_BUF_HIGH_WM
1549 #define PORT_RX_BUF_HIGH_WM 16
1550 #endif
1551 
1552 /* The port receive queue critical watermark level, in number of buffers. */
1553 #ifndef PORT_RX_BUF_CRITICAL_WM
1554 #define PORT_RX_BUF_CRITICAL_WM 22
1555 #endif
1556 
1557 /* The port transmit queue high watermark level, in bytes. */
1558 #ifndef PORT_TX_HIGH_WM
1559 #define PORT_TX_HIGH_WM 8000
1560 #endif
1561 
1562 /* The port transmit queue critical watermark level, in bytes. */
1563 #ifndef PORT_TX_CRITICAL_WM
1564 #define PORT_TX_CRITICAL_WM 10000
1565 #endif
1566 
1567 /* The port transmit queue high watermark level, in number of buffers. */
1568 #ifndef PORT_TX_BUF_HIGH_WM
1569 #define PORT_TX_BUF_HIGH_WM 16
1570 #endif
1571 
1572 /* The port transmit queue high watermark level, in number of buffers. */
1573 #ifndef PORT_TX_BUF_CRITICAL_WM
1574 #define PORT_TX_BUF_CRITICAL_WM 22
1575 #endif
1576 
1577 /* The RFCOMM multiplexer preferred flow control mechanism. */
1578 #ifndef PORT_FC_DEFAULT
1579 #define PORT_FC_DEFAULT PORT_FC_CREDIT
1580 #endif
1581 
1582 /* The maximum number of credits receiver sends to peer when using credit-based flow control. */
1583 #ifndef PORT_CREDIT_RX_MAX
1584 #define PORT_CREDIT_RX_MAX 16
1585 #endif
1586 
1587 /* The credit low watermark level. */
1588 #ifndef PORT_CREDIT_RX_LOW
1589 #define PORT_CREDIT_RX_LOW 8
1590 #endif
1591 
1592 /* Test code allowing l2cap FEC on RFCOMM.*/
1593 #ifndef PORT_ENABLE_L2CAP_FCR_TEST
1594 #define PORT_ENABLE_L2CAP_FCR_TEST FALSE
1595 #endif
1596 
1597 /* if application like BTA, Java or script test engine is running on other than BTU thread, */
1598 /* PORT_SCHEDULE_LOCK shall be defined as GKI_sched_lock() or GKI_disable() */
1599 #ifndef PORT_SCHEDULE_LOCK
1600 #define PORT_SCHEDULE_LOCK GKI_disable()
1601 #endif
1602 
1603 /* if application like BTA, Java or script test engine is running on other than BTU thread, */
1604 /* PORT_SCHEDULE_LOCK shall be defined as GKI_sched_unlock() or GKI_enable() */
1605 #ifndef PORT_SCHEDULE_UNLOCK
1606 #define PORT_SCHEDULE_UNLOCK GKI_enable()
1607 #endif
1608 
1609 /******************************************************************************
1610 **
1611 ** TCS
1612 **
1613 ******************************************************************************/
1614 
1615 #ifndef TCS_INCLUDED
1616 #define TCS_INCLUDED FALSE
1617 #endif
1618 
1619 /* If set to TRUE, gives lean TCS state machine configuration. */
1620 #ifndef TCS_LEAN
1621 #define TCS_LEAN FALSE
1622 #endif
1623 
1624 /* To include/exclude point-to-multipoint broadcast SETUP configuration. */
1625 #ifndef TCS_BCST_SETUP_INCLUDED
1626 #define TCS_BCST_SETUP_INCLUDED TRUE
1627 #endif
1628 
1629 /* To include/exclude supplementary services. */
1630 #ifndef TCS_SUPP_SVCS_INCLUDED
1631 #define TCS_SUPP_SVCS_INCLUDED TRUE
1632 #endif
1633 
1634 /* To include/exclude WUG master role. */
1635 #ifndef TCS_WUG_MASTER_INCLUDED
1636 #define TCS_WUG_MASTER_INCLUDED TRUE
1637 #endif
1638 
1639 /* To include/exclude WUG member role. */
1640 #ifndef TCS_WUG_MEMBER_INCLUDED
1641 #define TCS_WUG_MEMBER_INCLUDED TRUE
1642 #endif
1643 
1644 /* Maximum number of WUG members. */
1645 #ifndef TCS_MAX_WUG_MEMBERS
1646 #define TCS_MAX_WUG_MEMBERS 7
1647 #endif
1648 
1649 /* Widcomm specific acknowledgement message to ensure fast and robust operation of WUG FIMA procedure. */
1650 #ifndef TCS_WUG_LISTEN_ACPT_ACK_INCLUDED
1651 #define TCS_WUG_LISTEN_ACPT_ACK_INCLUDED TRUE
1652 #endif
1653 
1654 /* The number of simultaneous calls supported. */
1655 #ifndef TCS_MAX_NUM_SIMUL_CALLS
1656 #define TCS_MAX_NUM_SIMUL_CALLS 3
1657 #endif
1658 
1659 /* The number of devices the device can connect to. */
1660 #ifndef TCS_MAX_NUM_ACL_CONNS
1661 #define TCS_MAX_NUM_ACL_CONNS 7
1662 #endif
1663 
1664 /* The maximum length, in bytes, of the company specific information element. */
1665 #ifndef TCS_MAX_CO_SPEC_LEN
1666 #define TCS_MAX_CO_SPEC_LEN 40
1667 #endif
1668 
1669 /* The maximum length, in bytes, of the audio control information element . */
1670 #ifndef TCS_MAX_AUDIO_CTL_LEN
1671 #define TCS_MAX_AUDIO_CTL_LEN 40
1672 #endif
1673 
1674 /* (Dis)allow EDR ESCO */
1675 #ifndef TCS_AUDIO_USE_ESCO_EDR
1676 #define TCS_AUDIO_USE_ESCO_EDR FALSE
1677 #endif
1678 
1679 /******************************************************************************
1680 **
1681 ** OBX
1682 **
1683 ******************************************************************************/
1684 #ifndef OBX_INCLUDED
1685 #define OBX_INCLUDED FALSE
1686 #endif
1687 
1688 #ifndef OBX_CLIENT_INCLUDED
1689 #define OBX_CLIENT_INCLUDED TRUE
1690 #endif
1691 
1692 #ifndef OBX_SERVER_INCLUDED
1693 #define OBX_SERVER_INCLUDED TRUE
1694 #endif
1695 
1696 /* TRUE to include OBEX authentication/MD5 code */
1697 #ifndef OBX_MD5_INCLUDED
1698 #define OBX_MD5_INCLUDED TRUE
1699 #endif
1700 
1701 /* TRUE to include OBEX authentication/MD5 test code */
1702 #ifndef OBX_MD5_TEST_INCLUDED
1703 #define OBX_MD5_TEST_INCLUDED FALSE
1704 #endif
1705 
1706 /* TRUE to include OBEX 1.4 enhancement (including Obex Over L2CAP) */
1707 #ifndef OBX_14_INCLUDED
1708 #define OBX_14_INCLUDED FALSE
1709 #endif
1710 /* MD5 code is required to use OBEX 1.4 features (Reliable session) */
1711 #if (OBX_MD5_INCLUDED == FALSE)
1712 #undef OBX_14_INCLUDED
1713 #define OBX_14_INCLUDED FALSE
1714 #endif
1715 
1716 /* L2CAP FCR/eRTM mode is required to use OBEX Over L2CAP */
1717 #if (L2CAP_FCR_INCLUDED == FALSE)
1718 #undef OBX_14_INCLUDED
1719 #define OBX_14_INCLUDED FALSE
1720 #endif
1721 
1722 /* The timeout value (in seconds) for reliable sessions to remain in suspend. 0xFFFFFFFF for no timeout event. */
1723 #ifndef OBX_SESS_TIMEOUT_VALUE
1724 #define OBX_SESS_TIMEOUT_VALUE 600
1725 #endif
1726 
1727 /* The idle timeout value. 0 for no timeout event. */
1728 #ifndef OBX_TIMEOUT_VALUE
1729 #define OBX_TIMEOUT_VALUE 60
1730 #endif
1731 
1732 /* Timeout value used for disconnect */
1733 #ifndef OBX_DISC_TOUT_VALUE
1734 #define OBX_DISC_TOUT_VALUE 5
1735 #endif
1736 
1737 /* The maximum number of registered servers. */
1738 #ifndef OBX_NUM_SERVERS
1739 #define OBX_NUM_SERVERS 12
1740 #endif
1741 
1742 /* The maximum number of sessions per registered server. */
1743 #ifndef OBX_MAX_SR_SESSION
1744 #define OBX_MAX_SR_SESSION 4
1745 #endif
1746 
1747 /* The maximum number of sessions for all registered servers.
1748  * (must be equal or bigger than OBX_NUM_SERVERS) */
1749 #ifndef OBX_NUM_SR_SESSIONS
1750 #define OBX_NUM_SR_SESSIONS 26
1751 #endif
1752 
1753 /* The maximum number of sessions per registered server.
1754  * must be less than MAX_BD_CONNECTIONS */
1755 #ifndef OBX_MAX_SR_SESSION
1756 #define OBX_MAX_SR_SESSION 4
1757 #endif
1758 
1759 /* The maximum number of suspended sessions per registered servers. */
1760 #ifndef OBX_MAX_SUSPEND_SESSIONS
1761 #define OBX_MAX_SUSPEND_SESSIONS 4
1762 #endif
1763 
1764 /* The maximum number of active clients. */
1765 #ifndef OBX_NUM_CLIENTS
1766 #define OBX_NUM_CLIENTS 8
1767 #endif
1768 
1769 /* The maximum length of OBEX target header.*/
1770 #ifndef OBX_MAX_TARGET_LEN
1771 #define OBX_MAX_TARGET_LEN 16
1772 #endif
1773 
1774 /* The maximum length of authentication challenge realm.*/
1775 #ifndef OBX_MAX_REALM_LEN
1776 #define OBX_MAX_REALM_LEN 30
1777 #endif
1778 
1779 /* The maximum of GKI buffer queued at OBX before flow control L2CAP */
1780 #ifndef OBX_MAX_RX_QUEUE_COUNT
1781 #define OBX_MAX_RX_QUEUE_COUNT 3
1782 #endif
1783 
1784 /* This option is application when OBX_14_INCLUDED=TRUE
1785  Pool ID where to reassemble the SDU.
1786  This Pool will allow buffers to be used that are larger than
1787  the L2CAP_MAX_MTU. */
1788 #ifndef OBX_USER_RX_POOL_ID
1789 #define OBX_USER_RX_POOL_ID OBX_LRG_DATA_POOL_ID
1790 #endif
1791 
1792 /* This option is application when OBX_14_INCLUDED=TRUE
1793  Pool ID where to hold the SDU.
1794  This Pool will allow buffers to be used that are larger than
1795  the L2CAP_MAX_MTU. */
1796 #ifndef OBX_USER_TX_POOL_ID
1797 #define OBX_USER_TX_POOL_ID OBX_LRG_DATA_POOL_ID
1798 #endif
1799 
1800 /* This option is application when OBX_14_INCLUDED=TRUE
1801 GKI Buffer Pool ID used to hold MPS segments during SDU reassembly
1802 */
1803 #ifndef OBX_FCR_RX_POOL_ID
1804 #define OBX_FCR_RX_POOL_ID HCI_ACL_POOL_ID
1805 #endif
1806 
1807 /* This option is application when OBX_14_INCLUDED=TRUE
1808 GKI Buffer Pool ID used to hold MPS segments used in (re)transmissions.
1809 L2CAP_DEFAULT_ERM_POOL_ID is specified to use the HCI ACL data pool.
1810 Note: This pool needs to have enough buffers to hold two times the window size negotiated
1811  in the L2CA_SetFCROptions (2 * tx_win_size) to allow for retransmissions.
1812  The size of each buffer must be able to hold the maximum MPS segment size passed in
1813  L2CA_SetFCROptions plus BT_HDR (8) + HCI preamble (4) + L2CAP_MIN_OFFSET (11 - as of BT 2.1 + EDR Spec).
1814 */
1815 #ifndef OBX_FCR_TX_POOL_ID
1816 #define OBX_FCR_TX_POOL_ID HCI_ACL_POOL_ID
1817 #endif
1818 
1819 /* This option is application when OBX_14_INCLUDED=TRUE
1820 Size of the transmission window when using enhanced retransmission mode. Not used
1821 in basic and streaming modes. Range: 1 - 63
1822 This is used when AMP_INCLUDED == FALSE
1823 */
1824 #ifndef OBX_FCR_OPT_TX_WINDOW_SIZE_BR_EDR
1825 #define OBX_FCR_OPT_TX_WINDOW_SIZE_BR_EDR 20
1826 #endif
1827 
1828 /* This option is application when OBX_14_INCLUDED=TRUE
1829 Size of the transmission window when using enhanced retransmission mode. Not used
1830 in basic and streaming modes. Range: 1 - 63
1831 This is used when AMP_INCLUDED == TRUE
1832 */
1833 #ifndef OBX_FCR_OPT_TX_WINDOW_SIZE_AMP
1834 #define OBX_FCR_OPT_TX_WINDOW_SIZE_AMP 45
1835 #endif
1836 
1837 /* This option is application when OBX_14_INCLUDED=TRUE
1838 Number of transmission attempts for a single I-Frame before taking
1839 Down the connection. Used In ERTM mode only. Value is Ignored in basic and
1840 Streaming modes.
1841 Range: 0, 1-0xFF
1842 0 - infinite retransmissions
1843 1 - single transmission
1844 */
1845 #ifndef OBX_FCR_OPT_MAX_TX_B4_DISCNT
1846 #define OBX_FCR_OPT_MAX_TX_B4_DISCNT 20
1847 #endif
1848 
1849 /* This option is application when OBX_14_INCLUDED=TRUE
1850 Retransmission Timeout
1851 Range: Minimum 2000 (2 secs) on BR/EDR when supporting PBF.
1852  */
1853 #ifndef OBX_FCR_OPT_RETX_TOUT
1854 #define OBX_FCR_OPT_RETX_TOUT 2000
1855 #endif
1856 
1857 /* This option is application when OBX_14_INCLUDED=TRUE
1858 Monitor Timeout
1859 Range: Minimum 12000 (12 secs) on BR/EDR when supporting PBF.
1860 */
1861 #ifndef OBX_FCR_OPT_MONITOR_TOUT
1862 #define OBX_FCR_OPT_MONITOR_TOUT 12000
1863 #endif
1864 
1865 /******************************************************************************
1866 **
1867 ** BNEP
1868 **
1869 ******************************************************************************/
1870 
1871 #ifndef BNEP_INCLUDED
1872 #define BNEP_INCLUDED FALSE
1873 #endif
1874 
1875 /* Protocol filtering is an optional feature. Bydefault it will be turned on */
1876 #ifndef BNEP_SUPPORTS_PROT_FILTERS
1877 #define BNEP_SUPPORTS_PROT_FILTERS TRUE
1878 #endif
1879 
1880 /* Multicast filtering is an optional feature. Bydefault it will be turned on */
1881 #ifndef BNEP_SUPPORTS_MULTI_FILTERS
1882 #define BNEP_SUPPORTS_MULTI_FILTERS TRUE
1883 #endif
1884 
1885 /* BNEP status API call is used mainly to get the L2CAP handle */
1886 #ifndef BNEP_SUPPORTS_STATUS_API
1887 #define BNEP_SUPPORTS_STATUS_API TRUE
1888 #endif
1889 
1890 /* This is just a debug function */
1891 #ifndef BNEP_SUPPORTS_DEBUG_DUMP
1892 #define BNEP_SUPPORTS_DEBUG_DUMP TRUE
1893 #endif
1894 
1895 #ifndef BNEP_SUPPORTS_ALL_UUID_LENGTHS
1896 #define BNEP_SUPPORTS_ALL_UUID_LENGTHS TRUE /* Otherwise it will support only 16bit UUIDs */
1897 #endif
1898 
1899 /*
1900 ** When BNEP connection changes roles after the connection is established
1901 ** we will do an authentication check again on the new role
1902 */
1903 #ifndef BNEP_DO_AUTH_FOR_ROLE_SWITCH
1904 #define BNEP_DO_AUTH_FOR_ROLE_SWITCH TRUE
1905 #endif
1906 
1907 
1908 /* Maximum number of protocol filters supported. */
1909 #ifndef BNEP_MAX_PROT_FILTERS
1910 #define BNEP_MAX_PROT_FILTERS 5
1911 #endif
1912 
1913 /* Maximum number of multicast filters supported. */
1914 #ifndef BNEP_MAX_MULTI_FILTERS
1915 #define BNEP_MAX_MULTI_FILTERS 5
1916 #endif
1917 
1918 /* Minimum MTU size. */
1919 #ifndef BNEP_MIN_MTU_SIZE
1920 #define BNEP_MIN_MTU_SIZE L2CAP_MTU_SIZE
1921 #endif
1922 
1923 /* Preferred MTU size. */
1924 #ifndef BNEP_MTU_SIZE
1925 #define BNEP_MTU_SIZE BNEP_MIN_MTU_SIZE
1926 #endif
1927 
1928 /* Maximum size of user data, in bytes. */
1929 #ifndef BNEP_MAX_USER_DATA_SIZE
1930 #define BNEP_MAX_USER_DATA_SIZE 1500
1931 #endif
1932 
1933 /* Maximum number of buffers allowed in transmit data queue. */
1934 #ifndef BNEP_MAX_XMITQ_DEPTH
1935 #define BNEP_MAX_XMITQ_DEPTH 20
1936 #endif
1937 
1938 /* Maximum number BNEP of connections supported. */
1939 #ifndef BNEP_MAX_CONNECTIONS
1940 #define BNEP_MAX_CONNECTIONS 7
1941 #endif
1942 
1943 
1944 /******************************************************************************
1945 **
1946 ** AVDTP
1947 **
1948 ******************************************************************************/
1949 
1950 #ifndef AVDT_INCLUDED
1951 #define AVDT_INCLUDED FALSE
1952 #endif
1953 
1954 /* Include reporting capability in AVDTP */
1955 #ifndef AVDT_REPORTING
1956 #define AVDT_REPORTING TRUE
1957 #endif
1958 
1959 /* Include multiplexing capability in AVDTP */
1960 #ifndef AVDT_MULTIPLEXING
1961 #define AVDT_MULTIPLEXING TRUE
1962 #endif
1963 
1964 /* Number of simultaneous links to different peer devices. */
1965 #ifndef AVDT_NUM_LINKS
1966 #define AVDT_NUM_LINKS 2
1967 #endif
1968 
1969 /* Number of simultaneous stream endpoints. */
1970 #ifndef AVDT_NUM_SEPS
1971 #define AVDT_NUM_SEPS 3
1972 #endif
1973 
1974 /* Number of transport channels setup per media stream(audio or video) */
1975 #ifndef AVDT_NUM_CHANNELS
1976 
1977 #if AVDT_REPORTING == TRUE
1978 /* signaling, media and reporting channels */
1979 #define AVDT_NUM_CHANNELS 3
1980 #else
1981 /* signaling and media channels */
1982 #define AVDT_NUM_CHANNELS 2
1983 #endif
1984 
1985 #endif
1986 
1987 /* Number of transport channels setup by AVDT for all media streams
1988  * AVDT_NUM_CHANNELS * Number of simultaneous streams.
1989  */
1990 #ifndef AVDT_NUM_TC_TBL
1991 #define AVDT_NUM_TC_TBL 6
1992 #endif
1993 
1994 
1995 /* Maximum size in bytes of the codec capabilities information element. */
1996 #ifndef AVDT_CODEC_SIZE
1997 #define AVDT_CODEC_SIZE 10
1998 #endif
1999 
2000 /* Maximum size in bytes of the content protection information element. */
2001 #ifndef AVDT_PROTECT_SIZE
2002 #define AVDT_PROTECT_SIZE 90
2003 #endif
2004 
2005 /* Maximum number of GKI buffers in the fragment queue (for video frames).
2006  * Must be less than the number of buffers in the buffer pool of size AVDT_DATA_POOL_SIZE */
2007 #ifndef AVDT_MAX_FRAG_COUNT
2008 #define AVDT_MAX_FRAG_COUNT 15
2009 #endif
2010 
2011 /******************************************************************************
2012 **
2013 ** PAN
2014 **
2015 ******************************************************************************/
2016 
2017 #ifndef PAN_INCLUDED
2018 #define PAN_INCLUDED FALSE
2019 #endif
2020 
2021 /* This will enable the PANU role */
2022 #ifndef PAN_SUPPORTS_ROLE_PANU
2023 #define PAN_SUPPORTS_ROLE_PANU TRUE
2024 #endif
2025 
2026 /* This will enable the GN role */
2027 #ifndef PAN_SUPPORTS_ROLE_GN
2028 #define PAN_SUPPORTS_ROLE_GN TRUE
2029 #endif
2030 
2031 /* This will enable the NAP role */
2032 #ifndef PAN_SUPPORTS_ROLE_NAP
2033 #define PAN_SUPPORTS_ROLE_NAP TRUE
2034 #endif
2035 
2036 /* This is just for debugging purposes */
2037 #ifndef PAN_SUPPORTS_DEBUG_DUMP
2038 #define PAN_SUPPORTS_DEBUG_DUMP TRUE
2039 #endif
2040 
2041 
2042 /* Maximum number of PAN connections allowed */
2043 #ifndef MAX_PAN_CONNS
2044 #define MAX_PAN_CONNS 7
2045 #endif
2046 
2047 /* Default service name for NAP role */
2048 #ifndef PAN_NAP_DEFAULT_SERVICE_NAME
2049 #define PAN_NAP_DEFAULT_SERVICE_NAME "Network Access Point Service"
2050 #endif
2051 
2052 /* Default service name for GN role */
2053 #ifndef PAN_GN_DEFAULT_SERVICE_NAME
2054 #define PAN_GN_DEFAULT_SERVICE_NAME "Group Network Service"
2055 #endif
2056 
2057 /* Default service name for PANU role */
2058 #ifndef PAN_PANU_DEFAULT_SERVICE_NAME
2059 #define PAN_PANU_DEFAULT_SERVICE_NAME "PAN User Service"
2060 #endif
2061 
2062 /* Default description for NAP role service */
2063 #ifndef PAN_NAP_DEFAULT_DESCRIPTION
2064 #define PAN_NAP_DEFAULT_DESCRIPTION "Public NAP"
2065 #endif
2066 
2067 /* Default description for GN role service */
2068 #ifndef PAN_GN_DEFAULT_DESCRIPTION
2069 #define PAN_GN_DEFAULT_DESCRIPTION "Widcomm GN"
2070 #endif
2071 
2072 /* Default description for PANU role service */
2073 #ifndef PAN_PANU_DEFAULT_DESCRIPTION
2074 #define PAN_PANU_DEFAULT_DESCRIPTION "Laptop's PANU"
2075 #endif
2076 
2077 /* Default Security level for PANU role. */
2078 #ifndef PAN_PANU_SECURITY_LEVEL
2079 #define PAN_PANU_SECURITY_LEVEL 0
2080 #endif
2081 
2082 /* Default Security level for GN role. */
2083 #ifndef PAN_GN_SECURITY_LEVEL
2084 #define PAN_GN_SECURITY_LEVEL 0
2085 #endif
2086 
2087 /* Default Security level for NAP role. */
2088 #ifndef PAN_NAP_SECURITY_LEVEL
2089 #define PAN_NAP_SECURITY_LEVEL 0
2090 #endif
2091 
2092 
2093 
2094 
2095 /******************************************************************************
2096 **
2097 ** GAP
2098 **
2099 ******************************************************************************/
2100 
2101 #ifndef GAP_INCLUDED
2102 #define GAP_INCLUDED FALSE
2103 #endif
2104 
2105 /* This is set to enable use of GAP L2CAP connections. */
2106 #ifndef GAP_CONN_INCLUDED
2107 #define GAP_CONN_INCLUDED TRUE
2108 #endif
2109 
2110 /* This is set to enable posting event for data write */
2111 #ifndef GAP_CONN_POST_EVT_INCLUDED
2112 #define GAP_CONN_POST_EVT_INCLUDED FALSE
2113 #endif
2114 
2115 /* The maximum number of simultaneous GAP L2CAP connections. */
2116 #ifndef GAP_MAX_CONNECTIONS
2117 #define GAP_MAX_CONNECTIONS 8
2118 #endif
2119 
2120 /******************************************************************************
2121 **
2122 ** CTP
2123 **
2124 ******************************************************************************/
2125 
2126 #ifndef CTP_INCLUDED
2127 #define CTP_INCLUDED FALSE
2128 #endif
2129 
2130 /* To include CTP gateway functionality or not. */
2131 #ifndef CTP_GW_INCLUDED
2132 #define CTP_GW_INCLUDED TRUE
2133 #endif
2134 
2135 /* The number of terminals supported. */
2136 #ifndef CTP_MAX_NUM_TLS
2137 #define CTP_MAX_NUM_TLS 7
2138 #endif
2139 
2140 /* If the controller can not support sniff mode when the SCO is up, set this to FALSE. */
2141 #ifndef CTP_USE_SNIFF_ON_SCO
2142 #define CTP_USE_SNIFF_ON_SCO FALSE
2143 #endif
2144 
2145 /* When ACL link between TL and GW is idle for more than this amount of seconds, the ACL may be put to low power mode. */
2146 #ifndef CTP_TL_IDLE_TIMEOUT
2147 #define CTP_TL_IDLE_TIMEOUT 90
2148 #endif
2149 
2150 /* To include CTP terminal functionality or not. */
2151 #ifndef CTP_TL_INCLUDED
2152 #define CTP_TL_INCLUDED TRUE
2153 #endif
2154 
2155 /* To include CTP device discovery functionality or not. */
2156 #ifndef CTP_DISCOVERY_INCLUDED
2157 #define CTP_DISCOVERY_INCLUDED TRUE
2158 #endif
2159 
2160 /* set to TRUE for controllers that do not support multi-point */
2161 #ifndef CTP_TL_WAIT_DISC
2162 #define CTP_TL_WAIT_DISC TRUE
2163 #endif
2164 
2165 /* The CTP inquiry database size. */
2166 #ifndef CTP_INQ_DB_SIZE
2167 #define CTP_INQ_DB_SIZE CTP_DISC_REC_SIZE
2168 #endif
2169 
2170 /* The CTP discovery record size. */
2171 #ifndef CTP_DISC_REC_SIZE
2172 #define CTP_DISC_REC_SIZE 60
2173 #endif
2174 
2175 /* CTP TL would try to re-establish L2CAP channel after channel is disconnected for this amount of seconds. */
2176 #ifndef CTP_GUARD_LINK_LOST
2177 #define CTP_GUARD_LINK_LOST 1
2178 #endif
2179 
2180 /* The link policy bitmap. */
2181 #ifndef CTP_DEFAULT_LINK_POLICY
2182 #define CTP_DEFAULT_LINK_POLICY 0x000F
2183 #endif
2184 
2185 /* The minimum period interval used for the sniff and park modes. */
2186 #ifndef CTP_DEF_LOWPWR_MIN_PERIOD
2187 #define CTP_DEF_LOWPWR_MIN_PERIOD 0x100
2188 #endif
2189 
2190 /* The maximum period interval used for the sniff and park modes. */
2191 #ifndef CTP_DEF_LOWPWR_MAX_PERIOD
2192 #define CTP_DEF_LOWPWR_MAX_PERIOD 0x1E0
2193 #endif
2194 
2195 /* The number of baseband receive slot sniff attempts. */
2196 #ifndef CTP_DEF_LOWPWR_ATTEMPT
2197 #define CTP_DEF_LOWPWR_ATTEMPT 0x200
2198 #endif
2199 
2200 /* The number of baseband receive slots for sniff timeout. */
2201 #ifndef CTP_DEF_LOWPWR_TIMEOUT
2202 #define CTP_DEF_LOWPWR_TIMEOUT 0x200
2203 #endif
2204 
2205 /* This is set if CTP is to use park mode. */
2206 #ifndef CTP_PARK_INCLUDED
2207 #define CTP_PARK_INCLUDED TRUE
2208 #endif
2209 
2210 /* This is set if CTP is to use sniff mode. */
2211 #ifndef CTP_SNIFF_INCLUDED
2212 #define CTP_SNIFF_INCLUDED TRUE
2213 #endif
2214 
2215 /* To include CTP data exchange functionality or not. */
2216 #ifndef CTP_DATA_EXCHG_FEATURE
2217 #define CTP_DATA_EXCHG_FEATURE FALSE
2218 #endif
2219 
2220 /* To include CTP GW intercom functionality or not. */
2221 #ifndef CTP_GW_INTERCOM_FEATURE
2222 #define CTP_GW_INTERCOM_FEATURE FALSE
2223 #endif
2224 
2225 /* The MTU size for L2CAP channel. */
2226 #ifndef CTP_MTU_SIZE
2227 #define CTP_MTU_SIZE 200
2228 #endif
2229 
2230 /* The L2CAP PSM for the data exchange feature. */
2231 #ifndef CTP_DATA_EXCHG_PSM
2232 #define CTP_DATA_EXCHG_PSM 13
2233 #endif
2234 
2235 /* The flush timeout for L2CAP channels. */
2236 #ifndef CTP_FLUSH_TO
2237 #define CTP_FLUSH_TO 0xFFFF
2238 #endif
2239 
2240 /* The default service name for CTP. */
2241 #ifndef CTP_DEFAULT_SERVICE_NAME
2242 #define CTP_DEFAULT_SERVICE_NAME "Cordless Telephony"
2243 #endif
2244 
2245 /* The CTP security level. */
2246 #ifndef CTP_SECURITY_LEVEL
2247 #define CTP_SECURITY_LEVEL (BTM_SEC_IN_AUTHORIZE | BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT)
2248 #endif
2249 
2250 /* The number of lines to the external network. */
2251 #ifndef CTP_MAX_LINES
2252 #define CTP_MAX_LINES 1
2253 #endif
2254 
2255 /* Test if the number of resources in TCS is consistent with CTP setting. */
2256 #ifndef CTP_TEST_FULL_TCS
2257 #define CTP_TEST_FULL_TCS TRUE
2258 #endif
2259 
2260 /* The default inquiry mode. */
2261 #ifndef CTP_DEFAULT_INQUIRY_MODE
2262 #define CTP_DEFAULT_INQUIRY_MODE BTM_GENERAL_INQUIRY
2263 #endif
2264 
2265 /* The default inquiry duration. */
2266 #ifndef CTP_DEFAULT_INQ_DURATION
2267 #define CTP_DEFAULT_INQ_DURATION 4
2268 #endif
2269 
2270 /* The maximum number of inquiry responses. */
2271 #ifndef CTP_DEFAULT_INQ_MAX_RESP
2272 #define CTP_DEFAULT_INQ_MAX_RESP 3
2273 #endif
2274 
2275 /* When TL does not create another L2CAP channel within this period of time GW declares that it's "Connected Limited". */
2276 #ifndef CTP_TL_CONN_TIMEOUT
2277 #define CTP_TL_CONN_TIMEOUT 5
2278 #endif
2279 
2280 /* The delay for ACL to completely disconnect (for intercom) before sending the connect request to GW. */
2281 #ifndef CTP_RECONNECT_DELAY
2282 #define CTP_RECONNECT_DELAY 5
2283 #endif
2284 
2285 /* How many times to retry connection when it has failed. */
2286 #ifndef CTP_RETRY_ON_CONN_ERR
2287 #define CTP_RETRY_ON_CONN_ERR 5
2288 #endif
2289 
2290 /******************************************************************************
2291 **
2292 ** ICP
2293 **
2294 ******************************************************************************/
2295 
2296 #ifndef ICP_INCLUDED
2297 #define ICP_INCLUDED FALSE
2298 #endif
2299 
2300 /* The ICP default MTU. */
2301 #ifndef ICP_MTU_SIZE
2302 #define ICP_MTU_SIZE 100
2303 #endif
2304 
2305 /* The ICP security level. */
2306 #ifndef ICP_SECURITY_LEVEL
2307 #define ICP_SECURITY_LEVEL BTM_SEC_NONE
2308 #endif
2309 
2310 /* The default service name for ICP. */
2311 #ifndef ICP_DEFAULT_SERVICE_NAME
2312 #define ICP_DEFAULT_SERVICE_NAME "Intercom"
2313 #endif
2314 
2315 /* The flush timeout for L2CAP channels. */
2316 #ifndef ICP_FLUSH_TO
2317 #define ICP_FLUSH_TO 0xFFFF
2318 #endif
2319 
2320 /******************************************************************************
2321 **
2322 ** SPP
2323 **
2324 ******************************************************************************/
2325 
2326 #ifndef SPP_INCLUDED
2327 #define SPP_INCLUDED FALSE
2328 #endif
2329 
2330 /* The SPP default MTU. */
2331 #ifndef SPP_DEFAULT_MTU
2332 #define SPP_DEFAULT_MTU 127
2333 #endif
2334 
2335 /* The interval, in seconds, that a client tries to reconnect to a service. */
2336 #ifndef SPP_RETRY_CONN_INTERVAL
2337 #define SPP_RETRY_CONN_INTERVAL 1
2338 #endif
2339 
2340 /* The SPP discoverable mode: limited or general. */
2341 #ifndef SPP_DISCOVERABLE_MODE
2342 #define SPP_DISCOVERABLE_MODE BTM_GENERAL_DISCOVERABLE
2343 #endif
2344 
2345 /* The maximum number of inquiry results returned in by inquiry procedure. */
2346 #ifndef SPP_DEF_INQ_MAX_RESP
2347 #define SPP_DEF_INQ_MAX_RESP 10
2348 #endif
2349 
2350 /* The SPP discovery record size. */
2351 #ifndef SPP_DISC_REC_SIZE
2352 #define SPP_DISC_REC_SIZE 60
2353 #endif
2354 
2355 #ifndef SPP_MAX_RECS_PER_DEVICE
2356 #define SPP_MAX_RECS_PER_DEVICE (SPP_DB_SIZE / SPP_DISC_REC_SIZE)
2357 #endif
2358 
2359 /* Inquiry duration in 1.28 second units. */
2360 #ifndef SPP_DEF_INQ_DURATION
2361 #define SPP_DEF_INQ_DURATION 9
2362 #endif
2363 
2364 /* keep the raw data received from SDP server in database. */
2365 #ifndef SDP_RAW_DATA_INCLUDED
2366 #define SDP_RAW_DATA_INCLUDED FALSE
2367 #endif
2368 
2369 /* TRUE, to allow JV to create L2CAP connection on SDP PSM. */
2370 #ifndef SDP_FOR_JV_INCLUDED
2371 #define SDP_FOR_JV_INCLUDED FALSE
2372 #endif
2373 
2374 /* Inquiry duration in 1.28 second units. */
2375 #ifndef SDP_DEBUG
2376 #define SDP_DEBUG TRUE
2377 #endif
2378 
2379 /******************************************************************************
2380 **
2381 ** HSP2, HFP
2382 **
2383 ******************************************************************************/
2384 
2385 #ifndef HSP2_INCLUDED
2386 #define HSP2_INCLUDED FALSE
2387 #endif
2388 
2389 /* Include the ability to perform inquiry for peer devices. */
2390 #ifndef HSP2_INQUIRY_INCLUDED
2391 #define HSP2_INQUIRY_INCLUDED TRUE
2392 #endif
2393 
2394 /* Include Audio Gateway specific code. */
2395 #ifndef HSP2_AG_INCLUDED
2396 #define HSP2_AG_INCLUDED TRUE
2397 #endif
2398 
2399 /* Include Headset Specific Code. */
2400 #ifndef HSP2_HS_INCLUDED
2401 #define HSP2_HS_INCLUDED TRUE
2402 #endif
2403 
2404 /* Include the ability to open an SCO connection for In-Band Ringing. */
2405 #ifndef HSP2_IB_RING_INCLUDED
2406 #define HSP2_IB_RING_INCLUDED TRUE
2407 #endif
2408 
2409 /* Include the ability to repeat a ring. */
2410 #ifndef HSP2_AG_REPEAT_RING
2411 #define HSP2_AG_REPEAT_RING TRUE
2412 #endif
2413 
2414 #ifndef HSP2_APP_CLOSES_ON_CKPD
2415 #define HSP2_APP_CLOSES_ON_CKPD FALSE
2416 #endif
2417 
2418 
2419 /* Include the ability to park a connection. */
2420 #ifndef HSP2_PARK_INCLUDED
2421 #define HSP2_PARK_INCLUDED TRUE
2422 #endif
2423 
2424 /* Include HSP State Machine debug trace messages. */
2425 #ifndef HSP2_FSM_DEBUG
2426 #define HSP2_FSM_DEBUG TRUE
2427 #endif
2428 
2429 /* The Module's Inquiry Scan Window. */
2430 #ifndef HSP2_INQ_SCAN_WINDOW
2431 #define HSP2_INQ_SCAN_WINDOW 0
2432 #endif
2433 
2434 /* The Module's Inquiry Scan Interval. */
2435 #ifndef HSP2_INQ_SCAN_INTERVAL
2436 #define HSP2_INQ_SCAN_INTERVAL 0
2437 #endif
2438 
2439 /* The Module's Page Scan Interval. */
2440 #ifndef HSP2_PAGE_SCAN_INTERVAL
2441 #define HSP2_PAGE_SCAN_INTERVAL 0
2442 #endif
2443 
2444 /* The Module's Page Scan Window. */
2445 #ifndef HSP2_PAGE_SCAN_WINDOW
2446 #define HSP2_PAGE_SCAN_WINDOW 0
2447 #endif
2448 
2449 /* The Park Mode's Minimum Beacon Period. */
2450 #ifndef HSP2_BEACON_MIN_PERIOD
2451 #define HSP2_BEACON_MIN_PERIOD 450
2452 #endif
2453 
2454 /* The Park Mode's Maximum Beacon Period. */
2455 #ifndef HSP2_BEACON_MAX_PERIOD
2456 #define HSP2_BEACON_MAX_PERIOD 500
2457 #endif
2458 
2459 /* The duration of the inquiry in seconds. */
2460 #ifndef HSP2_INQ_DURATION
2461 #define HSP2_INQ_DURATION 4
2462 #endif
2463 
2464 /* Maximum number of peer responses during an inquiry. */
2465 #ifndef HSP2_INQ_MAX_NUM_RESPS
2466 #define HSP2_INQ_MAX_NUM_RESPS 3
2467 #endif
2468 
2469 /* Maximum number of times to retry an inquiry prior to failure. */
2470 #ifndef HSP2_MAX_INQ_RETRY
2471 #define HSP2_MAX_INQ_RETRY 6
2472 #endif
2473 
2474 /* Maximum number of times to retry an RFCOMM connection prior to failure. */
2475 #ifndef HSP2_MAX_CONN_RETRY
2476 #define HSP2_MAX_CONN_RETRY 3
2477 #endif
2478 
2479 /* If the connect request failed for authentication reasons, do not retry */
2480 #ifndef HSP2_NO_RETRY_ON_AUTH_FAIL
2481 #define HSP2_NO_RETRY_ON_AUTH_FAIL TRUE
2482 #endif
2483 
2484 /* Maximum number of characters in an HSP2 device name. */
2485 #ifndef HSP2_MAX_NAME_LEN
2486 #define HSP2_MAX_NAME_LEN 32
2487 #endif
2488 
2489 /* The minimum speaker and/or microphone gain setting. */
2490 #ifndef HSP2_MIN_GAIN
2491 #define HSP2_MIN_GAIN 0
2492 #endif
2493 
2494 /* The maximum speaker and/or microphone setting. */
2495 #ifndef HSP2_MAX_GAIN
2496 #define HSP2_MAX_GAIN 15
2497 #endif
2498 
2499 /* The default value to send on an AT+CKPD. */
2500 #ifndef HSP2_KEYPRESS_DEFAULT
2501 #define HSP2_KEYPRESS_DEFAULT 200
2502 #endif
2503 
2504 /* Maximum amount a data that can be received per RFCOMM frame. */
2505 #ifndef HSP2_MAX_RFC_READ_LEN
2506 #define HSP2_MAX_RFC_READ_LEN 128
2507 #endif
2508 
2509 /* The time in seconds to wait for completion of a partial AT command or response from the peer. */
2510 #ifndef HSP2_AT_TO_INTERVAL
2511 #define HSP2_AT_TO_INTERVAL 30
2512 #endif
2513 
2514 /* The time to wait before repeating a ring to a peer Headset. */
2515 #ifndef HSP2_REPEAT_RING_TO
2516 #define HSP2_REPEAT_RING_TO 4
2517 #endif
2518 
2519 /* Time to wait for a response for an AT command */
2520 #ifndef HSP2_AT_RSP_TO
2521 #define HSP2_AT_RSP_TO 20
2522 #endif
2523 
2524 /* SCO packet type(s) to use (bitmask: see spec), 0 - device default (recommended) */
2525 #ifndef HSP2_SCO_PKT_TYPES
2526 #define HSP2_SCO_PKT_TYPES ((UINT16)0x0000)
2527 #endif
2528 
2529 /* The default settings of the SCO voice link. */
2530 #ifndef HSP2_DEFAULT_VOICE_SETTINGS
2531 #define HSP2_DEFAULT_VOICE_SETTINGS (HCI_INP_CODING_LINEAR | HCI_INP_DATA_FMT_2S_COMPLEMENT | HCI_INP_SAMPLE_SIZE_16BIT | HCI_AIR_CODING_FORMAT_CVSD)
2532 #endif
2533 
2534 #ifndef HSP2_MAX_AT_CMD_LENGTH
2535 #define HSP2_MAX_AT_CMD_LENGTH 16
2536 #endif
2537 
2538 #ifndef HSP2_MAX_AT_VAL_LENGTH
2539 #if (defined(HFP_INCLUDED) && HFP_INCLUDED == TRUE)
2540 #define HSP2_MAX_AT_VAL_LENGTH 310
2541 #else
2542 #define HSP2_MAX_AT_VAL_LENGTH 5
2543 #endif
2544 #endif
2545 
2546 
2547 #ifndef HSP2_SDP_DB_SIZE
2548 #define HSP2_SDP_DB_SIZE 300
2549 #endif
2550 
2551 
2552 /******************************************************************************
2553 **
2554 ** HFP
2555 **
2556 ******************************************************************************/
2557 
2558 #ifndef HFP_INCLUDED
2559 #define HFP_INCLUDED FALSE
2560 #endif
2561 
2562 /* Include Audio Gateway specific code. */
2563 #ifndef HFP_AG_INCLUDED
2564 #define HFP_AG_INCLUDED TRUE
2565 #endif
2566 
2567 /* Include Hand Free Specific Code. */
2568 #ifndef HFP_HF_INCLUDED
2569 #define HFP_HF_INCLUDED TRUE
2570 #endif
2571 
2572 /* Use AT interface instead of full blown API */
2573 #ifndef AT_INTERFACE
2574 #define AT_INTERFACE FALSE
2575 #endif
2576 
2577 /* HFP Manages SCO establishement for various procedures */
2578 #ifndef HFP_SCO_MGMT_INCLUDED
2579 #define HFP_SCO_MGMT_INCLUDED TRUE
2580 #endif
2581 
2582 /* CCAP compliant features and behavior desired */
2583 #ifndef CCAP_COMPLIANCE
2584 #define CCAP_COMPLIANCE TRUE
2585 #endif
2586 
2587 /* Caller ID string, part of +CLIP result code */
2588 #ifndef HFP_MAX_CLIP_INFO
2589 #define HFP_MAX_CLIP_INFO 45
2590 #endif
2591 
2592 #ifndef HFP_RPT_PEER_INFO_INCLUDED
2593 #define HFP_RPT_PEER_INFO_INCLUDED TRUE /* Reporting of peer features enabled */
2594 #endif
2595 
2596 /******************************************************************************
2597 **
2598 ** HID
2599 **
2600 ******************************************************************************/
2601 
2602 /* HID Device Role Included */
2603 #ifndef HID_DEV_INCLUDED
2604 #define HID_DEV_INCLUDED FALSE
2605 #endif
2606 
2607 #ifndef HID_DEV_PM_INCLUDED
2608 #define HID_DEV_PM_INCLUDED TRUE
2609 #endif
2610 
2611 /* The HID Device is a virtual cable */
2612 #ifndef HID_DEV_VIRTUAL_CABLE
2613 #define HID_DEV_VIRTUAL_CABLE TRUE
2614 #endif
2615 
2616 /* The HID device initiates the reconnections */
2617 #ifndef HID_DEV_RECONN_INITIATE
2618 #define HID_DEV_RECONN_INITIATE TRUE
2619 #endif
2620 
2621 /* THe HID device is normally connectable */
2622 #ifndef HID_DEV_NORMALLY_CONN
2623 #define HID_DEV_NORMALLY_CONN FALSE
2624 #endif
2625 
2626 /* The device is battery powered */
2627 #ifndef HID_DEV_BATTERY_POW
2628 #define HID_DEV_BATTERY_POW TRUE
2629 #endif
2630 
2631 /* Device is capable of waking up the host */
2632 #ifndef HID_DEV_REMOTE_WAKE
2633 #define HID_DEV_REMOTE_WAKE TRUE
2634 #endif
2635 
2636 /* Device needs host to close SDP channel after SDP is over */
2637 #ifndef HID_DEV_SDP_DISABLE
2638 #define HID_DEV_SDP_DISABLE TRUE
2639 #endif
2640 
2641 #ifndef HID_DEV_MTU_SIZE
2642 #define HID_DEV_MTU_SIZE 64
2643 #endif
2644 
2645 #ifndef HID_DEV_FLUSH_TO
2646 #define HID_DEV_FLUSH_TO 0xffff
2647 #endif
2648 
2649 #ifndef HID_DEV_PAGE_SCAN_WIN
2650 #define HID_DEV_PAGE_SCAN_WIN (0)
2651 #endif
2652 
2653 #ifndef HID_DEV_PAGE_SCAN_INT
2654 #define HID_DEV_PAGE_SCAN_INT (0)
2655 #endif
2656 
2657 #ifndef HID_DEV_MAX_CONN_RETRY
2658 #define HID_DEV_MAX_CONN_RETRY (15)
2659 #endif
2660 
2661 #ifndef HID_DEV_REPAGE_WIN
2662 #define HID_DEV_REPAGE_WIN (1)
2663 #endif
2664 
2665 #ifndef HID_DEV_SVC_NAME
2666 #define HID_DEV_SVC_NAME "HID"
2667 #endif
2668 
2669 #ifndef HID_DEV_SVC_DESCR
2670 #define HID_DEV_SVC_DESCR "3-button mouse and keyboard"
2671 #endif
2672 
2673 #ifndef HID_DEV_PROVIDER_NAME
2674 #define HID_DEV_PROVIDER_NAME "Widcomm"
2675 #endif
2676 
2677 #ifndef HID_DEV_REL_NUM
2678 #define HID_DEV_REL_NUM 0x0100
2679 #endif
2680 
2681 #ifndef HID_DEV_PARSER_VER
2682 #define HID_DEV_PARSER_VER 0x0111
2683 #endif
2684 
2685 #ifndef HID_DEV_SUBCLASS
2686 #define HID_DEV_SUBCLASS COD_MINOR_POINTING
2687 #endif
2688 
2689 #ifndef HID_DEV_COUNTRY_CODE
2690 #define HID_DEV_COUNTRY_CODE 0x33
2691 #endif
2692 
2693 #ifndef HID_DEV_SUP_TOUT
2694 #define HID_DEV_SUP_TOUT 0x8000
2695 #endif
2696 
2697 #ifndef HID_DEV_NUM_LANGS
2698 #define HID_DEV_NUM_LANGS 1
2699 #endif
2700 
2701 #ifndef HID_DEV_INACT_TIMEOUT
2702 #define HID_DEV_INACT_TIMEOUT 60
2703 #endif
2704 
2705 #ifndef HID_DEV_BUSY_MODE_PARAMS
2706 #define HID_DEV_BUSY_MODE_PARAMS { 320, 160, 10, 20, HCI_MODE_ACTIVE }
2707 #endif
2708 
2709 #ifndef HID_DEV_IDLE_MODE_PARAMS
2710 #define HID_DEV_IDLE_MODE_PARAMS { 320, 160, 10, 20, HCI_MODE_SNIFF }
2711 #endif
2712 
2713 #ifndef HID_DEV_SUSP_MODE_PARAMS
2714 #define HID_DEV_SUSP_MODE_PARAMS { 640, 320, 0, 0, HCI_MODE_PARK }
2715 #endif
2716 
2717 #ifndef HID_DEV_MAX_DESCRIPTOR_SIZE
2718 #define HID_DEV_MAX_DESCRIPTOR_SIZE 128 /* Max descriptor size */
2719 #endif
2720 
2721 #ifndef HID_DEV_LANGUAGELIST
2722 #define HID_DEV_LANGUAGELIST {0x35, 0x06, 0x09, 0x04, 0x09, 0x09, 0x01, 0x00}
2723 #endif
2724 
2725 #ifndef HID_DEV_LINK_SUPERVISION_TO
2726 #define HID_DEV_LINK_SUPERVISION_TO 0x8000
2727 #endif
2728 
2729 #ifndef HID_CONTROL_POOL_ID
2730 #define HID_CONTROL_POOL_ID 2
2731 #endif
2732 
2733 #ifndef HID_INTERRUPT_POOL_ID
2734 #define HID_INTERRUPT_POOL_ID 2
2735 #endif
2736 
2737 #ifndef UCD_HID_INCLUDED
2738 #define UCD_HID_INCLUDED FALSE
2739 #endif
2740 
2741 #ifndef BRR_HID_INCLUDED
2742 #define BRR_HID_INCLUDED FALSE
2743 #endif
2744 
2745 /*************************************************************************
2746 ** Definitions for Both HID-Host & Device
2747 */
2748 #ifndef HID_MAX_SVC_NAME_LEN
2749 #define HID_MAX_SVC_NAME_LEN 32
2750 #endif
2751 
2752 #ifndef HID_MAX_SVC_DESCR_LEN
2753 #define HID_MAX_SVC_DESCR_LEN 32
2754 #endif
2755 
2756 #ifndef HID_MAX_PROV_NAME_LEN
2757 #define HID_MAX_PROV_NAME_LEN 32
2758 #endif
2759 
2760 /*************************************************************************
2761 ** Definitions for HID-Host
2762 */
2763 #ifndef HID_HOST_INCLUDED
2764 #define HID_HOST_INCLUDED FALSE
2765 #endif
2766 
2767 #ifndef HID_HOST_MAX_DEVICES
2768 #define HID_HOST_MAX_DEVICES 7
2769 #endif
2770 
2771 #ifndef HID_HOST_MTU
2772 #define HID_HOST_MTU 640
2773 #endif
2774 
2775 #ifndef HID_HOST_FLUSH_TO
2776 #define HID_HOST_FLUSH_TO 0xffff
2777 #endif
2778 
2779 #ifndef HID_HOST_MAX_CONN_RETRY
2780 #define HID_HOST_MAX_CONN_RETRY (15)
2781 #endif
2782 
2783 #ifndef HID_HOST_REPAGE_WIN
2784 #define HID_HOST_REPAGE_WIN (2)
2785 #endif
2786 
2787 
2788 /******************************************************************************
2789 **
2790 ** DUN and FAX
2791 **
2792 ******************************************************************************/
2793 
2794 #ifndef DUN_INCLUDED
2795 #define DUN_INCLUDED FALSE
2796 #endif
2797 
2798 
2799 /******************************************************************************
2800 **
2801 ** GOEP
2802 **
2803 ******************************************************************************/
2804 
2805 #ifndef GOEP_INCLUDED
2806 #define GOEP_INCLUDED FALSE
2807 #endif
2808 
2809 /* This is set to enable GOEP non-blocking file system access functions. */
2810 #ifndef GOEP_FS_INCLUDED
2811 #define GOEP_FS_INCLUDED TRUE
2812 #endif
2813 
2814 /* GOEP authentication key size. */
2815 #ifndef GOEP_MAX_AUTH_KEY_SIZE
2816 #define GOEP_MAX_AUTH_KEY_SIZE 16
2817 #endif
2818 
2819 /* Maximum size of the realm authentication string. */
2820 #ifndef GOEP_MAX_AUTH_REALM_SIZE
2821 #define GOEP_MAX_AUTH_REALM_SIZE 16
2822 #endif
2823 
2824 /* Realm Character Set */
2825 #ifndef GOEP_REALM_CHARSET
2826 #define GOEP_REALM_CHARSET 0 /* ASCII */
2827 #endif
2828 
2829 /* This is set to the maximum length of path name allowed in the system (_MAX_PATH). */
2830 #ifndef GOEP_MAX_PATH_SIZE
2831 #define GOEP_MAX_PATH_SIZE 255
2832 #endif
2833 
2834 /* Specifies whether or not client's user id is required during obex authentication */
2835 #ifndef GOEP_SERVER_USERID_REQUIRED
2836 #define GOEP_SERVER_USERID_REQUIRED FALSE
2837 #endif
2838 
2839 /* This is set to the maximum length of file name allowed in the system (_MAX_FNAME). */
2840 #ifndef GOEP_MAX_FILE_SIZE
2841 #define GOEP_MAX_FILE_SIZE 128
2842 #endif
2843 
2844 /* Character used as path separator */
2845 #ifndef GOEP_PATH_SEPARATOR
2846 #define GOEP_PATH_SEPARATOR ((char) 0x5c) /* 0x2f ('/'), or 0x5c ('\') */
2847 #endif
2848 
2849 /******************************************************************************
2850 **
2851 ** OPP
2852 **
2853 ******************************************************************************/
2854 
2855 #ifndef OPP_INCLUDED
2856 #define OPP_INCLUDED FALSE
2857 #endif
2858 
2859 /* This is set to enable OPP client capabilities. */
2860 #ifndef OPP_CLIENT_INCLUDED
2861 #define OPP_CLIENT_INCLUDED FALSE
2862 #endif
2863 
2864 /* This is set to enable OPP server capabilities. */
2865 #ifndef OPP_SERVER_INCLUDED
2866 #define OPP_SERVER_INCLUDED FALSE
2867 #endif
2868 
2869 /* if the optional formating functions are to be included or not */
2870 #ifndef OPP_FORMAT_INCLUDED
2871 #define OPP_FORMAT_INCLUDED FALSE
2872 #endif
2873 
2874 /* Maximum number of client sessions allowed by server */
2875 #ifndef OPP_MAX_SRVR_SESS
2876 #define OPP_MAX_SRVR_SESS 3
2877 #endif
2878 
2879 /******************************************************************************
2880 **
2881 ** FTP
2882 **
2883 ******************************************************************************/
2884 
2885 #ifndef FTP_INCLUDED
2886 #define FTP_INCLUDED FALSE
2887 #endif
2888 
2889 /* This is set to enable FTP client capabilities. */
2890 #ifndef FTP_CLIENT_INCLUDED
2891 #define FTP_CLIENT_INCLUDED TRUE
2892 #endif
2893 
2894 /* This is set to enable FTP server capabilities. */
2895 #ifndef FTP_SERVER_INCLUDED
2896 #define FTP_SERVER_INCLUDED TRUE
2897 #endif
2898 
2899 /******************************************************************************
2900 **
2901 ** XML Parser
2902 **
2903 ******************************************************************************/
2904 
2905 #ifndef XML_STACK_SIZE
2906 #define XML_STACK_SIZE 7
2907 #endif
2908 
2909 /******************************************************************************
2910 **
2911 ** BPP Printer
2912 **
2913 ******************************************************************************/
2914 #ifndef BPP_DEBUG
2915 #define BPP_DEBUG FALSE
2916 #endif
2917 
2918 #ifndef BPP_INCLUDED
2919 #define BPP_INCLUDED FALSE
2920 #endif
2921 
2922 #ifndef BPP_SND_INCLUDED
2923 #define BPP_SND_INCLUDED FALSE
2924 #endif
2925 
2926 /* Maximum number of senders allowed to connect simultaneously
2927 ** The maximum is 6 or (OBX_NUM_SERVERS / 2), whichever is smaller
2928 */
2929 #ifndef BPP_PR_MAX_CON
2930 #define BPP_PR_MAX_CON 3
2931 #endif
2932 
2933 /* Service Name. maximum length: 248
2934 #ifndef BPP_SERVICE_NAME
2935 #define BPP_SERVICE_NAME "Basic Printing"
2936 #endif
2937  */
2938 /* Document Format Supported. ASCII comma-delimited list of MIME type:version string
2939 #ifndef BPP_DOC_FORMAT_SUPPORTED
2940 #define BPP_DOC_FORMAT_SUPPORTED "application/vnd.pwg-xhtml-print:1.0,application/vnd.hp-PCL:5E,application/PDF"
2941 #endif
2942 
2943 #ifndef BPP_DOC_FORMAT_SUPPORTED_LEN
2944 #define BPP_DOC_FORMAT_SUPPORTED_LEN 77
2945 #endif
2946  */
2947 /* Character repertoires.
2948 #ifndef BPP_CHARACTER_REPERTOIRES
2949 #define BPP_CHARACTER_REPERTOIRES {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}
2950 #endif
2951  */
2952 /* XHTML formats.
2953 #ifndef BPP_XHTML_PRINT_FORMATS
2954 #define BPP_XHTML_PRINT_FORMATS "image/gif:89A,image/jpeg"
2955 #endif
2956 
2957 #ifndef BPP_XHTML_PRINT_FORMATS_LEN
2958 #define BPP_XHTML_PRINT_FORMATS_LEN 24
2959 #endif
2960  */
2961 /* Color supported.
2962 #ifndef BPP_COLOR_SUPORTED
2963 #define BPP_COLOR_SUPORTED FALSE
2964 #endif
2965  */
2966 /* 1284 ID string. First 2 bytes are the length.
2967 #ifndef BPP_1284ID
2968 #define BPP_1284ID "\x00\x48MANUFACTURER:ACME Manufacturing;COMMAND SET:PCL,MPL;MODEL:LaserBeam \?;"
2969 #endif
2970 
2971 #ifndef BPP_1284ID_LEN
2972 #define BPP_1284ID_LEN 72
2973 #endif
2974  */
2975 /* Printer name.
2976 #ifndef BPP_PRINTER_NAME
2977 #define BPP_PRINTER_NAME "My Printer"
2978 #endif
2979 
2980 #ifndef BPP_PRINTER_NAME_LEN
2981 #define BPP_PRINTER_NAME_LEN 10
2982 #endif
2983  */
2984 
2985 /* Printer location.
2986 #ifndef BPP_PRINTER_LOCATION
2987 #define BPP_PRINTER_LOCATION "Hotel Lobby"
2988 #endif
2989 
2990 #ifndef BPP_PRINTER_LOCATION_LEN
2991 #define BPP_PRINTER_LOCATION_LEN 11
2992 #endif
2993  */
2994 /* Duplex printing supported.
2995 #ifndef BPP_DUPLEX_SUPPORTED
2996 #define BPP_DUPLEX_SUPPORTED TRUE
2997 #endif
2998  */
2999 
3000 /* Media types supported.
3001 #ifndef BPP_MEDIA_TYPES_SUPPORTED
3002 #define BPP_MEDIA_TYPES_SUPPORTED "stationary,continuous-long,photographic-high-gloss,cardstock"
3003 #endif
3004 
3005 #ifndef BPP_MEDIA_TYPES_SUPPORTED_LEN
3006 #define BPP_MEDIA_TYPES_SUPPORTED_LEN 60
3007 #endif
3008  */
3009 /* Maximum media with supported.
3010 #ifndef BPP_MAX_MEDIA_WIDTH
3011 #define BPP_MAX_MEDIA_WIDTH 205
3012 #endif
3013  */
3014 /* Maximum media length supported.
3015 #ifndef BPP_MAX_MEDIA_LENGTH
3016 #define BPP_MAX_MEDIA_LENGTH 285
3017 #endif
3018  */
3019 /* the maximum string len for the media size of medium loaded */
3020 #ifndef BPP_MEDIA_SIZE_LEN
3021 #define BPP_MEDIA_SIZE_LEN 33
3022 #endif
3023 
3024 /* Debug Trace the SOAP object, if TRUE */
3025 #ifndef BPP_TRACE_XML
3026 #define BPP_TRACE_XML TRUE
3027 #endif
3028 
3029 /* in case that the SOAP object does not all come in one OBEX packet,
3030  * this size of data may be kept in the BPP control block for continuing parsing.
3031  * The maximum is the size of the biggest GKI buffer (GKI_MAX_BUF_SIZE) */
3032 #ifndef BPP_SOAP_KEEP_SIZE
3033 #define BPP_SOAP_KEEP_SIZE 200
3034 #endif
3035 
3036 
3037 /******************************************************************************
3038 **
3039 ** BIP
3040 **
3041 ******************************************************************************/
3042 #ifndef BIP_INCLUDED
3043 #define BIP_INCLUDED FALSE
3044 #endif
3045 
3046 /* TRUE to include imaging initiator */
3047 #ifndef BIP_INITR_INCLUDED
3048 #define BIP_INITR_INCLUDED FALSE
3049 #endif
3050 
3051 /* TRUE to include imaging responder */
3052 #ifndef BIP_RSPDR_INCLUDED
3053 #define BIP_RSPDR_INCLUDED FALSE
3054 #endif
3055 
3056 /* TRUE to include image push feature */
3057 #ifndef BIP_PUSH_INCLUDED
3058 #define BIP_PUSH_INCLUDED TRUE
3059 #endif
3060 
3061 /* TRUE to include image pull feature */
3062 #ifndef BIP_PULL_INCLUDED
3063 #define BIP_PULL_INCLUDED TRUE
3064 #endif
3065 
3066 /* TRUE to include advanced image printing feature */
3067 #ifndef BIP_PRINTING_INCLUDED
3068 #define BIP_PRINTING_INCLUDED TRUE
3069 #endif
3070 
3071 /* TRUE to include automatic archive feature */
3072 #ifndef BIP_ARCHIVE_INCLUDED
3073 #define BIP_ARCHIVE_INCLUDED TRUE
3074 #endif
3075 
3076 /* TRUE to include remote camera feature */
3077 #ifndef BIP_CAMERA_INCLUDED
3078 #define BIP_CAMERA_INCLUDED TRUE
3079 #endif
3080 
3081 /* TRUE to include remote display feature */
3082 #ifndef BIP_DISPLAY_INCLUDED
3083 #define BIP_DISPLAY_INCLUDED TRUE
3084 #endif
3085 
3086 /* TRUE to include sanity check code for API functions */
3087 #ifndef BIP_SANITY_CHECKS
3088 #define BIP_SANITY_CHECKS TRUE
3089 #endif
3090 
3091 /* TRUE to show the received XML object in trace for conformance tests */
3092 #ifndef BIP_TRACE_XML
3093 #define BIP_TRACE_XML TRUE
3094 #endif
3095 
3096 /* in case that the received XML object is not complete, the XML parser state machine needs
3097  * to keep a copy of the data from the last '<'
3098  * This macro specifies the maximun amount of data for this purpose */
3099 #ifndef BIP_XML_CARRY_OVER_LEN
3100 #define BIP_XML_CARRY_OVER_LEN 100
3101 #endif
3102 
3103 /* minimum 4, maximum is 255. The value should be set to the maximum size of encoding string + 1. JPEG2000.
3104  * If vendor specific format is supported, it might be bigger than 9 */
3105 #ifndef BIP_IMG_ENCODE_SIZE
3106 #define BIP_IMG_ENCODE_SIZE 9
3107 #endif
3108 
3109 /* MIME type: text/plain */
3110 #ifndef BIP_TYPE_SIZE
3111 #define BIP_TYPE_SIZE 20
3112 #endif
3113 
3114 /* example: iso-8895-1 */
3115 #ifndef BIP_CHARSET_SIZE
3116 #define BIP_CHARSET_SIZE 10
3117 #endif
3118 
3119 /* friendly name */
3120 #ifndef BIP_FNAME_SIZE
3121 #define BIP_FNAME_SIZE 20
3122 #endif
3123 
3124 /* service name */
3125 #ifndef BIP_SNAME_SIZE
3126 #define BIP_SNAME_SIZE 60
3127 #endif
3128 
3129 /* temporary storage file name(for file system access, may include path) */
3130 #ifndef BIP_TEMP_NAME_SIZE
3131 #define BIP_TEMP_NAME_SIZE 200
3132 #endif
3133 
3134 /* image file name */
3135 #ifndef BIP_IMG_NAME_SIZE
3136 #define BIP_IMG_NAME_SIZE 200
3137 #endif
3138 
3139 /* attachment file name */
3140 #ifndef BIP_ATT_NAME_SIZE
3141 #define BIP_ATT_NAME_SIZE 200
3142 #endif
3143 
3144 /* object (image, attachment, thumbnail) file name (may be used for file system) */
3145 #ifndef BIP_OBJ_NAME_SIZE
3146 #define BIP_OBJ_NAME_SIZE 200
3147 #endif
3148 
3149 
3150 
3151 /******************************************************************************
3152 **
3153 ** HCRP
3154 **
3155 ******************************************************************************/
3156 
3157 #ifndef HCRP_INCLUDED
3158 #define HCRP_INCLUDED FALSE
3159 #endif
3160 
3161 /* This is set to enable server. */
3162 #ifndef HCRP_SERVER_INCLUDED
3163 #define HCRP_SERVER_INCLUDED FALSE
3164 #endif
3165 
3166 /* This is set to enable client. */
3167 #ifndef HCRP_CLIENT_INCLUDED
3168 #define HCRP_CLIENT_INCLUDED FALSE
3169 #endif
3170 
3171 /* TRUE enables the notification option of the profile. */
3172 #ifndef HCRP_NOTIFICATION_INCLUDED
3173 #define HCRP_NOTIFICATION_INCLUDED TRUE
3174 #endif
3175 
3176 /* TRUE enables the vendor specific option of the profile. */
3177 #ifndef HCRP_VENDOR_SPEC_INCLUDED
3178 #define HCRP_VENDOR_SPEC_INCLUDED TRUE
3179 #endif
3180 
3181 /* TRUE enables state machine traces. */
3182 #ifndef HCRP_FSM_DEBUG
3183 #define HCRP_FSM_DEBUG FALSE
3184 #endif
3185 
3186 /* TRUE enables protocol message traces. */
3187 #ifndef HCRP_PROTO_DEBUG
3188 #define HCRP_PROTO_DEBUG FALSE
3189 #endif
3190 
3191 /* Maximum length used to store the service name (Minimum 1). */
3192 #ifndef HCRP_MAX_SERVICE_NAME_LEN
3193 #define HCRP_MAX_SERVICE_NAME_LEN 32
3194 #endif
3195 
3196 /* Maximum length used to store the device name (Minimum 1). */
3197 #ifndef HCRP_MAX_DEVICE_NAME_LEN
3198 #define HCRP_MAX_DEVICE_NAME_LEN 32
3199 #endif
3200 
3201 /* Maximum length of device location (Minimum 1) */
3202 #ifndef HCRP_MAX_DEVICE_LOC_LEN
3203 #define HCRP_MAX_DEVICE_LOC_LEN 32
3204 #endif
3205 
3206 /* Maximum length used to store the friendly name (Minimum 1). */
3207 #ifndef HCRP_MAX_FRIENDLY_NAME_LEN
3208 #define HCRP_MAX_FRIENDLY_NAME_LEN 32
3209 #endif
3210 
3211 /* Maximum length used to store the 1284 id string (Minimum 2 byte length field). */
3212 #ifndef HCRP_MAX_SDP_1284_ID_LEN
3213 #define HCRP_MAX_SDP_1284_ID_LEN 128
3214 #endif
3215 
3216 /* Maximum length for parameters to be processed for vendor specific commands. */
3217 #ifndef HCRP_MAX_VEND_SPEC_LEN
3218 #define HCRP_MAX_VEND_SPEC_LEN 4
3219 #endif
3220 
3221 /* Number of seconds to wait for 2nd GAP to open. */
3222 #ifndef HCRP_OPEN_CHAN_TOUT
3223 #define HCRP_OPEN_CHAN_TOUT 5
3224 #endif
3225 
3226 /* Number of seconds to wait for 2nd GAP to close. */
3227 #ifndef HCRP_CLOSE_CHAN_TOUT
3228 #define HCRP_CLOSE_CHAN_TOUT 3
3229 #endif
3230 
3231 /* Number of seconds to wait for the application to respond to a protocol request. */
3232 #ifndef HCRP_APPL_RSP_TOUT
3233 #define HCRP_APPL_RSP_TOUT 5
3234 #endif
3235 
3236 /* Number of seconds to wait for the peer device to respond to a protocol request. */
3237 #ifndef HCRP_CMD_RSP_TOUT
3238 #define HCRP_CMD_RSP_TOUT 7
3239 #endif
3240 
3241 /* Number of seconds between subsequent credit requests to the server when the send watermark has been exceeded. */
3242 #ifndef HCRP_CREDIT_REQ_UPDATES
3243 #define HCRP_CREDIT_REQ_UPDATES 1
3244 #endif
3245 
3246 /* Maximum number of results to return in a HCRP_FindServices search. */
3247 #ifndef HCRP_MAX_SEARCH_RESULTS
3248 #define HCRP_MAX_SEARCH_RESULTS 1
3249 #endif
3250 
3251 /* Maximum number of bytes to be reserved for searching for the client's notification record. */
3252 #ifndef HCRP_MAX_NOTIF_DISC_BUF
3253 #define HCRP_MAX_NOTIF_DISC_BUF 300
3254 #endif
3255 
3256 /* Maximum number of clients the server will allow to be registered for notifications. */
3257 #ifndef HCRP_MAX_NOTIF_CLIENTS
3258 #define HCRP_MAX_NOTIF_CLIENTS 3
3259 #endif
3260 
3261 /* Spec says minimum of two notification retries. */
3262 #ifndef HCRP_NOTIF_NUM_RETRIES
3263 #define HCRP_NOTIF_NUM_RETRIES 4
3264 #endif
3265 
3266 /*************************************************************************
3267 ** Definitions for Multi-Client Server HCRP
3268 ** Note: Many of the above HCRP definitions are also used
3269 ** Maximum number of clients allowed to connect simultaneously
3270 ** Must be less than ((GAP_MAX_CONNECTIONS - 1) / 2)
3271 */
3272 #ifndef HCRPM_MAX_CLIENTS
3273 #define HCRPM_MAX_CLIENTS 3
3274 #endif
3275 
3276 
3277 /******************************************************************************
3278 **
3279 ** PAN
3280 **
3281 ******************************************************************************/
3282 
3283 #ifndef PAN_INCLUDED
3284 #define PAN_INCLUDED FALSE
3285 #endif
3286 
3287 
3288 /******************************************************************************
3289 **
3290 ** SAP
3291 **
3292 ******************************************************************************/
3293 
3294 #ifndef SAP_SERVER_INCLUDED
3295 #define SAP_SERVER_INCLUDED FALSE
3296 #endif
3297 
3298 
3299 /*************************************************************************
3300  * A2DP Definitions
3301  */
3302 #ifndef A2D_INCLUDED
3303 #define A2D_INCLUDED FALSE
3304 #endif
3305 
3306 /* TRUE to include SBC utility functions */
3307 #ifndef A2D_SBC_INCLUDED
3308 #define A2D_SBC_INCLUDED A2D_INCLUDED
3309 #endif
3310 
3311 /* TRUE to include MPEG-1,2 (mp3) utility functions */
3312 #ifndef A2D_M12_INCLUDED
3313 #define A2D_M12_INCLUDED A2D_INCLUDED
3314 #endif
3315 
3316 /* TRUE to include MPEG-2,4 (aac) utility functions */
3317 #ifndef A2D_M24_INCLUDED
3318 #define A2D_M24_INCLUDED A2D_INCLUDED
3319 #endif
3320 
3321 /*************************************************************************
3322  * VDP Definitions
3323  */
3324 #ifndef VDP_INCLUDED
3325 #define VDP_INCLUDED FALSE
3326 #endif
3327 
3328 /******************************************************************************
3329 **
3330 ** AVCTP
3331 **
3332 ******************************************************************************/
3333 
3334 #ifndef AVCT_INCLUDED
3335 #define AVCT_INCLUDED FALSE
3336 #endif
3337 
3338 /* Number of simultaneous ACL links to different peer devices. */
3339 #ifndef AVCT_NUM_LINKS
3340 #define AVCT_NUM_LINKS 2
3341 #endif
3342 
3343 /* Number of simultaneous AVCTP connections. */
3344 #ifndef AVCT_NUM_CONN
3345 #define AVCT_NUM_CONN 3
3346 #endif
3347 
3348 /* TRUE to support the browsing channel. */
3349 #ifndef AVCT_BROWSE_INCLUDED
3350 #define AVCT_BROWSE_INCLUDED TRUE
3351 #endif
3352 
3353 #if ((L2CAP_FCR_INCLUDED == FALSE) && (AVCT_BROWSE_INCLUDED == TRUE))
3354 #undef AVCT_BROWSE_INCLUDED
3355 #define AVCT_BROWSE_INCLUDED FALSE
3356 #endif
3357 
3358 /* Pool ID where to reassemble the SDU.
3359  This Pool allows buffers to be used that are larger than
3360  the L2CAP_MAX_MTU. */
3361 #ifndef AVCT_BR_USER_RX_POOL_ID
3362 #define AVCT_BR_USER_RX_POOL_ID HCI_ACL_POOL_ID
3363 #endif
3364 
3365 /* Pool ID where to hold the SDU.
3366  This Pool allows buffers to be used that are larger than
3367  the L2CAP_MAX_MTU. */
3368 #ifndef AVCT_BR_USER_TX_POOL_ID
3369 #define AVCT_BR_USER_TX_POOL_ID HCI_ACL_POOL_ID
3370 #endif
3371 
3372 /*
3373 GKI Buffer Pool ID used to hold MPS segments during SDU reassembly
3374 */
3375 #ifndef AVCT_BR_FCR_RX_POOL_ID
3376 #define AVCT_BR_FCR_RX_POOL_ID HCI_ACL_POOL_ID
3377 #endif
3378 
3379 /*
3380 GKI Buffer Pool ID used to hold MPS segments used in (re)transmissions.
3381 L2CAP_DEFAULT_ERM_POOL_ID is specified to use the HCI ACL data pool.
3382 Note: This pool needs to have enough buffers to hold two times the window size negotiated
3383  in the tL2CAP_FCR_OPTIONS (2 * tx_win_size) to allow for retransmissions.
3384  The size of each buffer must be able to hold the maximum MPS segment size passed in
3385  tL2CAP_FCR_OPTIONS plus BT_HDR (8) + HCI preamble (4) + L2CAP_MIN_OFFSET (11 - as of BT 2.1 + EDR Spec).
3386 */
3387 #ifndef AVCT_BR_FCR_TX_POOL_ID
3388 #define AVCT_BR_FCR_TX_POOL_ID HCI_ACL_POOL_ID
3389 #endif
3390 
3391 /* AVCTP Browsing channel FCR Option:
3392 Size of the transmission window when using enhanced retransmission mode. Not used
3393 in basic and streaming modes. Range: 1 - 63
3394 */
3395 #ifndef AVCT_BR_FCR_OPT_TX_WINDOW_SIZE
3396 #define AVCT_BR_FCR_OPT_TX_WINDOW_SIZE 10
3397 #endif
3398 
3399 /* AVCTP Browsing channel FCR Option:
3400 Number of transmission attempts for a single I-Frame before taking
3401 Down the connection. Used In ERTM mode only. Value is Ignored in basic and
3402 Streaming modes.
3403 Range: 0, 1-0xFF
3404 0 - infinite retransmissions
3405 1 - single transmission
3406 */
3407 #ifndef AVCT_BR_FCR_OPT_MAX_TX_B4_DISCNT
3408 #define AVCT_BR_FCR_OPT_MAX_TX_B4_DISCNT 20
3409 #endif
3410 
3411 /* AVCTP Browsing channel FCR Option: Retransmission Timeout
3412 The AVRCP specification set a value in the range of 300 - 2000 ms
3413 Timeout (in msecs) to detect Lost I-Frames. Only used in Enhanced retransmission mode.
3414 Range: Minimum 2000 (2 secs) when supporting PBF.
3415  */
3416 #ifndef AVCT_BR_FCR_OPT_RETX_TOUT
3417 #define AVCT_BR_FCR_OPT_RETX_TOUT 2000
3418 #endif
3419 
3420 /* AVCTP Browsing channel FCR Option: Monitor Timeout
3421 The AVRCP specification set a value in the range of 300 - 2000 ms
3422 Timeout (in msecs) to detect Lost S-Frames. Only used in Enhanced retransmission mode.
3423 Range: Minimum 12000 (12 secs) when supporting PBF.
3424 */
3425 #ifndef AVCT_BR_FCR_OPT_MONITOR_TOUT
3426 #define AVCT_BR_FCR_OPT_MONITOR_TOUT 12000
3427 #endif
3428 
3429 /******************************************************************************
3430 **
3431 ** AVRCP
3432 **
3433 ******************************************************************************/
3434 
3435 #ifndef AVRC_INCLUDED
3436 #define AVRC_INCLUDED FALSE
3437 #endif
3438 
3439 /* TRUE to support AVRCP 1.3 - Metadata. */
3440 #ifndef AVRC_METADATA_INCLUDED
3441 #define AVRC_METADATA_INCLUDED TRUE
3442 #endif
3443 
3444 /* TRUE to support AVRCP 1.4 - Advanced Control. */
3445 #ifndef AVRC_ADV_CTRL_INCLUDED
3446 #define AVRC_ADV_CTRL_INCLUDED TRUE
3447 #endif
3448 
3449 /******************************************************************************
3450 **
3451 ** MCAP
3452 **
3453 ******************************************************************************/
3454 #ifndef MCA_INCLUDED
3455 #define MCA_INCLUDED FALSE
3456 #endif
3457 
3458 /* TRUE to support Clock Synchronization OpCodes */
3459 #ifndef MCA_SYNC_INCLUDED
3460 #define MCA_SYNC_INCLUDED FALSE
3461 #endif
3462 
3463 /* The MTU size for the L2CAP configuration on control channel. 48 is the minimal */
3464 #ifndef MCA_CTRL_MTU
3465 #define MCA_CTRL_MTU 60
3466 #endif
3467 
3468 /* The maximum number of registered MCAP instances. */
3469 #ifndef MCA_NUM_REGS
3470 #define MCA_NUM_REGS 3
3471 #endif
3472 
3473 /* The maximum number of control channels (to difference devices) per registered MCAP instances. */
3474 #ifndef MCA_NUM_LINKS
3475 #define MCA_NUM_LINKS 3
3476 #endif
3477 
3478 /* The maximum number of MDEP (including HDP echo) per registered MCAP instances. */
3479 #ifndef MCA_NUM_DEPS
3480 #define MCA_NUM_DEPS 3
3481 #endif
3482 
3483 /* The maximum number of MDL link per control channel. */
3484 #ifndef MCA_NUM_MDLS
3485 #define MCA_NUM_MDLS 4
3486 #endif
3487 
3488 /* Pool ID where to reassemble the SDU. */
3489 #ifndef MCA_USER_RX_POOL_ID
3490 #define MCA_USER_RX_POOL_ID HCI_ACL_POOL_ID
3491 #endif
3492 
3493 /* Pool ID where to hold the SDU. */
3494 #ifndef MCA_USER_TX_POOL_ID
3495 #define MCA_USER_TX_POOL_ID HCI_ACL_POOL_ID
3496 #endif
3497 
3498 /*
3499 GKI Buffer Pool ID used to hold MPS segments during SDU reassembly
3500 */
3501 #ifndef MCA_FCR_RX_POOL_ID
3502 #define MCA_FCR_RX_POOL_ID HCI_ACL_POOL_ID
3503 #endif
3504 
3505 /*
3506 GKI Buffer Pool ID used to hold MPS segments used in (re)transmissions.
3507 L2CAP_DEFAULT_ERM_POOL_ID is specified to use the HCI ACL data pool.
3508 Note: This pool needs to have enough buffers to hold two times the window size negotiated
3509  in the tL2CAP_FCR_OPTIONS (2 * tx_win_size) to allow for retransmissions.
3510  The size of each buffer must be able to hold the maximum MPS segment size passed in
3511  tL2CAP_FCR_OPTIONS plus BT_HDR (8) + HCI preamble (4) + L2CAP_MIN_OFFSET (11 - as of BT 2.1 + EDR Spec).
3512 */
3513 #ifndef MCA_FCR_TX_POOL_ID
3514 #define MCA_FCR_TX_POOL_ID HCI_ACL_POOL_ID
3515 #endif
3516 
3517 /* MCAP control channel FCR Option:
3518 Size of the transmission window when using enhanced retransmission mode.
3519 1 is defined by HDP specification for control channel.
3520 */
3521 #ifndef MCA_FCR_OPT_TX_WINDOW_SIZE
3522 #define MCA_FCR_OPT_TX_WINDOW_SIZE 1
3523 #endif
3524 
3525 /* MCAP control channel FCR Option:
3526 Number of transmission attempts for a single I-Frame before taking
3527 Down the connection. Used In ERTM mode only. Value is Ignored in basic and
3528 Streaming modes.
3529 Range: 0, 1-0xFF
3530 0 - infinite retransmissions
3531 1 - single transmission
3532 */
3533 #ifndef MCA_FCR_OPT_MAX_TX_B4_DISCNT
3534 #define MCA_FCR_OPT_MAX_TX_B4_DISCNT 20
3535 #endif
3536 
3537 /* MCAP control channel FCR Option: Retransmission Timeout
3538 The AVRCP specification set a value in the range of 300 - 2000 ms
3539 Timeout (in msecs) to detect Lost I-Frames. Only used in Enhanced retransmission mode.
3540 Range: Minimum 2000 (2 secs) when supporting PBF.
3541  */
3542 #ifndef MCA_FCR_OPT_RETX_TOUT
3543 #define MCA_FCR_OPT_RETX_TOUT 2000
3544 #endif
3545 
3546 /* MCAP control channel FCR Option: Monitor Timeout
3547 The AVRCP specification set a value in the range of 300 - 2000 ms
3548 Timeout (in msecs) to detect Lost S-Frames. Only used in Enhanced retransmission mode.
3549 Range: Minimum 12000 (12 secs) when supporting PBF.
3550 */
3551 #ifndef MCA_FCR_OPT_MONITOR_TOUT
3552 #define MCA_FCR_OPT_MONITOR_TOUT 12000
3553 #endif
3554 
3555 /* MCAP control channel FCR Option: Maximum PDU payload size.
3556 The maximum number of payload octets that the local device can receive in a single PDU.
3557 */
3558 #ifndef MCA_FCR_OPT_MPS_SIZE
3559 #define MCA_FCR_OPT_MPS_SIZE 1000
3560 #endif
3561 
3562 /* Shared transport */
3563 #ifndef NFC_SHARED_TRANSPORT_ENABLED
3564 #define NFC_SHARED_TRANSPORT_ENABLED FALSE
3565 #endif
3566 
3567 /******************************************************************************
3568 **
3569 ** SER
3570 **
3571 ******************************************************************************/
3572 
3573 #ifndef SER_INCLUDED
3574 #define SER_INCLUDED FALSE
3575 #endif
3576 
3577 /* Task which runs the serial application. */
3578 #ifndef SER_TASK
3579 #define SER_TASK BTE_APPL_TASK
3580 #endif
3581 
3582 /* Mailbox used by serial application. */
3583 #ifndef SER_MBOX
3584 #define SER_MBOX TASK_MBOX_1
3585 #endif
3586 
3587 /* Mailbox mask. */
3588 #ifndef SER_MBOX_MASK
3589 #define SER_MBOX_MASK TASK_MBOX_1_EVT_MASK
3590 #endif
3591 
3592 /* TX path application event. */
3593 #ifndef SER_TX_PATH_APPL_EVT
3594 #define SER_TX_PATH_APPL_EVT EVENT_MASK(APPL_EVT_3)
3595 #endif
3596 
3597 /* RX path application event. */
3598 #ifndef SER_RX_PATH_APPL_EVT
3599 #define SER_RX_PATH_APPL_EVT EVENT_MASK(APPL_EVT_4)
3600 #endif
3601 
3602 /******************************************************************************
3603 **
3604 ** HCI Services
3605 **
3606 ******************************************************************************/
3607 /* Event mask reserved for handling HCIS events HCISU_TASK */
3608 #ifndef HCISU_EVT_MASK
3609 #define HCISU_EVT_MASK EVENT_MASK(APPL_EVT_0)
3610 #endif
3611 
3612 /* MBox reserved for handling HCIS events HCISU_TASK */
3613 #ifndef HCISU_MBOX
3614 #define HCISU_MBOX TASK_MBOX_2
3615 #endif
3616 
3617 /* MBox event mask reserved for handling HCIS events HCISU_TASK */
3618 #ifndef HCISU_MBOX_EVT_MASK
3619 #define HCISU_MBOX_EVT_MASK TASK_MBOX_2_EVT_MASK
3620 #endif
3621 
3622 /* Timer reserved for handling HCIS events HCISU_TASK */
3623 #ifndef HCISU_TIMER
3624 #define HCISU_TIMER TIMER_2
3625 #endif
3626 
3627 /* Timer event mask reserved for handling HCIS events HCISU_TASK */
3628 #ifndef HCISU_TIMER_EVT_MASK
3629 #define HCISU_TIMER_EVT_MASK TIMER_2_EVT_MASK
3630 #endif
3631 
3632 /******************************************************************************
3633 **
3634 ** HCI UART
3635 **
3636 ******************************************************************************/
3637 #ifndef BAUDRATE_UPDATE_ENCODED_INCLUDED
3638 #define BAUDRATE_UPDATE_ENCODED_INCLUDED FALSE
3639 #endif
3640 
3641 /******************************************************************************
3642 **
3643 ** HCI Services (H5 3 wired uart), H4 plus SLIP enabled
3644 **
3645 ******************************************************************************/
3646 #ifndef SLIP_INCLUDED
3647 #define SLIP_INCLUDED TRUE
3648 #endif
3649 
3650 #ifndef SLIP_STATIS_INCLUDED
3651 #define SLIP_STATIS_INCLUDED TRUE
3652 #endif
3653 
3654 #ifndef SLIP_SW_FLOW_CTRL
3655 #define SLIP_SW_FLOW_CTRL TRUE
3656 #endif
3657 
3658 #ifndef BT_TRACE_SLIP
3659 #define BT_TRACE_SLIP FALSE
3660 #endif
3661 
3662 #ifndef SLIP_HOST_SLIDING_WINDOW_SIZE
3663 #define SLIP_HOST_SLIDING_WINDOW_SIZE 7
3664 #endif
3665 
3666 #ifndef SLIP_MAX_RETRANSMIT
3667 #define SLIP_MAX_RETRANSMIT 10
3668 #endif
3669 
3670 /* time (in ms) interval between WAKEUP messages */
3671 #ifndef SLIP_WAKEUP_INTERVAL
3672 #define SLIP_WAKEUP_INTERVAL 10
3673 #endif
3674 
3675 /* max trial to send WAKEUP messages up to 255 */
3676 #ifndef SLIP_MAX_WAKEUP_TRIAL
3677 #define SLIP_MAX_WAKEUP_TRIAL 10
3678 #endif
3679 
3680 /*
3681 The H5 work around sequence will be:
3682 
3683 1. controller sends CONFIG with configuration field. (This is not spec compliance.
3684  Controller shall not have configuration field. This initiates work around.)
3685 2. host ignore the configuration field.
3686 3. Host sends CONFIG with configuration field.
3687 4. controller reponse CONFIG_RESPONSE with configuration field. This shall be the
3688  final configuration both FW and STACK use. (spec compliance).
3689 5. Host copied the configuration field over and sent CONFIG_RESPONSE with this
3690  configuration field (workaround)
3691 */
3692 
3693 #ifndef SLIP_CONFIG_FIELD_WORK_AROUND_INCLUDED
3694 #define SLIP_CONFIG_FIELD_WORK_AROUND_INCLUDED TRUE
3695 #endif
3696 
3697 /******************************************************************************
3698 **
3699 ** Sleep Mode (Low Power Mode)
3700 **
3701 ******************************************************************************/
3702 #ifndef HCILP_INCLUDED
3703 #define HCILP_INCLUDED TRUE
3704 #endif
3705 
3706 /* sleep mode
3707 
3708  0: disable
3709  1: UART with Host wake/BT wake out of band signals
3710  4: H4IBSS, UART with in band signal without Host/BT wake
3711  9: H5 with in band signal of SLIP without Host/BT wake
3712 */
3713 #ifndef HCILP_SLEEP_MODE
3714 #define HCILP_SLEEP_MODE (0)
3715 #endif
3716 
3717 /* Host Stack Idle Threshold in 300ms or 25ms, it depends on controller
3718 
3719  In sleep mode 1, this is the number of firmware loops executed with no activity
3720  before the Host wake line is deasserted. Activity includes HCI traffic excluding
3721  certain sleep mode commands and the presence of SCO connections if the
3722  "Allow Host Sleep During SCO" flag is not set to 1. Each count of this
3723  parameter is roughly equivalent to 300ms or 25ms.
3724 
3725  Not applicable for sleep mode 4(H4IBSS) and 9(H5)
3726 */
3727 #ifndef HCILP_IDLE_THRESHOLD
3728 #define HCILP_IDLE_THRESHOLD (1)
3729 #endif
3730 
3731 /* Host Controller Idle Threshold in 300ms or 25ms, it depends on controller
3732 
3733  This is the number of firmware loops executed with no activity before the HC is
3734  considered idle. Depending on the mode, HC may then attempt to sleep.
3735  Activity includes HCI traffic excluding certain sleep mode commands and
3736  the presence of ACL/SCO connections.
3737 
3738  Not applicable for sleep mode 4(H4IBSS)
3739 */
3740 #ifndef HCILP_HC_IDLE_THRESHOLD
3741 #define HCILP_HC_IDLE_THRESHOLD (1)
3742 #endif
3743 
3744 /* GPIO for BT_WAKE signal */
3745 /* Not applicable for sleep mode 4(H4IBSS) and 9(H5) */
3746 #ifndef HCILP_BT_WAKE_GPIO
3747 #define HCILP_BT_WAKE_GPIO UPIO_GENERAL1
3748 #endif
3749 
3750 /* GPIO for HOST_WAKE signal */
3751 /* Not applicable for sleep mode 4(H4IBSS) and 9(H5) */
3752 #ifndef HCILP_HOST_WAKE_GPIO
3753 #define HCILP_HOST_WAKE_GPIO UPIO_GENERAL2
3754 #endif
3755 
3756 /* BT_WAKE Polarity - 0=Active Low, 1= Active High */
3757 /* Not applicable for sleep mode 4(H4IBSS) and 9(H5) */
3758 #ifndef HCILP_BT_WAKE_POLARITY
3759 #define HCILP_BT_WAKE_POLARITY 0
3760 #endif
3761 
3762 /* HOST_WAKE Polarity - 0=Active Low, 1= Active High */
3763 /* Not applicable for sleep mode 4(H4IBSS) and 9(H5) */
3764 #ifndef HCILP_HOST_WAKE_POLARITY
3765 #define HCILP_HOST_WAKE_POLARITY 0
3766 #endif
3767 
3768 /* HCILP_ALLOW_HOST_SLEEP_DURING_SCO
3769 
3770  When this flag is set to 0, the host is not allowed to sleep while
3771  an SCO is active. In sleep mode 1, the device will keep the host
3772  wake line asserted while an SCO is active.
3773  When this flag is set to 1, the host can sleep while an SCO is active.
3774  This flag should only be set to 1 if SCO traffic is directed to the PCM interface.
3775 
3776  Not applicable for sleep mode 4(H4IBSS) and 9(H5)
3777 */
3778 #ifndef HCILP_ALLOW_HOST_SLEEP_DURING_SCO
3779 #define HCILP_ALLOW_HOST_SLEEP_DURING_SCO 1
3780 #endif
3781 
3782 /* HCILP_COMBINE_SLEEP_MODE_AND_LPM
3783 
3784  In Mode 0, always set byte 7 to 0. In sleep mode 1, device always
3785  requires permission to sleep between scans / periodic inquiries regardless
3786  of the setting of this byte. In sleep mode 1, if byte is set, device must
3787  have "permission" to sleep during the low power modes of sniff, hold, and park.
3788  If byte is not set, device can sleep without permission during these modes.
3789  Permission to sleep in Mode 1 is obtained if the BT_WAKE signal is not asserted.
3790 
3791  Not applicable for sleep mode 4(H4IBSS) and 9(H5)
3792 */
3793 #ifndef HCILP_COMBINE_SLEEP_MODE_AND_LPM
3794 #define HCILP_COMBINE_SLEEP_MODE_AND_LPM 1
3795 #endif
3796 
3797 /* HCILP_ENABLE_UART_TXD_TRI_STATE
3798 
3799  When set to 0, the device will not tristate its UART TX line before going to sleep.
3800  When set to 1, the device will tristate its UART TX line before going to sleep.
3801 
3802  Not applicable for sleep mode 4(H4IBSS) and 9(H5)
3803 */
3804 #ifndef HCILP_ENABLE_UART_TXD_TRI_STATE
3805 #define HCILP_ENABLE_UART_TXD_TRI_STATE 0
3806 #endif
3807 
3808 /* HCILP_PULSED_HOST_WAKE
3809 
3810  Not applicable for sleep mode 4(H4IBSS) and 9(H5)
3811 */
3812 #ifndef HCILP_PULSED_HOST_WAKE
3813 #define HCILP_PULSED_HOST_WAKE 0
3814 #endif
3815 
3816 /* HCILP_SLEEP_GUARD_TIME
3817 
3818  Only for sleep mode 4(H4IBSS)
3819  Time in 12.5ms between starting to monitor controller's CTS and raising its RTS
3820 */
3821 #ifndef HCILP_SLEEP_GUARD_TIME
3822 #define HCILP_SLEEP_GUARD_TIME 5
3823 #endif
3824 
3825 /* HCILP_WAKEUP_GUARD_TIME
3826 
3827  Only for sleep mode 4(H4IBSS)
3828  Time in 12.5ms between starting to monitor controller's CTS and lowering its RTS
3829 */
3830 #ifndef HCILP_WAKEUP_GUARD_TIME
3831 #define HCILP_WAKEUP_GUARD_TIME 5
3832 #endif
3833 
3834 /* HCILP_TXD_CONFIG
3835 
3836  Only for sleep mode 4(H4IBSS)
3837  0: controller's TXD stays low in sleep mode
3838  1: controller's TXD stays high in sleep mode (default)
3839 */
3840 #ifndef HCILP_TXD_CONFIG
3841 #define HCILP_TXD_CONFIG 1
3842 #endif
3843 
3844 /* HCILP_BT_WAKE_IDLE_TIMEOUT
3845 
3846  host's idle time in ms before initiating sleep procedure
3847 */
3848 #ifndef HCILP_BT_WAKE_IDLE_TIMEOUT
3849 #define HCILP_BT_WAKE_IDLE_TIMEOUT 50
3850 #endif
3851 
3852 #ifndef H4IBSS_INCLUDED
3853 #define H4IBSS_INCLUDED TRUE
3854 #endif
3855 
3856 /* display H4IBSS state and event in text */
3857 #ifndef H4IBSS_DEBUG
3858 #define H4IBSS_DEBUG TRUE
3859 #endif
3860 
3861 /* time interval before going into sleep after having sent or received SLEEP_REQ_ACK */
3862 /* Valid range is 20 - 50 ms */
3863 #ifndef H4IBSS_SLEEP_GUARD_TIME
3864 #define H4IBSS_SLEEP_GUARD_TIME (40)
3865 #endif
3866 
3867 /* timeout(msec) to wait for response of sleep request */
3868 #ifndef H4IBSS_SLEEP_REQ_RESP_TIME
3869 #define H4IBSS_SLEEP_REQ_RESP_TIME (50)
3870 #endif
3871 
3872 /******************************************************************************
3873 **
3874 ** RPC
3875 **
3876 ******************************************************************************/
3877 
3878 #ifndef RPC_INCLUDED
3879 #define RPC_INCLUDED FALSE
3880 #endif
3881 
3882 /* RPCT task mailbox ID for messages coming from rpcgen code. */
3883 #ifndef RPCT_MBOX
3884 #define RPCT_MBOX TASK_MBOX_0
3885 #endif
3886 
3887 /* RPCT task event for mailbox. */
3888 #ifndef RPCT_RPC_MBOX_EVT
3889 #define RPCT_RPC_MBOX_EVT TASK_MBOX_0_EVT_MASK
3890 #endif
3891 
3892 /* RPCT task event from driver indicating RX data is ready. */
3893 #ifndef RPCT_RX_READY_EVT
3894 #define RPCT_RX_READY_EVT APPL_EVT_0
3895 #endif
3896 
3897 /* RPCT task event from driver indicating data TX is done. */
3898 #ifndef RPCT_TX_DONE_EVT
3899 #define RPCT_TX_DONE_EVT APPL_EVT_1
3900 #endif
3901 
3902 /* RPCT task event indicating data is in the circular buffer. */
3903 #ifndef RPCT_UCBUF_EVT
3904 #define RPCT_UCBUF_EVT APPL_EVT_2
3905 #endif
3906 
3907 /* Task ID of RPCGEN task. */
3908 #ifndef RPCGEN_TASK
3909 #define RPCGEN_TASK BTU_TASK
3910 #endif
3911 
3912 /* RPCGEN task event for messages coming from RPCT. */
3913 #ifndef RPCGEN_MSG_EVT
3914 #define RPCGEN_MSG_EVT TASK_MBOX_1_EVT_MASK
3915 #endif
3916 
3917 #ifndef RPCGEN_MSG_MBOX
3918 #define RPCGEN_MSG_MBOX TASK_MBOX_1
3919 #endif
3920 
3921 /* Size of circular buffer used to store diagnostic messages. */
3922 #ifndef RPCT_UCBUF_SIZE
3923 #define RPCT_UCBUF_SIZE 2000
3924 #endif
3925 
3926 /******************************************************************************
3927 **
3928 ** SAP - Sample ICP and HSP applications
3929 **
3930 ******************************************************************************/
3931 
3932 #ifndef SAP_INCLUDED
3933 #define SAP_INCLUDED FALSE
3934 #endif
3935 
3936 #ifndef ICA_INCLUDED
3937 #define ICA_INCLUDED FALSE
3938 #endif
3939 
3940 #ifndef HSA_HS_INCLUDED
3941 #define HSA_HS_INCLUDED FALSE
3942 #endif
3943 
3944 #ifndef HSA_AG_INCLUDED
3945 #define HSA_AG_INCLUDED FALSE
3946 #endif
3947 
3948 #ifndef MMI_INCLUDED
3949 #define MMI_INCLUDED FALSE
3950 #endif
3951 
3952 /* MMI task event from driver indicating RX data is ready. */
3953 #ifndef MMI_RX_READY_EVT
3954 #define MMI_RX_READY_EVT APPL_EVT_0
3955 #endif
3956 
3957 /******************************************************************************
3958 **
3959 ** APPL - Application Task
3960 **
3961 ******************************************************************************/
3962 /* When TRUE indicates that an application task is to be run */
3963 #ifndef APPL_INCLUDED
3964 #define APPL_INCLUDED FALSE
3965 #endif
3966 
3967 /* When TRUE remote terminal code included (RPC MUST be included) */
3968 #ifndef RSI_INCLUDED
3969 #define RSI_INCLUDED FALSE
3970 #endif
3971 
3972 
3973 
3974 #define L2CAP_FEATURE_REQ_ID 73
3975 #define L2CAP_FEATURE_RSP_ID 173
3976 
3977 
3978 #define L2CAP_ENHANCED_FEATURES 0
3979 
3980 
3981 
3982 /* Use gki_delay for patch ram */
3983 #ifndef BCM2045_USE_DELAY
3984 #if ( SLIP_INCLUDED == TRUE )
3985 /* H5 need to be initialized after sending download mini driver HCI command */
3986 #define BCM2045_USE_DELAY FALSE
3987 #else
3988 #define BCM2045_USE_DELAY TRUE
3989 #endif
3990 #endif
3991 
3992 /******************************************************************************
3993 **
3994 ** BTA
3995 **
3996 ******************************************************************************/
3997 /* BTA EIR canned UUID list (default is dynamic) */
3998 #ifndef BTA_EIR_CANNED_UUID_LIST
3999 #define BTA_EIR_CANNED_UUID_LIST FALSE
4000 #endif
4001 
4002 /* Number of supported customer UUID in EIR */
4003 #ifndef BTA_EIR_SERVER_NUM_CUSTOM_UUID
4004 #define BTA_EIR_SERVER_NUM_CUSTOM_UUID 8
4005 #endif
4006 
4007 /******************************************************************************
4008 **
4009 ** BTE
4010 **
4011 ******************************************************************************/
4012 #ifndef BTE_PLATFORM_IDLE
4013 #define BTE_PLATFORM_IDLE
4014 #endif
4015 
4016 #ifndef BTE_IDLE_TASK_INCLUDED
4017 #define BTE_IDLE_TASK_INCLUDED TRUE
4018 #endif
4019 
4020 #ifndef BTE_PLATFORM_INITHW
4021 #define BTE_PLATFORM_INITHW
4022 #endif
4023 
4024 #ifndef BTE_BTA_CODE_INCLUDED
4025 #define BTE_BTA_CODE_INCLUDED FALSE
4026 #endif
4027 
4028 
4029 /******************************************************************************
4030 **
4031 ** BTTRC
4032 **
4033 ******************************************************************************/
4034 /* Whether to parse and display traces-> Platform specific implementation */
4035 #ifndef BTTRC_DISP
4036 #define BTTRC_DISP BTTRC_DispOnInsight
4037 #endif
4038 
4039 /******************************************************************************
4040 **
4041 ** Tracing: Include trace header file here.
4042 **
4043 ******************************************************************************/
4044 
4045 #include "bt_trace.h"
4046 
4047 #endif /* BT_TARGET_H */
4048