###############################################################################
# NFC Configuration for NON-HAL component S.LSI NFC Chip
# Samsung Electronics, System LSI Division
# Update Date : 2018/07/27
# Configuration : UICC + eSE as CE mode & 106k P2P disabled
# Region : EUR OPEN / CHINA
# F/W Version dependency : NONE
########################## Start of libnfc-nci.conf ###########################
###############################################################################
# Application options
NFC_DEBUG_ENABLED=1
###############################################################################
# performance measurement
# Change this setting to control how often USERIAL log the performance (throughput)
# data on read/write/poll
# defailt is to log performance dara for every 100 read or write
#REPORT_PERFORMANCE_MEASURE=100
###############################################################################
# File used for NFA storage
NFA_STORAGE="/data/nfc"
###############################################################################
# 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_KOVIO |
#            NFA_TECHNOLOGY_MASK_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_KOVIO         0x20    /* Proprietary Technology       */
# NFA_TECHNOLOGY_MASK_ACTIVE        0x40    /* NFC Technology Active        */
POLLING_TECH_MASK=0xEF
###############################################################################
# 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_ACTIVE
#
# Notable bits:
# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
# NFA_TECHNOLOGY_MASK_ACTIVE         0x40    /* NFC Technology Active        */
P2P_LISTEN_TECH_MASK=0xC4
PRESERVE_STORAGE=1
###############################################################################
# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
# The value is set assumeing discovery of 0x00(Host), 0xC0(Ese) and 0x80(UICC).
# 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
#NFA_MAX_EE_SUPPORTED=3
###############################################################################
# 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=0x01

###############################################################################
# Partial AID setting : Only used for ATT / TMO / VZW
# This configuration may be changed by MNO specific requirement.
# Description
# 1st byte : NCI Length
# 2nd byte : Number of set
# 3rd~ bytes : Partial matching order
# Matching value : Full matching = 0x00, Subset Matching = 0x01, Superset Matching : 0x02, Pattern Matching : 0x03
# ex) 2f 39 03 02 01 02 --> order : full matching - subset matching - superset matching PARTIAL_AID={03:02:01:02}
PARTIAL_AID={02:01:05}

###############################################################################
# UICC listen tech mask
# Force UICC to only listen to the following technology(s).
# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B.
# If this option is blocked by # comment, default value will be applied
###############################################################################
# Description
# Oring each tech mask
# Type A : 0x01
# Type B : 0x02
# Type F : 0x04
###############################################################################
# Guide
# HK : UICC_LISTEN_TECH_MASK=0x07 (Enable Type F card)
# Other region : UICC_LISTEN_TECH_MASK=0x03 (Default value)
UICC_LISTEN_TECH_MASK=0x07

###############################################################################
# Default poll duration (in ms)
#  The defualt is 500ms if not set (see nfc_target.h)
NFA_DM_DISC_DURATION_POLL=500

###############################################################################
# eSE Chip Type Setting
# Configure eSE Chip Type.
# NFA_HCI_USE_FORCE_SETTING = 0x00  :	Auto Setting
# NFA_HCI_USE_FORCE_SETTING = 0x01  :	Manual Setting
# NFA_HCI_ESE_CHIP_TYPE=0x00 : Oberthur eSE
# NFA_HCI_ESE_CHIP_TYPE=0x01 : Gemalto  eSE
# NFA_HCI_DEFAULT_STATIC_PIPE_TYPE = 0x00  : Supported dynamic pipe for wired C/E.
# NFA_HCI_DEFAULT_STATIC_PIPE_TYPE = 0x01  : Supported static pipe for wired C/E.
# NFA_HCI_APDU_GATE = 0xF0   : Gate ID for dynamic pipe.
#   You must set this value if you set 'NFA_HCI_DEFAULT_STATIC_PIPE_TYPE = 0x00'.
NFA_HCI_USE_FORCE_SETTING=0x00
NFA_HCI_ESE_CHIP_TYPE=0x01
NFA_HCI_DEFAULT_STATIC_PIPE_TYPE=0x01
###############################################################################

###############################################################################
# eSE Power Stable Time
# Configure eSE Power Stable Time (ms)
# Only for Gemalto COS 

ESE_POWER_STABLE_TIME=50
###############################################################################

###############################################################################
# Application options
APPL_TRACE_LEVEL=0xFF
PROTOCOL_TRACE_LEVEL=0xFFFFFFFF
###############################################################################


###############################################################################
# power control driver
# Specify a kernel driver that support ioctl commands to control NFC_EN and
# NFC_WAKE gpio signals.
#
# POWER_CONTRL_DRIVER=<driver>
# i2c and spi driver may be used to control NFC_EN and NFC_WAKE signal
POWER_CONTROL_DRIVER="/dev/sec-nfc"

###############################################################################
# transport driver
#
# TRANSPORT_DRIVER=<driver>
#
#  where <driver> can be, for example:
#    "/dev/ttyS"        (UART)
#    "/dev/bcmi2cnfc"   (I2C)
#    "hwtun"            (HW Tunnel)
#    "/dev/bcmspinfc"   (SPI)
#    "/dev/btusb0"      (BT USB)
TRANSPORT_DRIVER="/dev/sec-nfc"

###############################################################################
# ProtocolClt was removed from NFA_PROPRIETARY_CFG, 
# and a new NFA_PROPRIETARY_CFG_CLT variable was created.
# protocolClt default value = 0x90
NFA_PROPRIETARY_CFG_CLT=0x90
ACTIVE_SE=0x02

############### end of config ##############################
