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