########################### Start of libnfc-nci.conf ###########################
####################################23.05.12####################################
# Application options
NFC_DEBUG_ENABLED=0

################################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"

################################################################################
# Filter the technology(s) requested to listen by OFFHOST_NFCEE(s) with the
# specified ones, leave those allowed technology(s) and route to the NFCEE.
# As for the filtered-out technology(s), route to host if it's assigned to HOST,
# otherwise, will be route to DEFAULT_ROUTE.
# The technology(s) which is not assign to OFFHOST_LISTEN_TECH_MASK and
# HOST_LISTEN_TECH_MASK won't be listened to.
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
# NFA_TECHNOLOGY_MASK_B             0x02    /* NFC Technology B             */
# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
OFFHOST_LISTEN_TECH_MASK=0x04

################################################################################
# Force HOST to only listen to the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
# NFA_TECHNOLOGY_MASK_B             0x02    /* NFC Technology B             */
# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
HOST_LISTEN_TECH_MASK=0x03

################################################################################
# When screen is turned off, specify the desired power state of the controller.
# 0: power-off-sleep state; DEFAULT
# 1: full-power state
# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
SCREEN_OFF_POWER_STATE=1

################################################################################
# Force tag polling for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
#            NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
#            NFA_TECHNOLOGY_MASK_B_PRIME |
#            NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE.
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
# NFA_TECHNOLOGY_MASK_B             0x02    /* NFC Technology B             */
# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
# NFA_TECHNOLOGY_MASK_ISO15693      0x08    /* Proprietary Technology       */
# NFA_TECHNOLOGY_MASK_A_ACTIVE      0x40    /* NFC Technology A active mode */
# NFA_TECHNOLOGY_MASK_F_ACTIVE      0x80    /* NFC Technology F active mode */
POLLING_TECH_MASK=0x00

################################################################################
# Force P2P to only listen for the following technology(s).
# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
#            NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A	            0x01    /* NFC Technology A             */
# NFA_TECHNOLOGY_MASK_F	            0x04    /* NFC Technology F             */
# NFA_TECHNOLOGY_MASK_A_ACTIVE      0x40    /* NFC Technology A active mode */
# NFA_TECHNOLOGY_MASK_F_ACTIVE      0x80    /* NFC Technology F active mode */
P2P_LISTEN_TECH_MASK=0x00

################################################################################
PRESERVE_STORAGE=0x01

################################################################################
# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
# The value is set to 3 by default as it assumes we will discover 0xF2,
# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
# so that the stack will not wait any longer than necessary.
#
# Maximum EE supported number
# NXP PN547C2 0x02
# NXP PN65T 0x03
# NXP PN548C2 0x02
# NXP PN66T 0x03
NFA_MAX_EE_SUPPORTED=0x02

################################################################################
# AID_MATCHING constants
# AID_MATCHING_EXACT_ONLY 0x00
# AID_MATCHING_EXACT_OR_PREFIX 0x01
# AID_MATCHING_PREFIX_ONLY 0x02
# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
AID_MATCHING_MODE=0x03

################################################################################
# Set the default Felica T3T System Code :
# This settings will be used when application does not set this parameter
DEFAULT_SYS_CODE={FE:FE}

################################################################################
# Value of NIC parameter NFCC_COFNIG_CONTROL
# 0x00  NFCC is not allowed to manage RF configuration
# 0x01  NFCC is allowed to manage RF configuration
NFCC_CONFIG_CONTROL=0x01

################################################################################
# Set if the AID routing should be blocked for the power modes not supported.
NFA_AID_BLOCK_ROUTE=1

################################################################################
# Set the OffHost AID supported power state:
OFFHOST_AID_ROUTE_PWR_STATE=0x3B

################################################################################
# Mifare Reader implementation
# 0: General implementation
# 1: Legacy implementation
LEGACY_MIFARE_READER=0

################################################################################
# Nfc recovery implementation
# 0: Crash Nfc Service
# 1: Toggle Nfc state
RECOVERY_OPTION=1

################################################################################
# Default poll duration (in ms)
# The default is 500ms if not set
NFA_DM_DISC_DURATION_POLL=500
