blob: efa129401c6888da78879f0f0707c273478f9fb9 [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
Ruchi Kandoi6767aec2017-09-26 09:46:26 -070022#include "_OverrideLog.h"
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080023#include "data_types.h"
24
25#ifdef BUILDCFG
26#include "buildcfg.h"
27#endif
28
29/* Include common GKI definitions used by this platform */
30#include "gki_target.h"
31
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080032#include "bt_types.h" /* This must be defined AFTER buildcfg.h */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080033
Ruchi Kandoi303fec12016-12-14 13:22:38 -080034#ifndef USERIAL_DEBUG
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080035#define USERIAL_DEBUG FALSE
Ruchi Kandoi303fec12016-12-14 13:22:38 -080036#endif
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080037
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080038/******************************************************************************
39**
40** GKI Mail Box and Timer
41**
42******************************************************************************/
43
44/* Mailbox event mask for NFC stack */
45#ifndef NFC_MBOX_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080046#define NFC_MBOX_EVT_MASK (TASK_MBOX_0_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080047#endif
48
49/* Mailbox ID for NFC stack */
50#ifndef NFC_MBOX_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080051#define NFC_MBOX_ID (TASK_MBOX_0)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080052#endif
53
54/* Mailbox event mask for NFA */
55#ifndef NFA_MBOX_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080056#define NFA_MBOX_EVT_MASK (TASK_MBOX_2_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080057#endif
58
59/* Mailbox ID for NFA */
60#ifndef NFA_MBOX_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080061#define NFA_MBOX_ID (TASK_MBOX_2)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080062#endif
63
64/* GKI timer id used for protocol timer in NFC stack */
65#ifndef NFC_TIMER_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080066#define NFC_TIMER_ID (TIMER_0)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080067#endif
68
69/* GKI timer event mask used for protocol timer in NFC stack */
70#ifndef NFC_TIMER_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080071#define NFC_TIMER_EVT_MASK (TIMER_0_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080072#endif
73
74/* GKI timer id used for quick timer in NFC stack */
75#ifndef NFC_QUICK_TIMER_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080076#define NFC_QUICK_TIMER_ID (TIMER_1)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080077#endif
78
79/* GKI timer event mask used for quick timer in NFC stack */
80#ifndef NFC_QUICK_TIMER_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080081#define NFC_QUICK_TIMER_EVT_MASK (TIMER_1_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080082#endif
83
84/* GKI timer id used for protocol timer in NFA */
85#ifndef NFA_TIMER_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080086#define NFA_TIMER_ID (TIMER_2)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080087#endif
88
89/* GKI timer event mask used for protocol timer in NFA */
90#ifndef NFA_TIMER_EVT_MASK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -080091#define NFA_TIMER_EVT_MASK (TIMER_2_EVT_MASK)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -080092#endif
93
94/******************************************************************************
95**
96** GKI Buffer Pools
97**
98******************************************************************************/
99
100/* NCI command/notification/data */
101#ifndef NFC_NCI_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800102#define NFC_NCI_POOL_ID GKI_POOL_ID_2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800103#endif
104
105#ifndef NFC_NCI_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800106#define NFC_NCI_POOL_BUF_SIZE GKI_BUF2_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800107#endif
108
109/* Reader/Write commands (NCI data payload) */
110#ifndef NFC_RW_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800111#define NFC_RW_POOL_ID GKI_POOL_ID_2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800112#endif
113
114#ifndef NFC_RW_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800115#define NFC_RW_POOL_BUF_SIZE GKI_BUF2_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800116#endif
117
118/* Card Emulation responses (NCI data payload) */
119#ifndef NFC_CE_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800120#define NFC_CE_POOL_ID GKI_POOL_ID_2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800121#endif
122
123#ifndef NFC_CE_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800124#define NFC_CE_POOL_BUF_SIZE GKI_BUF2_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800125#endif
126
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700127/* NCI msg pool for HAL (for shared NFC/HAL GKI)*/
128#ifndef NFC_HAL_NCI_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800129#define NFC_HAL_NCI_POOL_ID NFC_NCI_POOL_ID
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700130#endif
131
132#ifndef NFC_HAL_NCI_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800133#define NFC_HAL_NCI_POOL_BUF_SIZE NFC_NCI_POOL_BUF_SIZE
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700134#endif
135
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800136/******************************************************************************
137**
138** NCI Transport definitions
139**
140******************************************************************************/
141/* offset of the first NCI packet in buffer for outgoing */
142#ifndef NCI_MSG_OFFSET_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800143#define NCI_MSG_OFFSET_SIZE 1
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800144#endif
145
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800146/* Restore NFCC baud rate to default on shutdown if NFC_UpdateBaudRate was
147 * called */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800148#ifndef NFC_RESTORE_BAUD_ON_SHUTDOWN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800149#define NFC_RESTORE_BAUD_ON_SHUTDOWN TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800150#endif
151
152/******************************************************************************
153**
154** NCI
155**
156******************************************************************************/
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700157#define NCI_VERSION_UNKNOWN 0x00
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800158#define NCI_VERSION_1_0 0x10
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700159#define NCI_VERSION_2_0 0x20
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800160#ifndef NCI_VERSION
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700161#define NCI_VERSION NCI_VERSION_2_0
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800162#endif
Ruchi Kandoi3f64b002017-03-27 16:52:28 -0700163#define NCI_CORE_RESET_RSP_LEN(X) (((X) == NCI_VERSION_2_0) ? (0x01) : (0x03))
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800164
165/* TRUE I2C patch is needed */
166#ifndef NFC_I2C_PATCH_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800167#define NFC_I2C_PATCH_INCLUDED TRUE /* NFC-Android uses this!!! */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800168#endif
169
170/******************************************************************************
171**
172** NFC
173**
174******************************************************************************/
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800175
176/* Define to TRUE to include Broadcom Vendor Specific implementation */
177#ifndef NFC_BRCM_VS_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800178#define NFC_BRCM_VS_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800179#endif
180
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800181/* Define to TRUE if compling for NFC Reader/Writer Only mode */
182#ifndef NFC_RW_ONLY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800183#define NFC_RW_ONLY FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800184#endif
185
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800186/* Timeout for receiving response to NCI command */
187#ifndef NFC_CMD_CMPL_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800188#define NFC_CMD_CMPL_TIMEOUT 2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800189#endif
190
191/* Timeout for waiting on data credit/NFC-DEP */
192#ifndef NFC_DEACTIVATE_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800193#define NFC_DEACTIVATE_TIMEOUT 2
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800194#endif
195
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800196/* the maximum number of Vendor Specific callback functions allowed to be
197 * registered. 1-14 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800198#ifndef NFC_NUM_VS_CBACKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800199#define NFC_NUM_VS_CBACKS 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800200#endif
201
202/* the maximum number of NCI connections allowed. 1-14 */
203#ifndef NCI_MAX_CONN_CBS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800204#define NCI_MAX_CONN_CBS 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800205#endif
206
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800207/* Maximum number of NCI commands that the NFCC accepts without needing to wait
208 * for response */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800209#ifndef NCI_MAX_CMD_WINDOW
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800210#define NCI_MAX_CMD_WINDOW 1
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800211#endif
212
213/* Define to TRUE to include the NFCEE related functionalities */
214#ifndef NFC_NFCEE_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800215#define NFC_NFCEE_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800216#endif
217
218/* the maximum number of NFCEE interface supported */
219#ifndef NFC_MAX_EE_INTERFACE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800220#define NFC_MAX_EE_INTERFACE 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800221#endif
222
223/* the maximum number of NFCEE information supported. */
224#ifndef NFC_MAX_EE_INFO
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800225#define NFC_MAX_EE_INFO 8
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800226#endif
227
228/* the maximum number of NFCEE TLVs supported */
229#ifndef NFC_MAX_EE_TLVS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800230#define NFC_MAX_EE_TLVS 1
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800231#endif
232
233/* the maximum size of NFCEE TLV list supported */
234#ifndef NFC_MAX_EE_TLV_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800235#define NFC_MAX_EE_TLV_SIZE 150
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800236#endif
237
Evan Chudf5080d2013-06-14 13:57:47 -0400238/* Maximum time to discover NFCEE */
239#ifndef NFA_EE_DISCV_TIMEOUT_VAL
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800240#define NFA_EE_DISCV_TIMEOUT_VAL 2000
Evan Chudf5080d2013-06-14 13:57:47 -0400241#endif
242
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800243/* Number of times reader/writer should attempt to resend a command on failure
244 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800245#ifndef RW_MAX_RETRIES
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800246#define RW_MAX_RETRIES 5
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800247#endif
248
249/* RW NDEF Support */
250#ifndef RW_NDEF_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800251#define RW_NDEF_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800252#endif
253
254/* RW Type 1 Tag timeout for each API call, in ms */
255#ifndef RW_T1T_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800256#define RW_T1T_TOUT_RESP 100
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800257#endif
258
259/* CE Type 2 Tag timeout for controller command, in ms */
260#ifndef CE_T2T_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800261#define CE_T2T_TOUT_RESP 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800262#endif
263
264/* RW Type 2 Tag timeout for each API call, in ms */
265#ifndef RW_T2T_TOUT_RESP
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800266/* Android requires 150 instead of 100 for presence-check*/
267#define RW_T2T_TOUT_RESP 150
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800268#endif
269
270/* RW Type 2 Tag timeout for each API call, in ms */
271#ifndef RW_T2T_SEC_SEL_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800272#define RW_T2T_SEC_SEL_TOUT_RESP 10
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800273#endif
274
275/* RW Type 3 Tag timeout for each API call, in ms */
276#ifndef RW_T3T_TOUT_RESP
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800277/* NFC-Android will use 100 instead of 75 for T3t presence-check */
278#define RW_T3T_TOUT_RESP 100
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800279#endif
280
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800281/* CE Type 3 Tag maximum response timeout index (for check and update, used in
282 * SENSF_RES) */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800283#ifndef CE_T3T_MRTI_C
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800284#define CE_T3T_MRTI_C 0xFF
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800285#endif
286#ifndef CE_T3T_MRTI_U
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800287#define CE_T3T_MRTI_U 0xFF
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800288#endif
289
290/* Default maxblocks for CE_T3T UPDATE/CHECK operations */
291#ifndef CE_T3T_DEFAULT_UPDATE_MAXBLOCKS
292#define CE_T3T_DEFAULT_UPDATE_MAXBLOCKS 3
293#endif
294
295#ifndef CE_T3T_DEFAULT_CHECK_MAXBLOCKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800296#define CE_T3T_DEFAULT_CHECK_MAXBLOCKS 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800297#endif
298
299/* CE Type 4 Tag, Frame Waiting time Integer */
300#ifndef CE_T4T_ISO_DEP_FWI
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800301#define CE_T4T_ISO_DEP_FWI 7
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800302#endif
303
304/* RW Type 4 Tag timeout for each API call, in ms */
305#ifndef RW_T4T_TOUT_RESP
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800306#define RW_T4T_TOUT_RESP 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800307#endif
308
309/* CE Type 4 Tag timeout for update file, in ms */
310#ifndef CE_T4T_TOUT_UPDATE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800311#define CE_T4T_TOUT_UPDATE 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800312#endif
313
314/* CE Type 4 Tag, mandatory NDEF File ID */
315#ifndef CE_T4T_MANDATORY_NDEF_FILE_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800316#define CE_T4T_MANDATORY_NDEF_FILE_ID 0x1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800317#endif
318
319/* CE Type 4 Tag, max number of AID supported */
320#ifndef CE_T4T_MAX_REG_AID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800321#define CE_T4T_MAX_REG_AID 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800322#endif
323
324/* Sub carrier */
325#ifndef RW_I93_FLAG_SUB_CARRIER
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800326#define RW_I93_FLAG_SUB_CARRIER I93_FLAG_SUB_CARRIER_SINGLE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800327#endif
328
329/* Data rate for 15693 command/response */
330#ifndef RW_I93_FLAG_DATA_RATE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800331#define RW_I93_FLAG_DATA_RATE I93_FLAG_DATA_RATE_HIGH
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800332#endif
333
334/* TRUE, to include Card Emulation related test commands */
335#ifndef CE_TEST_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800336#define CE_TEST_INCLUDED FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800337#endif
338
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800339/* Quick Timer */
340#ifndef QUICK_TIMER_TICKS_PER_SEC
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800341#define QUICK_TIMER_TICKS_PER_SEC 100 /* 10ms timer */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800342#endif
343
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800344/******************************************************************************
345**
346** LLCP
347**
348******************************************************************************/
349
350#ifndef LLCP_TEST_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800351#define LLCP_TEST_INCLUDED FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800352#endif
353
354#ifndef LLCP_POOL_ID
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800355#define LLCP_POOL_ID GKI_POOL_ID_3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800356#endif
357
358#ifndef LLCP_POOL_BUF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800359#define LLCP_POOL_BUF_SIZE GKI_BUF3_SIZE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800360#endif
361
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800362/* LLCP Maximum Information Unit (between LLCP_DEFAULT_MIU(128) and LLCP_MAX_MIU
363 * (2175)*/
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800364#ifndef LLCP_MIU
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800365#define LLCP_MIU \
366 (LLCP_POOL_BUF_SIZE - NFC_HDR_SIZE - NCI_MSG_OFFSET_SIZE - \
367 NCI_DATA_HDR_SIZE - LLCP_PDU_HEADER_SIZE)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800368#endif
369
370/* Link Timeout, LTO */
371#ifndef LLCP_LTO_VALUE
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800372/* Default is 100ms. It should be sufficiently larger than RWT */
373#define LLCP_LTO_VALUE 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800374#endif
375
376/*
Ruchi Kandoi552f2b72017-01-28 16:22:55 -0800377** LTO is max time interval between the last bit received and the first bit sent
378** over the air. Link timeout must be delayed as much as time between the packet
379** sent from LLCP and the last bit transmitted at NFCC.
380** - 200ms, max OTA transmitting time between the first bit and the last bit at
381** NFCC. Largest MIU(2175bytes) of LLCP must be fragmented and sent on
382** NFC-DEP over the air. 8 * (DEP_REQ/RES+ACK) + DEP_REQ/RES for 2175 MIU at
383** 106kbps bit rate.
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800384** - 10ms, processing time
385*/
386#ifndef LLCP_INTERNAL_TX_DELAY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800387#define LLCP_INTERNAL_TX_DELAY 210
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800388#endif
389
390/*
Ruchi Kandoi552f2b72017-01-28 16:22:55 -0800391** LTO is max time interval between the last bit received and the first bit sent
392** over the air. Link timeout must be delayed as much as time between the first
393** bit received at NFCC and the packet received at LLCP.
394** - 200ms, max OTA transmitting time between the first bit and the last bit at
395** NFCC. LLCP cannot receive data packet until all bit are received and
396** reassembled in NCI. 8 * (DEP_REQ/RES+ACK) + DEP_REQ/RES for 2175 MIU at
397** 106kbps bit rate.
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800398** - 10ms, processing time
399*/
400#ifndef LLCP_INTERNAL_RX_DELAY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800401#define LLCP_INTERNAL_RX_DELAY 210
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800402#endif
403
404/* Wait for application layer sending data before sending SYMM */
405#ifndef LLCP_DELAY_RESP_TIME
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800406#define LLCP_DELAY_RESP_TIME 20 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800407#endif
408
409/* LLCP inactivity timeout for initiator */
410#ifndef LLCP_INIT_INACTIVITY_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800411#define LLCP_INIT_INACTIVITY_TIMEOUT 0 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800412#endif
413
414/* LLCP inactivity timeout for target */
415#ifndef LLCP_TARGET_INACTIVITY_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800416#define LLCP_TARGET_INACTIVITY_TIMEOUT 0 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800417#endif
418
419/* LLCP delay timeout to send the first PDU as initiator */
420#ifndef LLCP_DELAY_TIME_TO_SEND_FIRST_PDU
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800421#define LLCP_DELAY_TIME_TO_SEND_FIRST_PDU 50 /* in ms */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800422#endif
423
424/* Response Waiting Time */
425#ifndef LLCP_WAITING_TIME
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800426/* its scaled value should be less than LTO */
427#define LLCP_WAITING_TIME 7
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800428#endif
429
430/* Options Parameters */
431#ifndef LLCP_OPT_VALUE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800432#define LLCP_OPT_VALUE LLCP_LSC_3 /* Link Service Class 3 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800433#endif
434
435/* Data link connection timeout */
436#ifndef LLCP_DATA_LINK_CONNECTION_TOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800437#define LLCP_DATA_LINK_CONNECTION_TOUT 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800438#endif
439
440/* Max length of service name */
441#ifndef LLCP_MAX_SN_LEN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800442#define LLCP_MAX_SN_LEN 255 /* max length of service name */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800443#endif
444
445/* Max number of well-known services, at least 2 for LM and SDP and up to 16 */
446#ifndef LLCP_MAX_WKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800447#define LLCP_MAX_WKS 5
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800448#endif
449
450/* Max number of services advertised by local SDP, up to 16 */
451#ifndef LLCP_MAX_SERVER
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800452#define LLCP_MAX_SERVER 10
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800453#endif
454
455/* Max number of services not advertised by local SDP, up to 32 */
456#ifndef LLCP_MAX_CLIENT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800457#define LLCP_MAX_CLIENT 20
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800458#endif
459
460/* Max number of data link connections */
461#ifndef LLCP_MAX_DATA_LINK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800462#define LLCP_MAX_DATA_LINK 16
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800463#endif
464
465/* Max number of outstanding service discovery requests */
466#ifndef LLCP_MAX_SDP_TRANSAC
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800467#define LLCP_MAX_SDP_TRANSAC 16
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800468#endif
469
470/* Percentage of LLCP buffer pool for receiving data */
471#ifndef LLCP_RX_BUFF_RATIO
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800472#define LLCP_RX_BUFF_RATIO 30
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800473#endif
474
475/* Rx congestion end threshold as percentage of receiving buffers */
476#ifndef LLCP_RX_CONGEST_END
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800477#define LLCP_RX_CONGEST_END 50
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800478#endif
479
480/* Rx congestion start threshold as percentage of receiving buffers */
481#ifndef LLCP_RX_CONGEST_START
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800482#define LLCP_RX_CONGEST_START 70
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800483#endif
484
485/* limitation of rx UI PDU as percentage of receiving buffers */
486#ifndef LLCP_LL_RX_BUFF_LIMIT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800487#define LLCP_LL_RX_BUFF_LIMIT 30
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800488#endif
489
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800490/* minimum rx congestion threshold (number of rx I PDU in queue) for data link
491 * connection */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800492#ifndef LLCP_DL_MIN_RX_CONGEST
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800493#define LLCP_DL_MIN_RX_CONGEST 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800494#endif
495
496/* limitation of tx UI PDU as percentage of transmitting buffers */
497#ifndef LLCP_LL_TX_BUFF_LIMIT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800498#define LLCP_LL_TX_BUFF_LIMIT 30
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800499#endif
500
501/******************************************************************************
502**
503** NFA
504**
505******************************************************************************/
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800506
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800507#ifndef NFA_P2P_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800508#define NFA_P2P_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800509#endif
510
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700511/* Maximum Idle time (no hcp) to wait for EE DISC REQ Ntf(s) */
512#ifndef NFA_HCI_NETWK_INIT_IDLE_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800513#define NFA_HCI_NETWK_INIT_IDLE_TIMEOUT 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800514#endif
515
516#ifndef NFA_HCI_MAX_HOST_IN_NETWORK
517#define NFA_HCI_MAX_HOST_IN_NETWORK 0x06
518#endif
519
520/* Max number of Application that can be registered to NFA-HCI */
521#ifndef NFA_HCI_MAX_APP_CB
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800522#define NFA_HCI_MAX_APP_CB 0x05
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800523#endif
524
525/* Max number of HCI gates that can be created */
526#ifndef NFA_HCI_MAX_GATE_CB
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800527#define NFA_HCI_MAX_GATE_CB 0x06
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800528#endif
529
530/* Max number of HCI pipes that can be created for the whole system */
531#ifndef NFA_HCI_MAX_PIPE_CB
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800532#define NFA_HCI_MAX_PIPE_CB 0x08
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800533#endif
534
535/* Timeout for waiting for the response to HCP Command packet */
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700536#ifndef NFA_HCI_RESPONSE_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800537#define NFA_HCI_RESPONSE_TIMEOUT 1000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800538#endif
539
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800540/* Default poll duration (may be over-ridden using NFA_SetRfDiscoveryDuration)
541 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800542#ifndef NFA_DM_DISC_DURATION_POLL
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800543#define NFA_DM_DISC_DURATION_POLL 500 /* Android requires 500 */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800544#endif
545
546/* Automatic NDEF detection (when not in exclusive RF mode) */
547#ifndef NFA_DM_AUTO_DETECT_NDEF
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800548#define NFA_DM_AUTO_DETECT_NDEF FALSE /* !!!!! NFC-Android needs FALSE */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800549#endif
550
551/* Automatic NDEF read (when not in exclusive RF mode) */
552#ifndef NFA_DM_AUTO_READ_NDEF
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800553#define NFA_DM_AUTO_READ_NDEF FALSE /* !!!!! NFC-Android needs FALSE */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800554#endif
555
Evan Chua24be4f2013-11-13 15:30:16 -0500556/* Automatic NDEF presence check (when not in exclusive RF mode) */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800557#ifndef NFA_DM_AUTO_PRESENCE_CHECK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800558#define NFA_DM_AUTO_PRESENCE_CHECK FALSE /* Android requires FALSE */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800559#endif
560
Evan Chua24be4f2013-11-13 15:30:16 -0500561/* Presence check option: 0x01: use sleep/wake for none-NDEF ISO-DEP tags */
562#ifndef NFA_DM_PRESENCE_CHECK_OPTION
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800563/* !!!!! Android needs value 3 */
564#define NFA_DM_PRESENCE_CHECK_OPTION 0x03
Evan Chua24be4f2013-11-13 15:30:16 -0500565#endif
566
567/* Maximum time to wait for presence check response */
568#ifndef NFA_DM_MAX_PRESENCE_CHECK_TIMEOUT
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800569#define NFA_DM_MAX_PRESENCE_CHECK_TIMEOUT 500
Evan Chua24be4f2013-11-13 15:30:16 -0500570#endif
571
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700572/* Default delay to auto presence check after sending raw frame */
573#ifndef NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800574#define NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY 750
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700575#endif
576
Evan Chu7c69b272013-05-14 12:48:36 -0400577/* Timeout for reactivation of Kovio bar code tag (presence check) */
578#ifndef NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800579#define NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK (1000)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800580#endif
581
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800582/* Max number of NDEF type handlers that can be registered (including the
583 * default handler) */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800584#ifndef NFA_NDEF_MAX_HANDLERS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800585#define NFA_NDEF_MAX_HANDLERS 8
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800586#endif
587
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800588/* Maximum number of listen entries configured/registered with
589 * NFA_CeConfigureUiccListenTech, */
590/* NFA_CeRegisterFelicaSystemCodeOnDH, or NFA_CeRegisterT4tAidOnDH */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800591#ifndef NFA_CE_LISTEN_INFO_MAX
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800592#define NFA_CE_LISTEN_INFO_MAX 5
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800593#endif
594
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800595#ifndef NFA_SNEP_INCLUDED
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800596/* Android must use FALSE to exclude SNEP */
597#define NFA_SNEP_INCLUDED FALSE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800598#endif
599
600/* Max acceptable length */
601#ifndef NFA_SNEP_DEFAULT_SERVER_MAX_NDEF_SIZE
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800602#define NFA_SNEP_DEFAULT_SERVER_MAX_NDEF_SIZE 500000
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800603#endif
604
605/* Max number of SNEP server/client and data link connection */
606#ifndef NFA_SNEP_MAX_CONN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800607#define NFA_SNEP_MAX_CONN 6
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800608#endif
609
610/* Max number data link connection of SNEP default server*/
611#ifndef NFA_SNEP_DEFAULT_MAX_CONN
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800612#define NFA_SNEP_DEFAULT_MAX_CONN 3
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800613#endif
614
615/* MIU for SNEP */
616#ifndef NFA_SNEP_MIU
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800617#define NFA_SNEP_MIU 1980 /* Modified for NFC-A */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800618#endif
619
620/* Receiving Window for SNEP */
621#ifndef NFA_SNEP_RW
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800622#define NFA_SNEP_RW 2 /* Modified for NFC-A */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800623#endif
624
625/* Max number of NFCEE supported */
626#ifndef NFA_EE_MAX_EE_SUPPORTED
Ruchi Kandoi46e6e282017-01-30 14:26:10 -0800627/* Modified for NFC-A until we add dynamic support */
628#define NFA_EE_MAX_EE_SUPPORTED 4
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800629#endif
630
631/* Maximum number of AID entries per target_handle */
632#ifndef NFA_EE_MAX_AID_ENTRIES
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800633#define NFA_EE_MAX_AID_ENTRIES (32)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800634#endif
635
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800636/* Maximum number of callback functions can be registered through
637 * NFA_EeRegister() */
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800638#ifndef NFA_EE_MAX_CBACKS
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800639#define NFA_EE_MAX_CBACKS (3)
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800640#endif
641
642#ifndef NFA_DTA_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800643#define NFA_DTA_INCLUDED TRUE
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800644#endif
645
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700646/*****************************************************************************
647** Define HAL_WRITE depending on whether HAL is using shared GKI resources
648** as the NFC stack.
649*****************************************************************************/
650#ifndef HAL_WRITE
Chih-Hung Hsieh7ac6a7c2017-08-01 14:26:16 -0700651#define HAL_WRITE(p) \
652 { \
653 nfc_cb.p_hal->write((p)->len, (uint8_t*)((p) + 1) + (p)->offset); \
654 GKI_freebuf(p); \
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800655 }
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700656
Evan Chua24be4f2013-11-13 15:30:16 -0500657#ifdef NFC_HAL_SHARED_GKI
658
659/* NFC HAL Included if NFC_NFCEE_INCLUDED */
660#if (NFC_NFCEE_INCLUDED == TRUE)
661
662#ifndef NFC_HAL_HCI_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800663#define NFC_HAL_HCI_INCLUDED TRUE
Evan Chua24be4f2013-11-13 15:30:16 -0500664#endif
665#else /* NFC_NFCEE_INCLUDED == TRUE */
666#ifndef NFC_HAL_HCI_INCLUDED
Ruchi Kandoi6fca02d2017-01-30 14:28:16 -0800667#define NFC_HAL_HCI_INCLUDED FALSE
Evan Chua24be4f2013-11-13 15:30:16 -0500668#endif
669
670#endif /* NFC_NFCEE_INCLUDED == FALSE */
671
672#endif /* NFC_HAL_SHARED_GKI */
673
Martijn Coenen5c65c3a2013-03-27 13:23:36 -0700674#endif /* HAL_WRITE */
675
The Android Open Source Projecte9df6ba2012-12-13 14:55:37 -0800676#endif /* NFC_TARGET_H */