/*
 * Copyright (C) 2010 NXP Semiconductors
 *
 * 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.
 */


/**
* \file phNfcConfig.h
* \brief HAL Configurations
*
*
* \note This is the configuration header file of the HAL 4.0.All configurable parameters of the HAL 4.0
*       are provided in this file
*
* Project: NFC-FRI-1.1 / HAL4.0
*
* $Date: Thu Sep  9 14:56:35 2010 $
* $Author: ing04880 $
* $Revision: 1.39 $
* $Aliases:  $
*
*/


/*@{*/
#ifndef PHNFC_CONFIG_H
#define PHNFC_CONFIG_H
/*@}*/


/**
*  \name Hal
*
* File: \ref phNfcConfig.h
*
*/

/*@{*/
#define PH_NFC_CONFIG_FILEREVISION "$Revision: 1.39 $" /**< \ingroup grp_file_attributes */
#define PH_NFC_CONFIG_FILEALIASES  "$Aliases:  $"     /**< \ingroup grp_file_attributes */
/*@}*/


/* -----------------Include files ---------------------------------------*/

#ifdef NFC_CUSTOM_CONFIG_INCLUDE
#include<nfc_custom_config.h>
#endif

/* ---------------- Macros ----------------------------------------------*/



/*
 *****************************************************************
 **********************  DEFAULT MACROS **************************
 *****************************************************************
 */


/**<  External Clock Request Configuration for the NFC Device,
      0x00U     No Clock Request,
      0x01U     Clock Request through CLKREQ pin (GPIO pin 2),
      0x02U     Clock Request through NXP_EVT_CLK_REQUEST Event,
      */
#ifndef NXP_DEFAULT_CLK_REQUEST
#define NXP_DEFAULT_CLK_REQUEST         0x00U
#endif

/**<  External Input Clock Setting for the NFC Device,
      0x00U     No Input Clock Required (Use the Xtal),
      0x01U     13 MHZ,
      0x02U     19.2 MHZ,
      0x03U     26 MHZ,
      0x04U     38.4 MHZ,
      0x05U     Custom (Set the Custome Clock Registry),
      */

#ifndef NXP_DEFAULT_INPUT_CLK
#define NXP_DEFAULT_INPUT_CLK           0x00U
#endif

/**<  UICC Power Request configuration for the NFC Device,
      0x00U     No Power Request,
      0x01U     Power Request through CLKREQ pin (GPIO pin 2),
      0x02U     Power Request through PWR_REQUEST (GPIO Pin 3),
      */

#ifndef NXP_UICC_PWR_REQUEST
#define NXP_UICC_PWR_REQUEST            0x00U
#endif

/**<  TX LDO Configuration
       0x00     00b     3.0 V,
       0x01     01b     3.0 V,
       0x02     10b     2.7 V,
       0x03     11b     3.3 V,
      */

#ifndef NXP_DEFAULT_TX_LDO
#define NXP_DEFAULT_TX_LDO              0x00U
#endif

/**<  UICC Bit Rate Configuration
       0x02     212Kbits/Sec
       0x04     424Kbits/Sec
       0x08     828Kbits/Sec
 */

#ifndef NXP_UICC_BIT_RATE
#define NXP_UICC_BIT_RATE               0x08U
#endif


/**<  Indicates PN544 Power Modes Configuration for the NFC Device,
      0x00U -> PN544 stays in active bat mode 
               (except when generating RF field)
      0x01U -> PN544 goes in standby when possible otherwise 
               stays in active bat mode
      0x02U -> PN544 goes in idle mode as soon as it can 
               (otherwise it is in active bat except when generating RF field)
      0x03U -> PN544 goes in standby when possible otherwise goes in idle mode 
               as soon as it can (otherwise it is in active bat except when 
               generating RF field)
      */

#ifndef NXP_SYSTEM_PWR_STATUS
#define NXP_SYSTEM_PWR_STATUS           0x01U
#endif

