/****************************************************************************** * * Copyright (C) 1999-2012 Broadcom Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ #ifndef NFC_TARGET_H #define NFC_TARGET_H #include "data_types.h" #ifdef BUILDCFG #include "buildcfg.h" #endif /* Include common GKI definitions used by this platform */ #include "bt_types.h" /* This must be defined AFTER buildcfg.h */ #include "gki_target.h" #ifndef USERIAL_DEBUG #define USERIAL_DEBUG FALSE #endif /****************************************************************************** ** ** GKI Mail Box and Timer ** ******************************************************************************/ /* Mailbox event mask for NFC stack */ #ifndef NFC_MBOX_EVT_MASK #define NFC_MBOX_EVT_MASK (TASK_MBOX_0_EVT_MASK) #endif /* Mailbox ID for NFC stack */ #ifndef NFC_MBOX_ID #define NFC_MBOX_ID (TASK_MBOX_0) #endif /* Mailbox event mask for NFA */ #ifndef NFA_MBOX_EVT_MASK #define NFA_MBOX_EVT_MASK (TASK_MBOX_2_EVT_MASK) #endif /* Mailbox ID for NFA */ #ifndef NFA_MBOX_ID #define NFA_MBOX_ID (TASK_MBOX_2) #endif /* GKI timer id used for protocol timer in NFC stack */ #ifndef NFC_TIMER_ID #define NFC_TIMER_ID (TIMER_0) #endif /* GKI timer event mask used for protocol timer in NFC stack */ #ifndef NFC_TIMER_EVT_MASK #define NFC_TIMER_EVT_MASK (TIMER_0_EVT_MASK) #endif /* GKI timer id used for quick timer in NFC stack */ #ifndef NFC_QUICK_TIMER_ID #define NFC_QUICK_TIMER_ID (TIMER_1) #endif /* GKI timer event mask used for quick timer in NFC stack */ #ifndef NFC_QUICK_TIMER_EVT_MASK #define NFC_QUICK_TIMER_EVT_MASK (TIMER_1_EVT_MASK) #endif /* GKI timer id used for protocol timer in NFA */ #ifndef NFA_TIMER_ID #define NFA_TIMER_ID (TIMER_2) #endif /* GKI timer event mask used for protocol timer in NFA */ #ifndef NFA_TIMER_EVT_MASK #define NFA_TIMER_EVT_MASK (TIMER_2_EVT_MASK) #endif /****************************************************************************** ** ** GKI Buffer Pools ** ******************************************************************************/ /* NCI command/notification/data */ #ifndef NFC_NCI_POOL_ID #define NFC_NCI_POOL_ID GKI_POOL_ID_2 #endif #ifndef NFC_NCI_POOL_BUF_SIZE #define NFC_NCI_POOL_BUF_SIZE GKI_BUF2_SIZE #endif /* Reader/Write commands (NCI data payload) */ #ifndef NFC_RW_POOL_ID #define NFC_RW_POOL_ID GKI_POOL_ID_2 #endif #ifndef NFC_RW_POOL_BUF_SIZE #define NFC_RW_POOL_BUF_SIZE GKI_BUF2_SIZE #endif /* Card Emulation responses (NCI data payload) */ #ifndef NFC_CE_POOL_ID #define NFC_CE_POOL_ID GKI_POOL_ID_2 #endif #ifndef NFC_CE_POOL_BUF_SIZE #define NFC_CE_POOL_BUF_SIZE GKI_BUF2_SIZE #endif /* NCI msg pool for HAL (for shared NFC/HAL GKI)*/ #ifndef NFC_HAL_NCI_POOL_ID #define NFC_HAL_NCI_POOL_ID NFC_NCI_POOL_ID #endif #ifndef NFC_HAL_NCI_POOL_BUF_SIZE #define NFC_HAL_NCI_POOL_BUF_SIZE NFC_NCI_POOL_BUF_SIZE #endif /****************************************************************************** ** ** NCI Transport definitions ** ******************************************************************************/ /* offset of the first NCI packet in buffer for outgoing */ #ifndef NCI_MSG_OFFSET_SIZE #define NCI_MSG_OFFSET_SIZE 1 #endif /* Restore NFCC baud rate to default on shutdown if NFC_UpdateBaudRate was * called */ #ifndef NFC_RESTORE_BAUD_ON_SHUTDOWN #define NFC_RESTORE_BAUD_ON_SHUTDOWN TRUE #endif /****************************************************************************** ** ** NCI ** ******************************************************************************/ #define NCI_VERSION_UNKNOWN 0x00 #define NCI_VERSION_1_0 0x10 #define NCI_VERSION_2_0 0x20 #ifndef NCI_VERSION #define NCI_VERSION NCI_VERSION_2_0 #endif #define NCI_CORE_RESET_RSP_LEN(X) (((X) >= NCI_VERSION_2_0) ? (0x01) : (0x03)) /* TRUE I2C patch is needed */ #ifndef NFC_I2C_PATCH_INCLUDED #define NFC_I2C_PATCH_INCLUDED TRUE /* NFC-Android uses this!!! */ #endif /****************************************************************************** ** ** NFC ** ******************************************************************************/ /* Define to TRUE to include Broadcom Vendor Specific implementation */ #ifndef NFC_BRCM_VS_INCLUDED #define NFC_BRCM_VS_INCLUDED TRUE #endif /* Define to TRUE if compling for NFC Reader/Writer Only mode */ #ifndef NFC_RW_ONLY #define NFC_RW_ONLY FALSE #endif /* Timeout for receiving response to NCI command */ #ifndef NFC_CMD_CMPL_TIMEOUT #define NFC_CMD_CMPL_TIMEOUT 2 #endif /* Timeout for waiting on data credit/NFC-DEP */ #ifndef NFC_DEACTIVATE_TIMEOUT #define NFC_DEACTIVATE_TIMEOUT 2 #endif /* the maximum number of Vendor Specific callback functions allowed to be * registered. 1-14 */ #ifndef NFC_NUM_VS_CBACKS #define NFC_NUM_VS_CBACKS 3 #endif /* the maximum number of NCI connections allowed. 1-14 */ #ifndef NCI_MAX_CONN_CBS #define NCI_MAX_CONN_CBS 4 #endif /* the maximum number of NCI connections allowed. 1-14 */ #ifndef NCI_MAX_STATIC_CONN_CBS #define NCI_MAX_STATIC_CONN_CBS 2 #endif /* Maximum number of NCI commands that the NFCC accepts without needing to wait * for response */ #ifndef NCI_MAX_CMD_WINDOW #define NCI_MAX_CMD_WINDOW 1 #endif /* Define to TRUE to include the NFCEE related functionalities */ #ifndef NFC_NFCEE_INCLUDED #define NFC_NFCEE_INCLUDED TRUE #endif /* the maximum number of NFCEE interface supported */ #ifndef NFC_MAX_EE_INTERFACE #define NFC_MAX_EE_INTERFACE 3 #endif /* the maximum number of NFCEE information supported. */ #ifndef NFC_MAX_EE_INFO #define NFC_MAX_EE_INFO 8 #endif /* the maximum number of NFCEE TLVs supported */ #ifndef NFC_MAX_EE_TLVS #define NFC_MAX_EE_TLVS 1 #endif /* the maximum size of NFCEE TLV list supported */ #ifndef NFC_MAX_EE_TLV_SIZE #define NFC_MAX_EE_TLV_SIZE 150 #endif /* Maximum time to discover NFCEE */ #ifndef NFA_EE_DISCV_TIMEOUT_VAL #define NFA_EE_DISCV_TIMEOUT_VAL 2000 #endif /* Number of times reader/writer should attempt to resend a command on failure */ #ifndef RW_MAX_RETRIES #define RW_MAX_RETRIES 5 #endif /* RW NDEF Support */ #ifndef RW_NDEF_INCLUDED #define RW_NDEF_INCLUDED TRUE #endif /* RW Type 1 Tag timeout for each API call, in ms */ #ifndef RW_T1T_TOUT_RESP #define RW_T1T_TOUT_RESP 100 #endif /* CE Type 2 Tag timeout for controller command, in ms */ #ifndef CE_T2T_TOUT_RESP #define CE_T2T_TOUT_RESP 1000 #endif /* RW Type 2 Tag timeout for each API call, in ms */ #ifndef RW_T2T_TOUT_RESP /* Android requires 150 instead of 100 for presence-check*/ #define RW_T2T_TOUT_RESP 150 #endif /* RW Type 2 Tag timeout for each API call, in ms */ #ifndef RW_T2T_SEC_SEL_TOUT_RESP #define RW_T2T_SEC_SEL_TOUT_RESP 10 #endif /* RW Type 3 Tag timeout for each API call, in ms */ #ifndef RW_T3T_TOUT_RESP /* NFC-Android will use 100 instead of 75 for T3t presence-check */ #define RW_T3T_TOUT_RESP 100 #endif /* CE Type 3 Tag maximum response timeout index (for check and update, used in * SENSF_RES) */ #ifndef CE_T3T_MRTI_C #define CE_T3T_MRTI_C 0xFF #endif #ifndef CE_T3T_MRTI_U #define CE_T3T_MRTI_U 0xFF #endif /* Default maxblocks for CE_T3T UPDATE/CHECK operations */ #ifndef CE_T3T_DEFAULT_UPDATE_MAXBLOCKS #define CE_T3T_DEFAULT_UPDATE_MAXBLOCKS 3 #endif #ifndef CE_T3T_DEFAULT_CHECK_MAXBLOCKS #define CE_T3T_DEFAULT_CHECK_MAXBLOCKS 3 #endif /* CE Type 4 Tag, Frame Waiting time Integer */ #ifndef CE_T4T_ISO_DEP_FWI #define CE_T4T_ISO_DEP_FWI 7 #ifndef RW_CI_TOUT_RESP #define RW_CI_TOUT_RESP 1000 #endif #endif /* RW Type 4 Tag timeout for each API call, in ms */ #ifndef RW_T4T_TOUT_RESP #define RW_T4T_TOUT_RESP 1000 #endif /* CE Type 4 Tag timeout for update file, in ms */ #ifndef CE_T4T_TOUT_UPDATE #define CE_T4T_TOUT_UPDATE 1000 #endif /* CE Type 4 Tag, mandatory NDEF File ID */ #ifndef CE_T4T_MANDATORY_NDEF_FILE_ID #define CE_T4T_MANDATORY_NDEF_FILE_ID 0x1000 #endif /* CE Type 4 Tag, max number of AID supported */ #ifndef CE_T4T_MAX_REG_AID #define CE_T4T_MAX_REG_AID 4 #endif /* Sub carrier */ #ifndef RW_I93_FLAG_SUB_CARRIER #define RW_I93_FLAG_SUB_CARRIER I93_FLAG_SUB_CARRIER_SINGLE #endif /* Data rate for 15693 command/response */ #ifndef RW_I93_FLAG_DATA_RATE #define RW_I93_FLAG_DATA_RATE I93_FLAG_DATA_RATE_HIGH #endif /* RW Mifare Classic Tag timeout for each API call, in ms */ #ifndef RW_MFC_TOUT_RESP #define RW_MFC_TOUT_RESP 300 #endif /* TRUE, to include Card Emulation related test commands */ #ifndef CE_TEST_INCLUDED #define CE_TEST_INCLUDED FALSE #endif /* Quick Timer */ #ifndef QUICK_TIMER_TICKS_PER_SEC #define QUICK_TIMER_TICKS_PER_SEC 100 /* 10ms timer */ #endif /****************************************************************************** ** ** NFA ** ******************************************************************************/ /* Maximum Idle time (no hcp) to wait for EE DISC REQ Ntf(s) */ #ifndef NFA_HCI_NETWK_INIT_IDLE_TIMEOUT #define NFA_HCI_NETWK_INIT_IDLE_TIMEOUT 1000 #endif #ifndef NFA_HCI_MAX_HOST_IN_NETWORK #define NFA_HCI_MAX_HOST_IN_NETWORK 0x06 #endif /* Max number of Application that can be registered to NFA-HCI */ #ifndef NFA_HCI_MAX_APP_CB #define NFA_HCI_MAX_APP_CB 0x05 #endif /* Max number of HCI gates that can be created */ #ifndef NFA_HCI_MAX_GATE_CB #define NFA_HCI_MAX_GATE_CB 0x06 #endif /* Max number of HCI pipes that can be created for the whole system */ #ifndef NFA_HCI_MAX_PIPE_CB #define NFA_HCI_MAX_PIPE_CB 0x0A #endif /* Timeout for waiting for the response to HCP Command packet */ #ifndef NFA_HCI_RESPONSE_TIMEOUT #define NFA_HCI_RESPONSE_TIMEOUT 1000 #endif /* Default poll duration (may be over-ridden using NFA_SetRfDiscoveryDuration) */ #ifndef NFA_DM_DISC_DURATION_POLL #define NFA_DM_DISC_DURATION_POLL 500 /* Android requires 500 */ #endif /* Automatic NDEF detection (when not in exclusive RF mode) */ #ifndef NFA_DM_AUTO_DETECT_NDEF #define NFA_DM_AUTO_DETECT_NDEF FALSE /* !!!!! NFC-Android needs FALSE */ #endif /* Automatic NDEF read (when not in exclusive RF mode) */ #ifndef NFA_DM_AUTO_READ_NDEF #define NFA_DM_AUTO_READ_NDEF FALSE /* !!!!! NFC-Android needs FALSE */ #endif /* Automatic NDEF presence check (when not in exclusive RF mode) */ #ifndef NFA_DM_AUTO_PRESENCE_CHECK #define NFA_DM_AUTO_PRESENCE_CHECK FALSE /* Android requires FALSE */ #endif /* Presence check option: 0x01: use sleep/wake for none-NDEF ISO-DEP tags */ #ifndef NFA_DM_PRESENCE_CHECK_OPTION /* !!!!! Android needs value 3 */ #define NFA_DM_PRESENCE_CHECK_OPTION 0x03 #endif /* Maximum time to wait for presence check response */ #ifndef NFA_DM_MAX_PRESENCE_CHECK_TIMEOUT #define NFA_DM_MAX_PRESENCE_CHECK_TIMEOUT 500 #endif /* Default delay to auto presence check after sending raw frame */ #ifndef NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY #define NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY 750 #endif /* Timeout for reactivation of Kovio bar code tag (presence check) */ #ifndef NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK #define NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK (1000) #endif /* timeout for waiting deactivation NTF, ** possible delay to send deactivate CMD if all credit wasn't returned ** transport delay (1sec) and max RWT (5sec) */ #define NFA_DM_DISC_TIMEOUT_W4_DEACT_NTF (NFC_DEACTIVATE_TIMEOUT * 1000 + 6000) /* Max number of NDEF type handlers that can be registered (including the * default handler) */ #ifndef NFA_NDEF_MAX_HANDLERS #define NFA_NDEF_MAX_HANDLERS 8 #endif /* Maximum number of listen entries configured/registered with * NFA_CeConfigureUiccListenTech, */ /* NFA_CeRegisterFelicaSystemCodeOnDH, or NFA_CeRegisterT4tAidOnDH */ #ifndef NFA_CE_LISTEN_INFO_MAX #define NFA_CE_LISTEN_INFO_MAX 5 #endif #ifndef NFA_SNEP_INCLUDED /* Android must use FALSE to exclude SNEP */ #define NFA_SNEP_INCLUDED FALSE #endif /* Max acceptable length */ #ifndef NFA_SNEP_DEFAULT_SERVER_MAX_NDEF_SIZE #define NFA_SNEP_DEFAULT_SERVER_MAX_NDEF_SIZE 500000 #endif /* Max number of SNEP server/client and data link connection */ #ifndef NFA_SNEP_MAX_CONN #define NFA_SNEP_MAX_CONN 6 #endif /* Max number data link connection of SNEP default server*/ #ifndef NFA_SNEP_DEFAULT_MAX_CONN #define NFA_SNEP_DEFAULT_MAX_CONN 3 #endif /* MIU for SNEP */ #ifndef NFA_SNEP_MIU #define NFA_SNEP_MIU 1980 /* Modified for NFC-A */ #endif /* Receiving Window for SNEP */ #ifndef NFA_SNEP_RW #define NFA_SNEP_RW 2 /* Modified for NFC-A */ #endif /* Max number of NFCEE supported */ #ifndef NFA_EE_MAX_EE_SUPPORTED /* Modified for NFC-A until we add dynamic support */ #define NFA_EE_MAX_EE_SUPPORTED 6 #endif /* Maximum number of AID entries per target_handle */ #ifndef NFA_EE_MAX_AID_ENTRIES #define NFA_EE_MAX_AID_ENTRIES (32) #endif /* Maximum number of callback functions can be registered through * NFA_EeRegister() */ #ifndef NFA_EE_MAX_CBACKS #define NFA_EE_MAX_CBACKS (3) #endif #ifndef NFA_DTA_INCLUDED #define NFA_DTA_INCLUDED TRUE #endif /***************************************************************************** ** Define HAL_WRITE depending on whether HAL is using shared GKI resources ** as the NFC stack. *****************************************************************************/ #ifndef HAL_WRITE #define HAL_WRITE(p) \ { \ nfc_cb.p_hal->write((p)->len, (uint8_t*)((p) + 1) + (p)->offset); \ GKI_freebuf(p); \ } #ifdef NFC_HAL_SHARED_GKI /* NFC HAL Included if NFC_NFCEE_INCLUDED */ #if (NFC_NFCEE_INCLUDED == TRUE) #ifndef NFC_HAL_HCI_INCLUDED #define NFC_HAL_HCI_INCLUDED TRUE #endif #else /* NFC_NFCEE_INCLUDED == TRUE */ #ifndef NFC_HAL_HCI_INCLUDED #define NFC_HAL_HCI_INCLUDED FALSE #endif #endif /* NFC_NFCEE_INCLUDED == FALSE */ #endif /* NFC_HAL_SHARED_GKI */ #endif /* HAL_WRITE */ #endif /* NFC_TARGET_H */