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