/**< Default Session ID for Initialisation */
#ifndef DEFAULT_SESSION
#define DEFAULT_SESSION           "android8"
#endif


/* The Other Integration Configuration Values */

/**< Max number of remote devices supported */

#ifndef MAX_REMOTE_DEVICES
#define MAX_REMOTE_DEVICES        0x0A 
#endif

/**<  System Event Notification
       0x01     Overcurrent
       0x02     PMUVCC Switch
       0x04     External RF Field
       0x08     Memory Violation
       0x10     Temperature Overheat
 */

#ifndef NXP_SYSTEM_EVT_INFO
#define NXP_SYSTEM_EVT_INFO             0x3DU
#endif


#ifndef NFC_DEV_HWCONF_DEFAULT
#define NFC_DEV_HWCONF_DEFAULT          0xBCU
#endif


#ifndef NXP_ISO_XCHG_TIMEOUT
#define NXP_ISO_XCHG_TIMEOUT            0x1AU
#endif

#ifndef NXP_MIFARE_XCHG_TIMEOUT
#define NXP_MIFARE_XCHG_TIMEOUT         0x03U
#endif

#ifndef NXP_FELICA_XCHG_TIMEOUT
#define NXP_FELICA_XCHG_TIMEOUT         0xFFU
#endif


#ifndef NXP_NFCIP_PSL_BRS_DEFAULT
#define NXP_NFCIP_PSL_BRS_DEFAULT       0x00U
#endif



/**< ID For Invalid Timer */
#ifndef NXP_INVALID_TIMER_ID
#define NXP_INVALID_TIMER_ID              0xFFFFFFFFU
#endif

/**< Presence check interval in milliseconds */
#ifndef PRESENCE_CHECK_INTERVAL
#define PRESENCE_CHECK_INTERVAL   500U
#endif 

/** Resolution value for the timer, here the 
    timer resolution is 500 milliseconds */
#ifndef TIMER_RESOLUTION
#define TIMER_RESOLUTION                500U
#endif 

/* Kindly note that the below Timeout values should be
 * in Multiples of the value provided to TIMER_RESOLUTION
 */

/**< Defines guard time out value for LLC timer, 
    1000 is in milliseconds */
#ifndef LINK_GUARD_TIMEOUT
#define LINK_GUARD_TIMEOUT              1000U
#endif 


/**< Defines connection time out value for LLC timer, 
    1000 is in milliseconds */
#ifndef LINK_CONNECTION_TIMEOUT
#define LINK_CONNECTION_TIMEOUT         1000U
#endif 


/**< Defines Firmware Download Completion Timeout value ,
    120000 is in milliseconds */


#ifndef NXP_DNLD_COMPLETE_TIMEOUT
#define NXP_DNLD_COMPLETE_TIMEOUT         120000U
#endif


/**< Define to configure the Active Mode Polling Guard Time-out 
  */

#ifndef DEV_MGMT_ACT_GRD_TO_DEFAULT
#define DEV_MGMT_ACT_GRD_TO_DEFAULT       0x20U
#endif

/**<  NFCIP Active Mode Default Configuration (when acting as Target)
       0x01     106 kbps
       0x02     212 kbps
       0x04     424 kbps
 */

#ifndef NXP_NFCIP_ACTIVE_DEFAULT
#define NXP_NFCIP_ACTIVE_DEFAULT        0x01U
#endif




#ifndef NXP_NFC_HCI_TIMER
#define NXP_NFC_HCI_TIMER       0
#define NXP_NFC_HCI_TIMEOUT     6000
#endif


/*
 *****************************************************************
  DO NOT MODIFY THE BELOW MACROS UNLESS OTHERWISE MENTIONED
 *****************************************************************
 */



#ifndef HOST_CE_A_SAK_DEFAULT
#define HOST_CE_A_SAK_DEFAULT           0x20U
#endif 

