1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2012-2014 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
185c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_HAL_TARGET_H
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_HAL_TARGET_H
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef BUILDCFG
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "buildcfg_hal.h"
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "data_types.h"
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Task configuration
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project******************************************************************************/
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Definitions of task IDs for inter-task messaging */
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_TASK
366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NFC_HAL_TASK 0
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The number of GKI tasks in the software system. */
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_TASKS
416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MAX_TASKS 1
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
445c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/******************************************************************************
455c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen**
465c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** Buffer pool assignment
475c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen**
485c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen******************************************************************************/
495c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
505c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* GKI pool for NCI messages */
515c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifndef NFC_HAL_NCI_POOL_ID
526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NFC_HAL_NCI_POOL_ID GKI_POOL_ID_1
535c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
545c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
555c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifndef NFC_HAL_NCI_POOL_BUF_SIZE
566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NFC_HAL_NCI_POOL_BUF_SIZE GKI_BUF1_SIZE
575c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
585c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Timer configuration
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project******************************************************************************/
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The number of GKI timers in the software system. */
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_NUM_TIMERS
676fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_NUM_TIMERS 2
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* A conversion value for translating ticks to calculate GKI timer.  */
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef TICKS_PER_SEC
726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define TICKS_PER_SEC 100
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Utility macros converting ticks to time with user define OS ticks per sec
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MS_TO_TICKS
796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MS_TO_TICKS(x) ((x) / (1000 / TICKS_PER_SEC))
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_SECS_TO_TICKS
836fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_SECS_TO_TICKS(x) ((x) * (TICKS_PER_SEC))
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_TICKS_TO_MS
876fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TICKS_TO_MS(x) ((x)*1000 / TICKS_PER_SEC)
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_TICKS_TO_SECS
916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TICKS_TO_SECS(x) ((x) / TICKS_PER_SEC)
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
946fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi/* TICK per second from OS (OS dependent change this macro accordingly to
956fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi * various OS) */
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef OS_TICKS_PER_SEC
976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define OS_TICKS_PER_SEC 1000
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/************************************************************************
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Utility macros converting ticks to time with user define OS ticks per sec
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**/
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_OS_TICKS_TO_MS
1056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_OS_TICKS_TO_MS(x) ((x)*1000 / OS_TICKS_PER_SEC)
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_OS_TICKS_TO_SECS
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_OS_TICKS_TO_SECS(x)   ((x) / OS_TICKS_PER_SEC))
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* delay in ticks before stopping system tick. */
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_DELAY_STOP_SYS_TICK
1146fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_DELAY_STOP_SYS_TICK 10
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
1176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi/* Option to guarantee no preemption during timer expiration (most system don't
1186fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi * need this) */
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_TIMER_LIST_NOPREEMPT
1206fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TIMER_LIST_NOPREEMPT FALSE
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Buffer configuration
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project******************************************************************************/
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* TRUE if GKI uses dynamic buffers. */
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_USE_DYNAMIC_BUFFERS
1316fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_USE_DYNAMIC_BUFFERS FALSE
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The size of the buffers in pool 0. */
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF0_SIZE
1366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF0_SIZE 64
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The number of buffers in buffer pool 0. */
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF0_MAX
1416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF0_MAX 8
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The ID of buffer pool 0. */
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_0
1466fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_0 0
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The size of the buffers in pool 1. */
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF1_SIZE
1516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF1_SIZE 288
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The number of buffers in buffer pool 1. */
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_BUF1_MAX
1566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_BUF1_MAX 8
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The ID of buffer pool 1. */
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_POOL_ID_1
1616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_POOL_ID_1 1
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The size of the largest PUBLIC fixed buffer in system. */
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_BUF_SIZE
1666fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MAX_BUF_SIZE GKI_BUF1_SIZE
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The pool ID of the largest PUBLIC fixed buffer in system. */
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_BUF_SIZE_POOL_ID
1716fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MAX_BUF_SIZE_POOL_ID GKI_POOL_ID_1
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
1746fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi/* buffer size for USERIAL, it must large enough to hold NFC_HDR and max packet
1756fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi * size */
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef USERIAL_POOL_BUF_SIZE
1776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define USERIAL_POOL_BUF_SIZE GKI_BUF1_SIZE
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* buffer pool ID for USERIAL */
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef USERIAL_POOL_ID
1826fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define USERIAL_POOL_ID GKI_POOL_ID_1
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_NUM_FIXED_BUF_POOLS
1866fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_NUM_FIXED_BUF_POOLS 2
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The number of fixed and dynamic buffer pools */
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_NUM_TOTAL_BUF_POOLS
1916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_NUM_TOTAL_BUF_POOLS 2
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The buffer pool usage mask. */
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_DEF_BUFPOOL_PERM_MASK
1966fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_DEF_BUFPOOL_PERM_MASK 0xfff0
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The buffer corruption check flag. */
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_ENABLE_BUF_CORRUPTION_CHECK
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_ENABLE_BUF_CORRUPTION_CHECK TRUE
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* The GKI severe error macro. */
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_SEVERE
206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_SEVERE(code)
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* TRUE if GKI includes debug functionality. */
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_DEBUG
2116fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_DEBUG FALSE
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Maximum number of exceptions logged. */
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_EXCEPTION
2166fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MAX_EXCEPTION 8
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Maximum number of chars stored for each exception message. */
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_MAX_EXCEPTION_MSGLEN
2216fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_MAX_EXCEPTION_MSGLEN 64
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_SEND_MSG_FROM_ISR
2256fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_SEND_MSG_FROM_ISR FALSE
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
228303fec1d79b7ac30a09713e5db9fff299f7227fbRuchi Kandoi#if (GKI_DEBUG == TRUE)
2295c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#ifdef LOG_TAG
2305c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#undef LOG_TAG
2315c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
2325c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define LOG_TAG "GKI_LINUX"
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* GKI Trace Macros */
2346fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_0(m)                                          \
2356fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2366fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m)
2386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_1(m, p1)                                      \
2396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m, p1)
2426fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_2(m, p1, p2)                                  \
2436fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2446fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2456fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m, p1, p2)
2466fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_3(m, p1, p2, p3)                              \
2476fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2486fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m, p1, p2, p3)
2506fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_4(m, p1, p2, p3, p4)                          \
2516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m, p1, p2, p3, p4)
2546fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_5(m, p1, p2, p3, p4, p5)                      \
2556fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m, p1, p2, p3, p4, p5)
2586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_6(m, p1, p2, p3, p4, p5, p6)                  \
2596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
2606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi             TRACE_TYPE_GENERIC,                                \
2616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi         m, p1, p2, p3, p4, p5, p6)
2625c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#else
2635c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define GKI_TRACE_0(m)
2646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_1(m, p1)
2656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_2(m, p1, p2)
2666fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_3(m, p1, p2, p3)
2676fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_4(m, p1, p2, p3, p4)
2686fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_5(m, p1, p2, p3, p4, p5)
2696fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_6(m, p1, p2, p3, p4, p5, p6)
2706fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi
2716fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#endif
2726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi
2736fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_0(m)                                                   \
2746fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2756fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
2766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m)
2776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_1(m, p1)                                               \
2786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
2806fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m, p1)
2816fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_2(m, p1, p2)                                           \
2826fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2836fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
2846fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m, p1, p2)
2856fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_3(m, p1, p2, p3)                                       \
2866fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2876fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
2886fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m, p1, p2, p3)
2896fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_4(m, p1, p2, p3, p4)                                   \
2906fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
2926fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m, p1, p2, p3, p4)
2936fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_5(m, p1, p2, p3, p4, p5)                               \
2946fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2956fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
2966fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m, p1, p2, p3, p4, p5)
2976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define GKI_TRACE_ERROR_6(m, p1, p2, p3, p4, p5, p6)                           \
2986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  LogMsg(                                                                      \
2996fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
3006fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi      m, p1, p2, p3, p4, p5, p6)
301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
3036fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern "C" {
304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
3066fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);
307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
3126fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#endif /* GKI_TARGET_H */
313