blob: fd5646273f6c5cd26d21bad9c8dcdd5d9148313e [file] [log] [blame]
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -08001/******************************************************************************
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
19#ifndef NFC_TARGET_H
20#define NFC_TARGET_H
21
22#include "data_types.h"
23
24#ifdef BUILDCFG
25#include "buildcfg.h"
26#endif
27
28/* Include common GKI definitions used by this platform */
29#include "gki_target.h"
30
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080031#include "bt_types.h" /* This must be defined AFTER buildcfg.h */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080032#ifndef LMP_TEST
33#include "bt_trace.h"
34#endif
35
Ruchi Kandoi303fec12016-12-14 13:22:38 -080036#ifndef USERIAL_DEBUG
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080037#define USERIAL_DEBUG FALSE
Ruchi Kandoi303fec12016-12-14 13:22:38 -080038#endif
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080039
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080040/******************************************************************************
41**
42** GKI Mail Box and Timer
43**
44******************************************************************************/
45
46/* Mailbox event mask for NFC stack */
47#ifndef NFC_MBOX_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080048#define NFC_MBOX_EVT_MASK (TASK_MBOX_0_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080049#endif
50
51/* Mailbox ID for NFC stack */
52#ifndef NFC_MBOX_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080053#define NFC_MBOX_ID (TASK_MBOX_0)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080054#endif
55
56/* Mailbox event mask for NFA */
57#ifndef NFA_MBOX_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080058#define NFA_MBOX_EVT_MASK (TASK_MBOX_2_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080059#endif
60
61/* Mailbox ID for NFA */
62#ifndef NFA_MBOX_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080063#define NFA_MBOX_ID (TASK_MBOX_2)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080064#endif
65
66/* GKI timer id used for protocol timer in NFC stack */
67#ifndef NFC_TIMER_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080068#define NFC_TIMER_ID (TIMER_0)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080069#endif
70
71/* GKI timer event mask used for protocol timer in NFC stack */
72#ifndef NFC_TIMER_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080073#define NFC_TIMER_EVT_MASK (TIMER_0_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080074#endif
75
76/* GKI timer id used for quick timer in NFC stack */
77#ifndef NFC_QUICK_TIMER_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080078#define NFC_QUICK_TIMER_ID (TIMER_1)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080079#endif
80
81/* GKI timer event mask used for quick timer in NFC stack */
82#ifndef NFC_QUICK_TIMER_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080083#define NFC_QUICK_TIMER_EVT_MASK (TIMER_1_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080084#endif
85
86/* GKI timer id used for protocol timer in NFA */
87#ifndef NFA_TIMER_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080088#define NFA_TIMER_ID (TIMER_2)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080089#endif
90
91/* GKI timer event mask used for protocol timer in NFA */
92#ifndef NFA_TIMER_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080093#define NFA_TIMER_EVT_MASK (TIMER_2_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080094#endif
95
96/******************************************************************************
97**
98** GKI Buffer Pools
99**
100******************************************************************************/
101
102/* NCI command/notification/data */
103#ifndef NFC_NCI_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800104#define NFC_NCI_POOL_ID GKI_POOL_ID_2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800105#endif
106
107#ifndef NFC_NCI_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800108#define NFC_NCI_POOL_BUF_SIZE GKI_BUF2_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800109#endif
110
111/* Reader/Write commands (NCI data payload) */
112#ifndef NFC_RW_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800113#define NFC_RW_POOL_ID GKI_POOL_ID_2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800114#endif
115
116#ifndef NFC_RW_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800117#define NFC_RW_POOL_BUF_SIZE GKI_BUF2_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800118#endif
119
120/* Card Emulation responses (NCI data payload) */
121#ifndef NFC_CE_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800122#define NFC_CE_POOL_ID GKI_POOL_ID_2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800123#endif
124
125#ifndef NFC_CE_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800126#define NFC_CE_POOL_BUF_SIZE GKI_BUF2_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800127#endif
128
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700129/* NCI msg pool for HAL (for shared NFC/HAL GKI)*/
130#ifndef NFC_HAL_NCI_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800131#define NFC_HAL_NCI_POOL_ID NFC_NCI_POOL_ID
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700132#endif
133
134#ifndef NFC_HAL_NCI_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800135#define NFC_HAL_NCI_POOL_BUF_SIZE NFC_NCI_POOL_BUF_SIZE
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700136#endif
137
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800138/******************************************************************************
139**
140** NCI Transport definitions
141**
142******************************************************************************/
143/* offset of the first NCI packet in buffer for outgoing */
144#ifndef NCI_MSG_OFFSET_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800145#define NCI_MSG_OFFSET_SIZE 1
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800146#endif
147
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800148/* Restore NFCC baud rate to default on shutdown if NFC_UpdateBaudRate was
149 * called */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800150#ifndef NFC_RESTORE_BAUD_ON_SHUTDOWN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800151#define NFC_RESTORE_BAUD_ON_SHUTDOWN TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800152#endif
153
154/******************************************************************************
155**
156** NCI
157**
158******************************************************************************/
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700159#define NCI_VERSION_UNKNOWN 0x00
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800160#define NCI_VERSION_1_0 0x10
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700161#define NCI_VERSION_1_1 0x11
162#define NCI_VERSION_2_0 0x20
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800163#ifndef NCI_VERSION
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700164#define NCI_VERSION NCI_VERSION_2_0
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800165#endif
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700166#define NCI_CORE_RESET_RSP_LEN(X) (((X) == NCI_VERSION_2_0) ? (0x01) : (0x03))
167#define NCI_VERSION_0_F 0x0F
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800168
169/* TRUE I2C patch is needed */
170#ifndef NFC_I2C_PATCH_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800171#define NFC_I2C_PATCH_INCLUDED TRUE /* NFC-Android uses this!!! */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800172#endif
173
174/******************************************************************************
175**
176** NFC
177**
178******************************************************************************/
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800179
180/* Define to TRUE to include Broadcom Vendor Specific implementation */
181#ifndef NFC_BRCM_VS_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800182#define NFC_BRCM_VS_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800183#endif
184
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800185/* Define to TRUE if compling for NFC Reader/Writer Only mode */
186#ifndef NFC_RW_ONLY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800187#define NFC_RW_ONLY FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800188#endif
189
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800190/* Timeout for receiving response to NCI command */
191#ifndef NFC_CMD_CMPL_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800192#define NFC_CMD_CMPL_TIMEOUT 2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800193#endif
194
195/* Timeout for waiting on data credit/NFC-DEP */
196#ifndef NFC_DEACTIVATE_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800197#define NFC_DEACTIVATE_TIMEOUT 2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800198#endif
199
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800200/* the maximum number of Vendor Specific callback functions allowed to be
201 * registered. 1-14 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800202#ifndef NFC_NUM_VS_CBACKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800203#define NFC_NUM_VS_CBACKS 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800204#endif
205
206/* the maximum number of NCI connections allowed. 1-14 */
207#ifndef NCI_MAX_CONN_CBS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800208#define NCI_MAX_CONN_CBS 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800209#endif
210
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800211/* Maximum number of NCI commands that the NFCC accepts without needing to wait
212 * for response */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800213#ifndef NCI_MAX_CMD_WINDOW
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800214#define NCI_MAX_CMD_WINDOW 1
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800215#endif
216
217/* Define to TRUE to include the NFCEE related functionalities */
218#ifndef NFC_NFCEE_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800219#define NFC_NFCEE_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800220#endif
221
222/* the maximum number of NFCEE interface supported */
223#ifndef NFC_MAX_EE_INTERFACE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800224#define NFC_MAX_EE_INTERFACE 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800225#endif
226
227/* the maximum number of NFCEE information supported. */
228#ifndef NFC_MAX_EE_INFO
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800229#define NFC_MAX_EE_INFO 8
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800230#endif
231
232/* the maximum number of NFCEE TLVs supported */
233#ifndef NFC_MAX_EE_TLVS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800234#define NFC_MAX_EE_TLVS 1
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800235#endif
236
237/* the maximum size of NFCEE TLV list supported */
238#ifndef NFC_MAX_EE_TLV_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800239#define NFC_MAX_EE_TLV_SIZE 150
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800240#endif
241
Evan Chudf5080d2013-06-14 13:57:47 -0400242/* Maximum time to discover NFCEE */
243#ifndef NFA_EE_DISCV_TIMEOUT_VAL
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800244#define NFA_EE_DISCV_TIMEOUT_VAL 2000
Evan Chudf5080d2013-06-14 13:57:47 -0400245#endif
246
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800247/* Number of times reader/writer should attempt to resend a command on failure
248 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800249#ifndef RW_MAX_RETRIES
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800250#define RW_MAX_RETRIES 5
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800251#endif
252
253/* RW NDEF Support */
254#ifndef RW_NDEF_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800255#define RW_NDEF_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800256#endif
257
258/* RW Type 1 Tag timeout for each API call, in ms */
259#ifndef RW_T1T_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800260#define RW_T1T_TOUT_RESP 100
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800261#endif
262
263/* CE Type 2 Tag timeout for controller command, in ms */
264#ifndef CE_T2T_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800265#define CE_T2T_TOUT_RESP 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800266#endif
267
268/* RW Type 2 Tag timeout for each API call, in ms */
269#ifndef RW_T2T_TOUT_RESP
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800270/* Android requires 150 instead of 100 for presence-check*/
271#define RW_T2T_TOUT_RESP 150
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800272#endif
273
274/* RW Type 2 Tag timeout for each API call, in ms */
275#ifndef RW_T2T_SEC_SEL_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800276#define RW_T2T_SEC_SEL_TOUT_RESP 10
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800277#endif
278
279/* RW Type 3 Tag timeout for each API call, in ms */
280#ifndef RW_T3T_TOUT_RESP
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800281/* NFC-Android will use 100 instead of 75 for T3t presence-check */
282#define RW_T3T_TOUT_RESP 100
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800283#endif
284
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800285/* CE Type 3 Tag maximum response timeout index (for check and update, used in
286 * SENSF_RES) */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800287#ifndef CE_T3T_MRTI_C
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800288#define CE_T3T_MRTI_C 0xFF
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800289#endif
290#ifndef CE_T3T_MRTI_U
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800291#define CE_T3T_MRTI_U 0xFF
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800292#endif
293
294/* Default maxblocks for CE_T3T UPDATE/CHECK operations */
295#ifndef CE_T3T_DEFAULT_UPDATE_MAXBLOCKS
296#define CE_T3T_DEFAULT_UPDATE_MAXBLOCKS 3
297#endif
298
299#ifndef CE_T3T_DEFAULT_CHECK_MAXBLOCKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800300#define CE_T3T_DEFAULT_CHECK_MAXBLOCKS 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800301#endif
302
303/* CE Type 4 Tag, Frame Waiting time Integer */
304#ifndef CE_T4T_ISO_DEP_FWI
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800305#define CE_T4T_ISO_DEP_FWI 7
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800306#endif
307
308/* RW Type 4 Tag timeout for each API call, in ms */
309#ifndef RW_T4T_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800310#define RW_T4T_TOUT_RESP 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800311#endif
312
313/* CE Type 4 Tag timeout for update file, in ms */
314#ifndef CE_T4T_TOUT_UPDATE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800315#define CE_T4T_TOUT_UPDATE 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800316#endif
317
318/* CE Type 4 Tag, mandatory NDEF File ID */
319#ifndef CE_T4T_MANDATORY_NDEF_FILE_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800320#define CE_T4T_MANDATORY_NDEF_FILE_ID 0x1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800321#endif
322
323/* CE Type 4 Tag, max number of AID supported */
324#ifndef CE_T4T_MAX_REG_AID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800325#define CE_T4T_MAX_REG_AID 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800326#endif
327
328/* Sub carrier */
329#ifndef RW_I93_FLAG_SUB_CARRIER
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800330#define RW_I93_FLAG_SUB_CARRIER I93_FLAG_SUB_CARRIER_SINGLE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800331#endif
332
333/* Data rate for 15693 command/response */
334#ifndef RW_I93_FLAG_DATA_RATE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800335#define RW_I93_FLAG_DATA_RATE I93_FLAG_DATA_RATE_HIGH
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800336#endif
337
338/* TRUE, to include Card Emulation related test commands */
339#ifndef CE_TEST_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800340#define CE_TEST_INCLUDED FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800341#endif
342
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800343/* Quick Timer */
344#ifndef QUICK_TIMER_TICKS_PER_SEC
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800345#define QUICK_TIMER_TICKS_PER_SEC 100 /* 10ms timer */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800346#endif
347
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800348/******************************************************************************
349**
350** LLCP
351**
352******************************************************************************/
353
354#ifndef LLCP_TEST_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800355#define LLCP_TEST_INCLUDED FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800356#endif
357
358#ifndef LLCP_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800359#define LLCP_POOL_ID GKI_POOL_ID_3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800360#endif
361
362#ifndef LLCP_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800363#define LLCP_POOL_BUF_SIZE GKI_BUF3_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800364#endif
365
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800366/* LLCP Maximum Information Unit (between LLCP_DEFAULT_MIU(128) and LLCP_MAX_MIU
367 * (2175)*/
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800368#ifndef LLCP_MIU
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800369#define LLCP_MIU \
370 (LLCP_POOL_BUF_SIZE - NFC_HDR_SIZE - NCI_MSG_OFFSET_SIZE - \
371 NCI_DATA_HDR_SIZE - LLCP_PDU_HEADER_SIZE)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800372#endif
373
374/* Link Timeout, LTO */
375#ifndef LLCP_LTO_VALUE
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800376/* Default is 100ms. It should be sufficiently larger than RWT */
377#define LLCP_LTO_VALUE 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800378#endif
379
380/*
Ruchi Kandoi552f2b72017-01-28 16:22:55 -0800381** LTO is max time interval between the last bit received and the first bit sent
382** over the air. Link timeout must be delayed as much as time between the packet
383** sent from LLCP and the last bit transmitted at NFCC.
384** - 200ms, max OTA transmitting time between the first bit and the last bit at
385** NFCC. Largest MIU(2175bytes) of LLCP must be fragmented and sent on
386** NFC-DEP over the air. 8 * (DEP_REQ/RES+ACK) + DEP_REQ/RES for 2175 MIU at
387** 106kbps bit rate.
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800388** - 10ms, processing time
389*/
390#ifndef LLCP_INTERNAL_TX_DELAY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800391#define LLCP_INTERNAL_TX_DELAY 210
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800392#endif
393
394/*
Ruchi Kandoi552f2b72017-01-28 16:22:55 -0800395** LTO is max time interval between the last bit received and the first bit sent
396** over the air. Link timeout must be delayed as much as time between the first
397** bit received at NFCC and the packet received at LLCP.
398** - 200ms, max OTA transmitting time between the first bit and the last bit at
399** NFCC. LLCP cannot receive data packet until all bit are received and
400** reassembled in NCI. 8 * (DEP_REQ/RES+ACK) + DEP_REQ/RES for 2175 MIU at
401** 106kbps bit rate.
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800402** - 10ms, processing time
403*/
404#ifndef LLCP_INTERNAL_RX_DELAY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800405#define LLCP_INTERNAL_RX_DELAY 210
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800406#endif
407
408/* Wait for application layer sending data before sending SYMM */
409#ifndef LLCP_DELAY_RESP_TIME
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800410#define LLCP_DELAY_RESP_TIME 20 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800411#endif
412
413/* LLCP inactivity timeout for initiator */
414#ifndef LLCP_INIT_INACTIVITY_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800415#define LLCP_INIT_INACTIVITY_TIMEOUT 0 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800416#endif
417
418/* LLCP inactivity timeout for target */
419#ifndef LLCP_TARGET_INACTIVITY_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800420#define LLCP_TARGET_INACTIVITY_TIMEOUT 0 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800421#endif
422
423/* LLCP delay timeout to send the first PDU as initiator */
424#ifndef LLCP_DELAY_TIME_TO_SEND_FIRST_PDU
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800425#define LLCP_DELAY_TIME_TO_SEND_FIRST_PDU 50 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800426#endif
427
428/* Response Waiting Time */
429#ifndef LLCP_WAITING_TIME
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800430/* its scaled value should be less than LTO */
431#define LLCP_WAITING_TIME 7
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800432#endif
433
434/* Options Parameters */
435#ifndef LLCP_OPT_VALUE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800436#define LLCP_OPT_VALUE LLCP_LSC_3 /* Link Service Class 3 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800437#endif
438
439/* Data link connection timeout */
440#ifndef LLCP_DATA_LINK_CONNECTION_TOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800441#define LLCP_DATA_LINK_CONNECTION_TOUT 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800442#endif
443
444/* Max length of service name */
445#ifndef LLCP_MAX_SN_LEN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800446#define LLCP_MAX_SN_LEN 255 /* max length of service name */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800447#endif
448
449/* Max number of well-known services, at least 2 for LM and SDP and up to 16 */
450#ifndef LLCP_MAX_WKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800451#define LLCP_MAX_WKS 5
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800452#endif
453
454/* Max number of services advertised by local SDP, up to 16 */
455#ifndef LLCP_MAX_SERVER
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800456#define LLCP_MAX_SERVER 10
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800457#endif
458
459/* Max number of services not advertised by local SDP, up to 32 */
460#ifndef LLCP_MAX_CLIENT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800461#define LLCP_MAX_CLIENT 20
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800462#endif
463
464/* Max number of data link connections */
465#ifndef LLCP_MAX_DATA_LINK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800466#define LLCP_MAX_DATA_LINK 16
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800467#endif
468
469/* Max number of outstanding service discovery requests */
470#ifndef LLCP_MAX_SDP_TRANSAC
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800471#define LLCP_MAX_SDP_TRANSAC 16
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800472#endif
473
474/* Percentage of LLCP buffer pool for receiving data */
475#ifndef LLCP_RX_BUFF_RATIO
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800476#define LLCP_RX_BUFF_RATIO 30
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800477#endif
478
479/* Rx congestion end threshold as percentage of receiving buffers */
480#ifndef LLCP_RX_CONGEST_END
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800481#define LLCP_RX_CONGEST_END 50
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800482#endif
483
484/* Rx congestion start threshold as percentage of receiving buffers */
485#ifndef LLCP_RX_CONGEST_START
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800486#define LLCP_RX_CONGEST_START 70
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800487#endif
488
489/* limitation of rx UI PDU as percentage of receiving buffers */
490#ifndef LLCP_LL_RX_BUFF_LIMIT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800491#define LLCP_LL_RX_BUFF_LIMIT 30
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800492#endif
493
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800494/* minimum rx congestion threshold (number of rx I PDU in queue) for data link
495 * connection */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800496#ifndef LLCP_DL_MIN_RX_CONGEST
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800497#define LLCP_DL_MIN_RX_CONGEST 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800498#endif
499
500/* limitation of tx UI PDU as percentage of transmitting buffers */
501#ifndef LLCP_LL_TX_BUFF_LIMIT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800502#define LLCP_LL_TX_BUFF_LIMIT 30
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800503#endif
504
505/******************************************************************************
506**
507** NFA
508**
509******************************************************************************/
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800510
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800511#ifndef NFA_P2P_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800512#define NFA_P2P_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800513#endif
514
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700515/* Maximum Idle time (no hcp) to wait for EE DISC REQ Ntf(s) */
516#ifndef NFA_HCI_NETWK_INIT_IDLE_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800517#define NFA_HCI_NETWK_INIT_IDLE_TIMEOUT 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800518#endif
519
520#ifndef NFA_HCI_MAX_HOST_IN_NETWORK
521#define NFA_HCI_MAX_HOST_IN_NETWORK 0x06
522#endif
523
524/* Max number of Application that can be registered to NFA-HCI */
525#ifndef NFA_HCI_MAX_APP_CB
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800526#define NFA_HCI_MAX_APP_CB 0x05
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800527#endif
528
529/* Max number of HCI gates that can be created */
530#ifndef NFA_HCI_MAX_GATE_CB
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800531#define NFA_HCI_MAX_GATE_CB 0x06
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800532#endif
533
534/* Max number of HCI pipes that can be created for the whole system */
535#ifndef NFA_HCI_MAX_PIPE_CB
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800536#define NFA_HCI_MAX_PIPE_CB 0x08
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800537#endif
538
539/* Timeout for waiting for the response to HCP Command packet */
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700540#ifndef NFA_HCI_RESPONSE_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800541#define NFA_HCI_RESPONSE_TIMEOUT 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800542#endif
543
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800544/* Default poll duration (may be over-ridden using NFA_SetRfDiscoveryDuration)
545 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800546#ifndef NFA_DM_DISC_DURATION_POLL
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800547#define NFA_DM_DISC_DURATION_POLL 500 /* Android requires 500 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800548#endif
549
550/* Automatic NDEF detection (when not in exclusive RF mode) */
551#ifndef NFA_DM_AUTO_DETECT_NDEF
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800552#define NFA_DM_AUTO_DETECT_NDEF FALSE /* !!!!! NFC-Android needs FALSE */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800553#endif
554
555/* Automatic NDEF read (when not in exclusive RF mode) */
556#ifndef NFA_DM_AUTO_READ_NDEF
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800557#define NFA_DM_AUTO_READ_NDEF FALSE /* !!!!! NFC-Android needs FALSE */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800558#endif
559
Evan Chua24be4f2013-11-13 15:30:16 -0500560/* Automatic NDEF presence check (when not in exclusive RF mode) */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800561#ifndef NFA_DM_AUTO_PRESENCE_CHECK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800562#define NFA_DM_AUTO_PRESENCE_CHECK FALSE /* Android requires FALSE */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800563#endif
564
Evan Chua24be4f2013-11-13 15:30:16 -0500565/* Presence check option: 0x01: use sleep/wake for none-NDEF ISO-DEP tags */
566#ifndef NFA_DM_PRESENCE_CHECK_OPTION
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800567/* !!!!! Android needs value 3 */
568#define NFA_DM_PRESENCE_CHECK_OPTION 0x03
Evan Chua24be4f2013-11-13 15:30:16 -0500569#endif
570
571/* Maximum time to wait for presence check response */
572#ifndef NFA_DM_MAX_PRESENCE_CHECK_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800573#define NFA_DM_MAX_PRESENCE_CHECK_TIMEOUT 500
Evan Chua24be4f2013-11-13 15:30:16 -0500574#endif
575
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700576/* Default delay to auto presence check after sending raw frame */
577#ifndef NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800578#define NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY 750
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700579#endif
580
Evan Chu7c69b272013-05-14 12:48:36 -0400581/* Timeout for reactivation of Kovio bar code tag (presence check) */
582#ifndef NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800583#define NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK (1000)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800584#endif
585
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800586/* Max number of NDEF type handlers that can be registered (including the
587 * default handler) */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800588#ifndef NFA_NDEF_MAX_HANDLERS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800589#define NFA_NDEF_MAX_HANDLERS 8
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800590#endif
591
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800592/* Maximum number of listen entries configured/registered with
593 * NFA_CeConfigureUiccListenTech, */
594/* NFA_CeRegisterFelicaSystemCodeOnDH, or NFA_CeRegisterT4tAidOnDH */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800595#ifndef NFA_CE_LISTEN_INFO_MAX
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800596#define NFA_CE_LISTEN_INFO_MAX 5
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800597#endif
598
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800599#ifndef NFA_SNEP_INCLUDED
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800600/* Android must use FALSE to exclude SNEP */
601#define NFA_SNEP_INCLUDED FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800602#endif
603
604/* Max acceptable length */
605#ifndef NFA_SNEP_DEFAULT_SERVER_MAX_NDEF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800606#define NFA_SNEP_DEFAULT_SERVER_MAX_NDEF_SIZE 500000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800607#endif
608
609/* Max number of SNEP server/client and data link connection */
610#ifndef NFA_SNEP_MAX_CONN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800611#define NFA_SNEP_MAX_CONN 6
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800612#endif
613
614/* Max number data link connection of SNEP default server*/
615#ifndef NFA_SNEP_DEFAULT_MAX_CONN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800616#define NFA_SNEP_DEFAULT_MAX_CONN 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800617#endif
618
619/* MIU for SNEP */
620#ifndef NFA_SNEP_MIU
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800621#define NFA_SNEP_MIU 1980 /* Modified for NFC-A */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800622#endif
623
624/* Receiving Window for SNEP */
625#ifndef NFA_SNEP_RW
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800626#define NFA_SNEP_RW 2 /* Modified for NFC-A */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800627#endif
628
629/* Max number of NFCEE supported */
630#ifndef NFA_EE_MAX_EE_SUPPORTED
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800631/* Modified for NFC-A until we add dynamic support */
632#define NFA_EE_MAX_EE_SUPPORTED 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800633#endif
634
635/* Maximum number of AID entries per target_handle */
636#ifndef NFA_EE_MAX_AID_ENTRIES
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800637#define NFA_EE_MAX_AID_ENTRIES (32)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800638#endif
639
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800640/* Maximum number of callback functions can be registered through
641 * NFA_EeRegister() */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800642#ifndef NFA_EE_MAX_CBACKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800643#define NFA_EE_MAX_CBACKS (3)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800644#endif
645
646#ifndef NFA_DTA_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800647#define NFA_DTA_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800648#endif
649
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700650/*****************************************************************************
651** Define HAL_WRITE depending on whether HAL is using shared GKI resources
652** as the NFC stack.
653*****************************************************************************/
654#ifndef HAL_WRITE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800655#define HAL_WRITE(p) \
656 { \
657 nfc_cb.p_hal->write(p->len, (uint8_t*)(p + 1) + p->offset); \
658 GKI_freebuf(p); \
659 }
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700660
Evan Chua24be4f2013-11-13 15:30:16 -0500661#ifdef NFC_HAL_SHARED_GKI
662
663/* NFC HAL Included if NFC_NFCEE_INCLUDED */
664#if (NFC_NFCEE_INCLUDED == TRUE)
665
666#ifndef NFC_HAL_HCI_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800667#define NFC_HAL_HCI_INCLUDED TRUE
Evan Chua24be4f2013-11-13 15:30:16 -0500668#endif
669#else /* NFC_NFCEE_INCLUDED == TRUE */
670#ifndef NFC_HAL_HCI_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800671#define NFC_HAL_HCI_INCLUDED FALSE
Evan Chua24be4f2013-11-13 15:30:16 -0500672#endif
673
674#endif /* NFC_NFCEE_INCLUDED == FALSE */
675
676#endif /* NFC_HAL_SHARED_GKI */
677
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700678#endif /* HAL_WRITE */
679
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800680#endif /* NFC_TARGET_H */