###############################################################################
# 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/vendor/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 ##############################