#ifndef NXP_CE_A_ATQA_HIGH
#define NXP_CE_A_ATQA_HIGH              0x00U
#endif

#ifndef NXP_CE_A_ATQA_LOW
#define NXP_CE_A_ATQA_LOW               0x04U
#endif


#ifndef NXP_UICC_CE_RIGHTS
#define NXP_UICC_CE_RIGHTS              0x0FU
#endif 

#ifndef NXP_UICC_RD_RIGHTS
#define NXP_UICC_RD_RIGHTS              0x00U
#endif 


/*
 *****************************************************************
  DO NOT DISABLE/ENABLE BELOW MACROS UNLESS OTHERWISE MENTIONED
 *****************************************************************
 */

#define ES_HW_VER   32
 
/*
 *****************************************************************
 *************** FEATURE SPECIFIC MACROS *************************
 *****************************************************************
 */



/**< Macro to Enable SMX Feature During
 * Initialisation */

#if !defined(NXP_SMX)
#define NXP_SMX 1
#endif

#if (NXP_SMX == 1)
#define NXP_HAL_ENABLE_SMX 
#endif

/**< Macro to Enable the Host Session
 * Initialisation */
#define ESTABLISH_SESSION

/**< Macro to Enable the Peer to Peer Feature */
#define ENABLE_P2P

#define DEFAULT_NFCIP_INITIATOR_MODE_SUPPORT   0x3FU
#define DEFAULT_NFCIP_TARGET_MODE_SUPPORT      0x0FU

/**< Macro to Enable the ISO14443-B Feature */
#define TYPE_B

/**< Macro to Enable the Felica Feature */
#define TYPE_FELICA

/**< Macro to Enable the JEWEL Feature */
#define TYPE_JEWEL

/**< Macro to Enable the ISO15693 Feature */
#define TYPE_ISO15693

/*< Macro to Verify the Poll Parameters Set */
/* #define ENABLE_VERIFY_PARAM */

/**< Macro to Enable ISO 18092 Protocol compliancy
 *  SAK to be merged with the TYPE A Card RF Feature :3.1*/
#define TGT_MERGE_SAK


/**< Macro to Configure the default power status
 * to allow the PN544 to enter into the Standby */
#define CFG_PWR_STATUS


/**< Macro to Enable the SWP Protocol
 * to detect UICC During Initialisation */
#define ENABLE_UICC

/**< Macro to Enable the RAW Mode of Transaction
 * for the ISO-14443-3A Compliant Targets */
#define ENABLE_MIFARE_RAW

/**< Macro to Enable the HOST List
 * to allow the UICC Communication */
#define HOST_WHITELIST

/**< Support reconnecting to a different handle on the same tag */
#define RECONNECT_SUPPORT

/**< Macro to Enable the Card Emulation Feature */
/* #define HOST_EMULATION */

/**< Macro to Enable the Download Mode Feature */
#define FW_DOWNLOAD

/**< Macro to Enable the Firmware Download Timer */
#define FW_DOWNLOAD_TIMER

/**< Macro to Verify the Firmware Download */
/* #define FW_DOWNLOAD_VERIFY */

#ifndef FW_DOWNLOAD_VERIFY
#define NXP_FW_INTEGRITY_CHK    1
#endif

#define UICC_CONNECTIVITY_PATCH

/* Work around to Delay the initiator activation */
/* #define NXP_NFCIP_ACTIVATE_DELAY */

/* Work around to Release the Discovered Target */
#define SW_RELEASE_TARGET

/* Macro to Allow the HCI Release in any state */
#define NXP_HCI_SHUTDOWN_OVERRIDE


/* Macro to Enable The P2P Transaction Timers */
#define P2P_TGT_TRANSACT_TIMER

#if (ES_HW_VER == 32)
/* Macro to Configure the Target Disable Register */
#define NFCIP_TGT_DISABLE_CFG

