/*
 * 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         0x0BU
#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 ACK time out value for LLC timer,
    150 is in milliseconds */
#ifndef LINK_ACK_TIMEOUT
#define LINK_ACK_TIMEOUT                1U
#endif


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


#ifndef NXP_DNLD_COMPLETE_TIMEOUT
#define NXP_DNLD_COMPLETE_TIMEOUT         60000U
#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       1
#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 */

#define NXP_HAL_VERIFY_EEPROM_CRC  0x01U

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

/**< Macro to Enable the Firmware Download Timer */
/* 0x01U to use overall timeout */
/* 0x02U to use per frame timeout */
#define FW_DOWNLOAD_TIMER   0x02U

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

#ifndef FW_DOWNLOAD_VERIFY
#define NXP_FW_INTEGRITY_CHK    1
#endif

/* To specify the Maximum TX/RX Len */
#define NXP_FW_MAX_TX_RX_LEN   0x200

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