#endif

/*< Macro to Disable the Felica Mapping */
/* #define DISABLE_FELICA_MAPPING */

/*< Macro to Disable the Felica Mapping */
/* #define DISABLE_JEWEL_MAPPING */

/**< Macro to enable LLC timer */
#define LLC_TIMER_ENABLE

/**< Macro to enable HCI Response timer */
#define NXP_NFC_HCI_TIMER 1

/* A Workaround to Delay and obtain the UICC Status Information */
/* #define UICC_STATUS_DELAY */

#ifdef UICC_STATUS_DELAY
#define UICC_STATUS_DELAY_COUNT 0x00100000
#endif

/**< Macro to delay the LLC RESET response callback,
    Value is in milli-seconds */
#define LLC_RESET_DELAY                 10

/* Macro to Enable the workaround for Tuning of
 * RF for TYPE B and F
 */
/* #define SW_TYPE_RF_TUNING_BF */

/* Workaround to update the Active Guard Timeout */
/* #define MAX_ACTIVATE_TIMEOUT */

/* #define ONE_BYTE_LEN */

#define NFC_RF_NOISE_SW

/**< Define to configure the PMOS Modulation Index value
  */

#ifndef NFC_DEV_PMOS_MOD_DEFAULT
/* 0x3F -> 6%, 0x3A -> 10%, 0x3C -> 10%, 0x35 -> 15.8%,  0x28 -> 25.8% */
#define NFC_DEV_PMOS_MOD_DEFAULT          0x3CU
#endif


#ifndef SW_TYPE_RF_TUNING_BF
#define SW_TYPE_RF_TUNING_BF              0x80U
#endif


/* Reset the Default values of Host Link Timers */
/* Macro to Enable the Host Side Link Timeout Configuration
 * 0x00 ----> Default Pre-defined Configuration;
 * 0x01 ----> Update only the Host Link Guard Timeout Configuration;
 * 0x03 ----> Update Both the Host Link Guard Timeout
              and ACK Timeout Configuration;
 */

#ifndef HOST_LINK_TIMEOUT
#define HOST_LINK_TIMEOUT              0x00U
#endif


#ifndef NXP_NFC_LINK_GRD_CFG_DEFAULT
#define NXP_NFC_LINK_GRD_CFG_DEFAULT   0x0032U
#endif

#ifndef NXP_NFC_LINK_ACK_CFG_DEFAULT
#define NXP_NFC_LINK_ACK_CFG_DEFAULT   0x0005U
#endif

/* Macro to Enable the Interface Character Timeout Configuration
 * 0x00 ----> Default Pre-defined Configuration;
 * 0x01 ----> Update the IFC Timeout Default Configuration;
 */

#ifndef NXP_NFC_IFC_TIMEOUT
#define NXP_NFC_IFC_TIMEOUT            0x00
#endif


#ifndef NXP_NFC_IFC_CONFIG_DEFAULT
#define NXP_NFC_IFC_CONFIG_DEFAULT     0x203AU
#endif

#ifndef NFC_ISO_15693_MULTIPLE_TAGS_SUPPORT
#define NFC_ISO_15693_MULTIPLE_TAGS_SUPPORT 0x00
#endif

/*
 *****************************************************************
 ***********  MACROS ENABLE EEPROM REGISTER WRITE ****************
 *****************************************************************
 */


/* Enable this to Disable the WI Notification */
/* #define DISABLE_WI_NOTIFICATION */

/* Macro to Enable the Configuration of Initiator
 * speed during Discovery configuration
 */
#define INITIATOR_SPEED


/**/
/* #define UICC_SESSION_RESET */

/* Macro to Enable the Configuration of UICC
 * Timer and Bitrate during Initialisation
 */




/* -----------------Structures and Enumerations -------------------------*/




/* -----------------Exported Functions----------------------------------*/


#endif /*PHNFC_CONFIG_H*/

