Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (C) 2010 NXP Semiconductors
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /*
     18  * \file  phNfcTypes.h
     19  * \brief Basic type definitions.
     20  *
     21  * Project: NFC MW / HAL
     22  *
     23  * $Date: Thu Jun 25 21:24:53 2009 $
     24  * $Author: ing04880 $
     25  * $Revision: 1.13 $
     26  * $Aliases: NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_1,NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $
     27  *
     28  */
     29 
     30 #ifndef PHNFCTYPES /* */
     31 #define PHNFCTYPES /* */
     32 
     33 /**
     34  *  \name NFC Types
     35  *
     36  * File: \ref phNfcTypes.h
     37  *
     38  */
     39 /*@{*/
     40 #define PHNFCTYPES_FILEREVISION "$Revision: 1.13 $" /**< \ingroup grp_file_attributes */
     41 #define PHNFCTYPES_FILEALIASES  "$Aliases: NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_1,NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $"     /**< \ingroup grp_file_attributes */
     42 /*@}*/
     43 
     44 #ifndef _WIN32
     45 #include <stdint.h>
     46 #else
     47 #include <Windows.h>
     48 #include <stdio.h>
     49 #define snprintf _snprintf
     50 
     51 #ifndef linux
     52 /**
     53  *  \name Basic Type Definitions
     54  *
     55  *  Constant-length-type definition ('C99).
     56  *
     57  */
     58 /*@{*/
     59 #ifndef __int8_t_defined /* */
     60 #define __int8_t_defined /* */
     61 typedef signed   char   int8_t;         /**<  \ingroup grp_nfc_common
     62                                                8 bit signed integer */
     63 #endif
     64 
     65 #ifndef __int16_t_defined /* */
     66 #define __int16_t_defined /* */
     67 typedef signed   short  int16_t;        /**< \ingroup grp_nfc_common
     68                                              16 bit signed integer */
     69 #endif
     70 
     71 #ifndef __stdint_h
     72 #ifndef __int32_t_defined /* */
     73 #define __int32_t_defined /* */
     74 typedef signed   long   int32_t;        /**< \ingroup grp_nfc_common
     75                                              32 bit signed integer */
     76 #endif
     77 #endif
     78 
     79 #ifndef __uint8_t_defined /* */
     80 #define __uint8_t_defined /* */
     81 typedef unsigned char   uint8_t;        /**<  \ingroup grp_nfc_common
     82                                               8 bit unsigned integer */
     83 #endif
     84 
     85 #ifndef __uint16_t_defined /* */
     86 #define __uint16_t_defined /* */
     87 typedef unsigned short  uint16_t;       /**< \ingroup grp_nfc_common
     88                                              16 bit unsigned integer */
     89 #endif
     90 
     91 #ifndef __stdint_h
     92 #ifndef __uint32_t_defined /* */
     93 #define __uint32_t_defined /* */
     94 typedef unsigned long   uint32_t;       /**< \ingroup grp_nfc_common
     95                                              32 bit unsigned integer */
     96 #endif
     97 #endif
     98 
     99 #endif /* linux */
    100 
    101 #endif /* _WIN32 */
    102 
    103 #ifndef TRUE
    104 #define TRUE			(0x01)			  /**< \ingroup grp_nfc_common
    105                                               Logical True Value */
    106 #endif
    107 
    108 #ifndef FALSE
    109 #define FALSE			(0x00)			  /**< \ingroup grp_nfc_common
    110                                               Logical False Value */
    111 #endif
    112 
    113 typedef uint8_t			utf8_t;			/**< \ingroup grp_nfc_common
    114                                              UTF8 Character String */
    115 
    116 typedef uint8_t			bool_t;			/**< \ingroup grp_nfc_common
    117 												boolean data type */
    118 
    119 typedef uint16_t        NFCSTATUS;      /**< \ingroup grp_nfc_common
    120                                              NFC return values
    121                                          \ref phNfcStatus.h for different status
    122                                           values */
    123 
    124 #ifndef NULL
    125 #define NULL  ((void *)0)
    126 #endif
    127 
    128 /* This Macro to be used to resolve Unused and unreference
    129  * compiler warnings.
    130  */
    131 
    132 #define PHNFC_UNUSED_VARIABLE(x) for((x)=(x);(x)!=(x);)
    133 
    134 /*@}*/
    135 
    136 /**
    137  *
    138  *  \name HAL Overall Definitions
    139  *
    140  *  Definitions applicable to a variety of purposes and functions/features.
    141  *
    142  */
    143  /*@{*/
    144 
    145 #define PHHAL_COMMON_MAX_STRING_LENGTH  0x40U     /**< \ingroup grp_hal_common
    146                                                      Maximum vendor name length in bytes. */
    147 #define PHHAL_UNKNOWN_DEVICE_TYPE       0x00U   /**< \ingroup grp_hal_common
    148                                                      Unknown device type. */
    149 #define PHHAL_SERIAL_DEVICE             0x01U  /**< \ingroup grp_hal_common
    150                                                      Serial device type.  */
    151 #define PHHAL_USB_DEVICE                0x02U   /**< \ingroup grp_hal_common
    152                                                      USB device type. */
    153 #define PHHAL_I2C_DEVICE                0x03U   /**< \ingroup grp_hal_common
    154                                                      I2C device type. */
    155 #define PHHAL_SPI_DEVICE                0x04U   /**< \ingroup grp_hal_common
    156                                                      SPI device type. */
    157 #define PHHAL_PARALLEL_DEVICE           0x05U   /**< \ingroup grp_hal_common
    158                                                      Parallel device type. */
    159 #define PHHAL_NFCID_LENGTH              0x0AU  /**< \ingroup grp_hal_common
    160                                                      Maximum length of NFCID 1..3. */
    161 
    162 #define PHHAL_MAX_DATASIZE              0xFBU       /* 256 * Maximum Data size sent
    163                                                      * by the HAL
    164                                                      */
    165 
    166 #define PHHAL_ATQA_LENGTH               0x02U       /**< ATQA length */
    167 #define PHHAL_MAX_UID_LENGTH            0x0AU       /**< Maximum UID length expected */
    168 #define PHHAL_MAX_ATR_LENGTH            0x30U       /**< Maximum ATR_RES (General Bytes)
    169                                                      *   length expected */
    170 
    171 #define PHHAL_ATQB_LENGTH               0x0BU       /**< ATQB length */
    172 
    173 #define PHHAL_PUPI_LENGTH               0x04U       /**< PUPI length */
    174 #define PHHAL_APP_DATA_B_LENGTH         0x04U       /**< Application Data length for Type B */
    175 #define PHHAL_PROT_INFO_B_LENGTH        0x03U       /**< Protocol info length for Type B */
    176 #define PHHAL_FEL_SYS_CODE_LEN          0x02U       /**< Felica System Code Length */
    177 #define PHHAL_FEL_ID_LEN                0x08U       /**< Felica current ID Length */
    178 #define PHHAL_FEL_PM_LEN                0x08U       /**< Felica current PM Length */
    179 #define PHHAL_15693_UID_LENGTH          0x08U       /**< Length of the Inventory bytes for
    180                                                          ISO15693 Tag */
    181 
    182 #define VENDOR_NAME_LEN                 0x14U
    183 #define MAX_TRANSFER_UNIT               0x21U
    184 #define SESSIONID_SIZE                  0x08U
    185 #define MAX_AID_LEN                     0x10U
    186 #define MAX_UICC_PARAM_LEN              0xFFU
    187 
    188 #define MIFARE_BITMASK                  0x08U
    189 #define ISO_14443_BITMASK               0x20U
    190 #define ISO_14443_DETECTED              0x20U
    191 #define NFCIP_BITMASK                   0x40U
    192 #define NFCIP_DETECTED                  0x40U
    193 
    194 #define MAX_TARGET_SUPPORTED            MAX_REMOTE_DEVICES
    195 
    196 #define NFC_HW_PN65N                    0x10U
    197 
    198 #define NXP_NFCIP_NFCID2_ID             0x01FEU
    199 
    200 #define NXP_FULL_VERSION_LEN            0x0BU
    201 
    202 
    203 /*@}*/
    204 
    205 
    206 /**
    207  *  \name NFC specific Type Definitions
    208  *
    209  */
    210 /*@{*/
    211 
    212 /**
    213  * Data Buffer Structure to hold the Data Buffer
    214  *
    215  * This structure holds the Data in the Buffer of the specified
    216  * size.
    217  *
    218  */
    219 typedef struct phNfc_sData_t
    220 {
    221     uint8_t             *buffer;
    222     uint32_t            length;
    223 } phNfc_sData_t;
    224 
    225 
    226 /**
    227  *\brief Possible Hardware Configuration exposed to upper layer.
    228  * Typically this should be port name (Ex:"COM1","COM2") to which PN544 is connected.
    229  */
    230 typedef enum
    231 {
    232    ENUM_LINK_TYPE_COM1,
    233    ENUM_LINK_TYPE_COM2,
    234    ENUM_LINK_TYPE_COM3,
    235    ENUM_LINK_TYPE_COM4,
    236    ENUM_LINK_TYPE_COM5,
    237    ENUM_LINK_TYPE_COM6,
    238    ENUM_LINK_TYPE_COM7,
    239    ENUM_LINK_TYPE_COM8,
    240    ENUM_LINK_TYPE_I2C,
    241    ENUM_LINK_TYPE_USB,
    242    ENUM_LINK_TYPE_TCP,
    243 
    244    ENUM_LINK_TYPE_NB,
    245 } phLibNfc_eConfigLinkType;
    246 
    247 /**
    248  * \brief Possible Hardware Configuration exposed to upper layer.
    249  * Typically this should be at least the communication link (Ex:"COM1","COM2")
    250  * the controller is connected to.
    251  */
    252 typedef struct phLibNfc_sConfig_t
    253 {
    254    /** Hardware communication link to the controller */
    255    phLibNfc_eConfigLinkType  nLinkType;
    256    /** The client ID (thread ID or message queue ID) */
    257    unsigned int              nClientId;
    258 } phLibNfc_sConfig_t, *pphLibNfc_sConfig_t;
    259 
    260 
    261 /*!
    262  * NFC Message structure contains message specific details like
    263  * message type, message specific data block details, etc.
    264  */
    265 typedef struct phLibNfc_Message_t
    266 {
    267     uint32_t eMsgType;/**< Type of the message to be posted*/
    268     void   * pMsgData;/**< Pointer to message specific data block in case any*/
    269     uint32_t Size;/**< Size of the datablock*/
    270 } phLibNfc_Message_t,*pphLibNfc_Message_t;
    271 
    272 
    273 #ifdef WIN32
    274 #define PH_LIBNFC_MESSAGE_BASE  (WM_USER+0x3FF)
    275 #endif
    276 /**
    277  * Deferred message. This message type will be posted to the client application thread
    278  * to notify that a deferred call must be invoked.
    279  */
    280 #define PH_LIBNFC_DEFERREDCALL_MSG			  (0x311)
    281 
    282 /**
    283  *\brief Deferred call declaration.
    284  * This type of API is called from ClientApplication ( main thread) to notify
    285  * specific callback.
    286  */
    287 typedef  void (*pphLibNfc_DeferredCallback_t) (void*);
    288 /**
    289  *\brief Deferred parameter declaration.
    290  * This type of data is passed as parameter from ClientApplication (main thread) to the
    291  * callback.
    292  */
    293 typedef  void *pphLibNfc_DeferredParameter_t;
    294 /**
    295  *\brief Deferred message specific info declaration.
    296  * This type of information is packed as message data when \ref PH_LIBNFC_DEFERREDCALL_MSG
    297  * type message is posted to message handler thread.
    298  */
    299 typedef struct phLibNfc_DeferredCall_t
    300 {
    301 		pphLibNfc_DeferredCallback_t  pCallback;/**< pointer to Deferred callback */
    302 		pphLibNfc_DeferredParameter_t pParameter;/**< pointer to Deferred parameter */
    303 } phLibNfc_DeferredCall_t;
    304 
    305 
    306 /** \ingroup  grp_hal_common
    307  *
    308  *  \brief Protocol Support Information
    309  *
    310  *  The <em> Supported Protocols Structure </em> holds all protocol supported by the current NFC
    311  *  device.
    312  *
    313  *  \note All members of this structure are output parameters [out].
    314  *
    315  */
    316 typedef struct phNfc_sSupProtocol_t
    317 {
    318     unsigned int MifareUL    : 1;  /**< Protocol Mifare Ultra Light or
    319                                    any NFC Forum Type-2 tags */
    320     unsigned int MifareStd   : 1;  /**< Protocol Mifare Standard. */
    321     unsigned int ISO14443_4A : 1;  /**< Protocol ISO14443-4 Type A.  */
    322     unsigned int ISO14443_4B : 1;  /**< Protocol ISO14443-4 Type B.  */
    323     unsigned int ISO15693    : 1;  /**< Protocol ISO15693 HiTag.  */
    324     unsigned int Felica      : 1;  /**< Protocol Felica. */
    325     unsigned int NFC         : 1;  /**< Protocol NFC. */
    326     unsigned int Jewel       : 1;  /**< Protocol Innovision Jewel Tag. */
    327     /*** TODO: Add SWP, ETSI HCI to this list **/
    328 } phNfc_sSupProtocol_t;
    329 
    330 
    331 /** \ingroup grp_hal_common
    332  *
    333  *
    334  *  \brief Information related to the NFC Device
    335  *
    336  *  The <em> Device Information Structure </em> holds information
    337  *  related to the NFC IC read during initialization time.
    338  *  It allows the caller firware, hardware version, the model id,
    339  *  HCI verison supported and vendor name. Refer to the NFC Device
    340  *  User Manual on how to interpret each of the values. In addition
    341  *  it also contains capabilities of the NFC Device such as the
    342  *  protocols supported in Reader and emulation mode
    343  *
    344  */
    345 typedef struct phNfc_sDeviceCapabilities_t
    346 {
    347     /* */
    348     uint32_t                hal_version; /**< \ingroup grp_hal_common
    349                                               HAL 4.0 Version Information. */
    350     uint32_t                fw_version; /**< \ingroup grp_hal_common
    351                                               Firmware Version Info. */
    352     uint32_t                hw_version; /**< \ingroup grp_hal_common
    353                                               Hardware Version Info. */
    354     uint8_t                 model_id;   /**< \ingroup grp_hal_common
    355                                               IC Variant . */
    356     uint8_t                 hci_version; /**< \ingroup grp_hal_common
    357                                               ETSI HCI Version Supported */
    358     utf8_t                  vendor_name[VENDOR_NAME_LEN]; /**< \ingroup grp_hal_common
    359                                               Vendor name (Null terminated string)*/
    360     uint8_t                 full_version[NXP_FULL_VERSION_LEN];
    361 
    362     phNfc_sSupProtocol_t    ReaderSupProtocol; /**< Supported protocols
    363                                                       (Bitmapped) in Reader mode. */
    364     phNfc_sSupProtocol_t    EmulationSupProtocol;    /**< Supported protocols
    365                                                        (Bitmapped) in Emulation
    366                                                         mode. */
    367     char                    firmware_update_info; /** */
    368 } phNfc_sDeviceCapabilities_t;
    369 
    370 
    371 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    372 
    373 
    374 /** \ingroup grp_hal_common
    375  *
    376  *  \brief Enumerated MIFARE Commands
    377  *
    378  *  The <em> Mifare Command List Enumerator </em> lists all available Mifare native commands.
    379  *
    380  * \note None.
    381  *
    382  */
    383 typedef enum phNfc_eMifareCmdList_t
    384 {
    385     phNfc_eMifareRaw        = 0x00U,     /**< This command performs raw transcations .
    386                                               Format of the phLibNfc_sTransceiveInfo_t
    387                                               content in this case shall be as below:
    388                                                    cmd: filed shall set to  phHal_eMifareRaw .
    389                                                    addr : doesn't carry any significance.
    390                                                    sSendData : Shall contain formatted raw buffer
    391                                                                 based on MIFARE commands type used.
    392                                                                 Formatted buffer shall follow below
    393                                                                 formating scheme.
    394 
    395                                               CmdType+ Block No + CommandSpecific data + 2 byte CRC
    396                                               Ex: With  Write  4 byte command  on block 8  looks as
    397                                               " 0xA2,0x08,0x01,0x02,0x03,0x04,CRC1,CRC2
    398                                               Note :  For MIFARE Std card we recommend use MIFARE
    399                                                       commands directly.
    400                                            */
    401     phNfc_eMifareAuthentA   = 0x60U,     /**< Mifare Standard:\n
    402                                               This command performs an authentication with KEY A for a sector.\n
    403                                               Format of the phLibNfc_sTransceiveInfo_t content in this case is :
    404                                                        cmd: field shall set to  phHal_eMifareAuthentA .
    405                                                        addr : indicates MIFARE block address.
    406                                                            Ex: 0x08 indicates block 8 needs to be authenticated.
    407                                                        sSendData : Shall contain authentication key values.
    408                                                                     sSendData ,buffer shall contain authentication
    409                                                                     key values 01 02 03 04 05 06 authenticates
    410                                                                     block 08 with the key 0x01[..]06. If this
    411                                                                     command fails, then  user needs to reactivate
    412                                                                     the remote Mifare card.
    413                                           */
    414     phNfc_eMifareAuthentB   = 0x61U,     /**< Mifare Standard:\n
    415                                               This command performs an authentication with KEY B for a sector.\n
    416                                               Format of the phLibNfc_sTransceiveInfo_t content in this case is :
    417                                                        cmd: field shall set to  phHal_eMifareAuthentB .
    418                                                        addr : indicates MIFARE block address.
    419                                                            Ex: 0x08 indicates block 8 needs to be authenticated.
    420                                                        sSendData : Shall contain authentication key values.
    421                                                                     sSendData ,buffer shall contain authentication
    422                                                                     key values 01 02 03 04 05 06 authenticates
    423                                                                     block 08 with the key 0x01[..]06. If this
    424                                                                     command fails, then  user needs to reactivate
    425                                                                     the remote Mifare card.
    426                                           */
    427     phNfc_eMifareRead16     = 0x30U,     /**< Mifare Standard and Ultra Light:\n
    428                                               Read 16 Bytes from a Mifare Standard block or 4 Mifare Ultra Light pages.\n
    429                                               Format of the phLibNfc_sTransceiveInfo_t content in this case is :
    430                                                        cmd: field shall set to  phHal_eMifareRead16 .
    431                                                        addr : memory adress to read.
    432                                                        sRecvData : Shall contain buffer of size 16
    433                                                                     to read the data into.
    434 
    435                                               If this command fails, the user needs to reactivate the
    436                                               the remote Mifare card
    437                                           */
    438     phNfc_eMifareRead       = 0x30U,
    439     phNfc_eMifareWrite16    = 0xA0U,     /**< Mifare Standard and Ultra Light:\n
    440                                               Write 16 Bytes to a Mifare Standard block or 4 Mifare Ultra Light pages.\n
    441                                               Format of the phLibNfc_sTransceiveInfo_t content in this case is :
    442                                                        cmd: field shall set to  phHal_eMifareWrite16 .
    443                                                        addr : starting memory adress to write from.
    444                                                        sSendData : Shall contain buffer of size 16 containing
    445                                                                     the data bytes to be written.
    446 
    447                                               If this command fails, the user needs to reactivate the
    448                                               the remote Mifare card
    449                                            */
    450     phNfc_eMifareWrite4     = 0xA2U,     /**< Mifare Ultra Light:\n
    451                                               Write 4 bytes.\n
    452                                               Format of the phLibNfc_sTransceiveInfo_t content in this case is :
    453                                                        cmd: field shall set to  phHal_eMifareWrite4 .
    454                                                        addr : starting memory adress to write from.
    455                                                        sSendData : Shall contain buffer of size 4 containing
    456                                                                     the data bytes to be written.
    457 
    458                                               If this command fails, the user needs to reactivate the
    459                                               the remote Mifare card
    460                                           */
    461     phNfc_eMifareInc        = 0xC1U,     /**< Increment. */
    462     phNfc_eMifareDec        = 0xC0U,     /**< Decrement. */
    463     phNfc_eMifareTransfer   = 0xB0U,     /**< Tranfer.   */
    464     phNfc_eMifareRestore    = 0xC2U,     /**< Restore.   */
    465     phNfc_eMifareReadSector = 0x38U,     /**< Read Sector.   */
    466     phNfc_eMifareWriteSector= 0xA8U,     /**< Write Sector.   */
    467     phNfc_eMifareInvalidCmd = 0xFFU      /**< Invalid Command */
    468 } phNfc_eMifareCmdList_t;
    469 
    470 
    471 /** \ingroup grp_hal_common
    472  *
    473  *  The <em> T=Cl Command List Enumerator </em> lists all available T=Cl Commands.
    474  *
    475  * \note None.
    476  *
    477  */
    478 typedef enum phNfc_eIso14443_4_CmdList_t
    479 {
    480     phNfc_eIso14443_4_Raw             = 0x00U /**< ISO 14443-4 Exchange command:\n
    481                                                  - This command sends the data buffer directly
    482                                                  to the remote device */
    483 
    484 } phNfc_eIso14443_4_CmdList_t;
    485 
    486 
    487 /** \ingroup grp_hal_common
    488  *
    489  *  The <em> NFCIP1 Command List Enumerator </em> lists all available NFCIP1 Commands.
    490  *
    491  * \note None.
    492  *
    493  */
    494 typedef enum phNfc_eNfcIP1CmdList_t
    495 {
    496        phNfc_eNfcIP1_Raw             = 0x00U /**< NfcIP Exchange command:\n
    497                                                  - This command sends the data buffer directly
    498                                                   to the remote device */
    499 }phNfc_eNfcIP1CmdList_t;
    500 
    501 
    502 /** \ingroup grp_hal_common
    503  *
    504  *  The <em> ISO15693 Command List Enumerator </em> lists all available ISO15693 Commands.
    505  *
    506  * \note None.
    507  *
    508  */
    509 typedef enum phNfc_eIso15693_CmdList_t
    510 {
    511 #if 0
    512     phNfc_eIso15693_Raw             = 0x00U, /**< ISO 15693 Exchange Raw command:\n
    513                                                  - This command sends the data buffer directly
    514                                                  to the remote device */
    515 #endif
    516     phNfc_eIso15693_Cmd             = 0x20U, /**< ISO 15693 Exchange command:\n
    517                                                  - This command is used to access the card
    518                                                  to the remote device */
    519     phNfc_eIso15693_Invalid         = 0xFFU      /**< Invalid Command */
    520 } phNfc_eIso15693_CmdList_t;
    521 
    522 
    523 /** \ingroup grp_hal_common
    524  *
    525  *  The <em> Felica Command List Enumerator </em> lists all available Felica Commands.
    526  *
    527  * \note None.
    528  *
    529  */
    530 typedef enum phNfc_eFelicaCmdList_t
    531 {
    532     phNfc_eFelica_Raw             = 0xF0U, /**< Felica Raw command:\n
    533                                                  - This command sends the data buffer directly
    534                                                  to the remote device */
    535     phNfc_eFelica_Check           = 0x00, /**< Felica Check command:\n
    536                                                  - This command checks the data from the Felica
    537                                                   remote device */
    538     phNfc_eFelica_Update          = 0x01, /**< Felica Update command:\n
    539                                                  - This command updates the data onto the Felica
    540                                                   remote device */
    541     phNfc_eFelica_Invalid         = 0xFFU      /**< Invalid Command */
    542 } phNfc_eFelicaCmdList_t;
    543 
    544 
    545 /** \ingroup grp_hal_common
    546  *
    547  *  The <em> Jewel Command List Enumerator </em> lists all available Jewel Commands.
    548  *
    549  * \note None.
    550  *
    551  */
    552 typedef enum phNfc_eJewelCmdList_t
    553 {
    554     phNfc_eJewel_Raw            = 0x00U, /**< Jewel command:\n
    555                                                  - This command sends the data buffer directly
    556                                                  to the remote device */
    557     phNfc_eJewel_Invalid        = 0xFFU  /**< Invalid jewel command */
    558 }phNfc_eJewelCmdList_t;
    559 
    560 
    561 /** \ingroup grp_hal_nfci
    562 *
    563 *  \brief Remote Device Reader A RF Gate Information Container
    564 *
    565 *  The <em> Reader A structure </em> includes the available information
    566 *  related to the discovered ISO14443A remote device. This information
    567 *  is updated for every device discovery.
    568 *  \note None.
    569 *
    570 */
    571 typedef struct phNfc_sIso14443AInfo_t
    572 {
    573     uint8_t         Uid[PHHAL_MAX_UID_LENGTH];      /**< UID information of the TYPE A
    574                                                        Tag Discovered */
    575     uint8_t         UidLength;                      /**< UID information length, shall not be greater
    576                                                     than PHHAL_MAX_UID_LENGTH i.e., 10 */
    577     uint8_t         AppData[PHHAL_MAX_ATR_LENGTH]; /**< Application data information of the
    578                                                         tag discovered (= Historical bytes for
    579                                                         type A) */
    580     uint8_t         AppDataLength;                  /**< Application data length */
    581     uint8_t         Sak;                            /**< SAK informationof the TYPE A
    582                                                        Tag Discovered */
    583     uint8_t         AtqA[PHHAL_ATQA_LENGTH];        /**< ATQA informationof the TYPE A
    584                                                        Tag Discovered */
    585     uint8_t         MaxDataRate;                    /**< Maximum data rate supported by the TYPE A
    586                                                        Tag Discovered */
    587     uint8_t         Fwi_Sfgt;                       /**< Frame waiting time and start up frame guard
    588                                                     time as defined in ISO/IEC 14443-4[7] for
    589                                                     type A */
    590 } phNfc_sIso14443AInfo_t;
    591 
    592 
    593 /** \ingroup grp_hal_nfci
    594 *
    595 *  \brief Remote Device Reader B RF Gate Information Container
    596 *
    597 *  The <em> Reader B structure </em> includes the available information
    598 *  related to the discovered ISO14443B remote device. This information
    599 *  is updated for every device discovery.
    600 *  \note None.
    601 *
    602 */
    603 typedef struct phNfc_sIso14443BInfo_t
    604 {
    605     union phNfc_uAtqBInfo
    606     {
    607         struct phNfc_sAtqBInfo
    608         {
    609             uint8_t         Pupi[PHHAL_PUPI_LENGTH];            /**< PUPI information  of the TYPE B
    610                                                                     Tag Discovered */
    611             uint8_t         AppData[PHHAL_APP_DATA_B_LENGTH];   /**< Application Data  of the TYPE B
    612                                                                     Tag Discovered */
    613             uint8_t         ProtInfo[PHHAL_PROT_INFO_B_LENGTH]; /**< Protocol Information  of the TYPE B
    614                                                                     Tag Discovered */
    615         } AtqResInfo;
    616         uint8_t         AtqRes[PHHAL_ATQB_LENGTH];          /**< ATQB Response Information of TYPE B
    617                                                                 Tag Discovered */
    618     } AtqB;
    619     uint8_t         HiLayerResp[PHHAL_MAX_ATR_LENGTH];  /**< Higher Layer Response information
    620                                                              in answer to ATRRIB Command for Type B */
    621     uint8_t         HiLayerRespLength;                  /**< Higher Layer Response length */
    622     uint8_t         Afi;                                /**< Application Family Identifier of TYPE B
    623                                                                 Tag Discovered */
    624     uint8_t         MaxDataRate;                        /**< Maximum data rate supported by the TYPE B
    625                                                              Tag Discovered */
    626 } phNfc_sIso14443BInfo_t;
    627 
    628 
    629 /** \ingroup grp_hal_nfci
    630 *
    631 *  \brief Remote Device Reader B prime RF Gate Information Container
    632 *
    633 */
    634 typedef struct phNfc_sIso14443BPrimeInfo_t
    635 {
    636     /* TODO: This will be updated later */
    637     void *BPrimeCtxt;
    638 } phNfc_sIso14443BPrimeInfo_t;
    639 
    640 
    641 /** \ingroup grp_hal_nfci
    642 *
    643 *  \brief Remote Device Jewel Reader RF Gate Information Container
    644 *
    645 *  The <em> Jewel Reader structure </em> includes the available information
    646 *  related to the discovered Jewel remote device. This information
    647 *  is updated for every device discovery.
    648 *  \note None.
    649 *
    650 */
    651 typedef struct phNfc_sJewelInfo_t
    652 {
    653     uint8_t         Uid[PHHAL_MAX_UID_LENGTH];      /**< UID information of the TYPE A
    654                                                          Tag Discovered */
    655     uint8_t         UidLength;                      /**< UID information length, shall not be greater
    656                                                     than PHHAL_MAX_UID_LENGTH i.e., 10 */
    657     uint8_t         HeaderRom0; /**< Header Rom byte zero */
    658     uint8_t         HeaderRom1; /**< Header Rom byte one */
    659 
    660 } phNfc_sJewelInfo_t;
    661 
    662 
    663 /** \ingroup grp_hal_nfci
    664 *
    665 *  \brief Remote Device Felica Reader RF Gate Information Container
    666 *
    667 *  The <em> Felica Reader structure </em> includes the available information
    668 *  related to the discovered Felica remote device. This information
    669 *  is updated for every device discovery.
    670 *  \note None.
    671 *
    672 */
    673 typedef struct phNfc_sFelicaInfo_t
    674 {
    675     uint8_t     IDm[(PHHAL_FEL_ID_LEN + 2)];              /**< Current ID of Felica tag */
    676     uint8_t     IDmLength;                          /**< IDm length, shall not be greater
    677                                                     than PHHAL_FEL_ID_LEN i.e., 8 */
    678     uint8_t     PMm[PHHAL_FEL_PM_LEN];              /**< Current PM of Felica tag */
    679     uint8_t     SystemCode[PHHAL_FEL_SYS_CODE_LEN]; /**< System code of Felica tag */
    680 } phNfc_sFelicaInfo_t;
    681 
    682 
    683 /** \ingroup grp_hal_nfci
    684 *
    685 *  \brief Remote Device Reader 15693 RF Gate Information Container
    686 *
    687 *  The <em> Reader A structure </em> includes the available information
    688 *  related to the discovered ISO15693 remote device. This information
    689 *  is updated for every device discovery.
    690 *  \note None.
    691 *
    692 */
    693 
    694 typedef struct phNfc_sIso15693Info_t
    695 {
    696     uint8_t         Uid[PHHAL_15693_UID_LENGTH];      /**< UID information of the 15693
    697                                                        Tag Discovered */
    698     uint8_t         UidLength;                      /**< UID information length, shall not be greater
    699                                                     than PHHAL_15693_UID_LENGTH i.e., 8 */
    700     uint8_t         Dsfid;                          /**< DSF information of the 15693
    701                                                        Tag Discovered */
    702     uint8_t         Flags;                          /**< Information about the Flags
    703                                                         in the 15693 Tag Discovered */
    704     uint8_t         Afi;                            /**< Application Family Identifier of
    705                                                           15693 Tag Discovered */
    706 } phNfc_sIso15693Info_t;
    707 
    708 
    709 /** \ingroup grp_hal_nfci
    710 *
    711 *  \brief NFC Data Rate Supported between the Reader and the Target
    712 *
    713 *  The <em> \ref phHalNfc_eDataRate enum </em> lists all the Data Rate
    714 *  values to be used to determine the rate at which the data is transmitted
    715 *  to the target.
    716 *
    717 *  \note None.
    718 */
    719 
    720 
    721 /** \ingroup grp_hal_nfci
    722 *
    723 *  \brief NFCIP1 Data rates
    724 *
    725 */
    726 typedef enum phNfc_eDataRate_t{
    727     phNfc_eDataRate_106    = 0x00U,
    728     phNfc_eDataRate_212,
    729     phNfc_eDataRate_424,
    730     /* phNfc_eDataRate_848,
    731     phNfc_eDataRate_1696,
    732     phNfc_eDataRate_3392,
    733     phNfc_eDataRate_6784,*/
    734     phNfc_eDataRate_RFU
    735 } phNfc_eDataRate_t;
    736 
    737 
    738 /** \ingroup grp_hal_nfci
    739 *
    740 *  \brief NFCIP1 Gate Information Container
    741 *
    742 *  The <em> NFCIP1 structure </em> includes the available information
    743 *  related to the discovered NFCIP1 remote device. This information
    744 *  is updated for every device discovery.
    745 *  \note None.
    746 *
    747 */
    748 typedef struct phNfc_sNfcIPInfo_t
    749 {
    750     /* Contains the random NFCID3I conveyed with the ATR_REQ.
    751         always 10 bytes length
    752         or contains the random NFCID3T conveyed with the ATR_RES.
    753         always 10 bytes length */
    754     uint8_t         NFCID[PHHAL_MAX_UID_LENGTH];
    755     uint8_t         NFCID_Length;
    756     /* ATR_RES = General bytes length, Max length = 48 bytes */
    757     uint8_t         ATRInfo[PHHAL_MAX_ATR_LENGTH];
    758     uint8_t         ATRInfo_Length;
    759     /**< SAK information of the tag discovered */
    760     uint8_t         SelRes;
    761     /**< ATQA information of the tag discovered */
    762     uint8_t         SenseRes[PHHAL_ATQA_LENGTH];
    763     /**< Is Detection Mode of the NFCIP Target Active */
    764     uint8_t         Nfcip_Active;
    765     /**< Maximum frame length supported by the NFCIP device */
    766     uint16_t        MaxFrameLength;
    767     /**< Data rate supported by the NFCIP device */
    768     phNfc_eDataRate_t         Nfcip_Datarate;
    769 
    770 } phNfc_sNfcIPInfo_t;
    771 
    772 
    773 /** \ingroup grp_hal_nfci
    774 *
    775 *  \brief Remote Device Specific Information Container
    776 *
    777 *  The <em> Remote Device Information Union </em> includes the available Remote Device Information
    778 *  structures. Following the device detected, the corresponding data structure is used.
    779 *
    780 *  \note None.
    781 *
    782 */
    783 typedef union phNfc_uRemoteDevInfo_t
    784 {
    785     phNfc_sIso14443AInfo_t          Iso14443A_Info;
    786     phNfc_sIso14443BInfo_t          Iso14443B_Info;
    787     phNfc_sIso14443BPrimeInfo_t     Iso14443BPrime_Info;
    788     phNfc_sNfcIPInfo_t              NfcIP_Info;
    789     phNfc_sFelicaInfo_t             Felica_Info;
    790     phNfc_sJewelInfo_t              Jewel_Info;
    791     phNfc_sIso15693Info_t           Iso15693_Info;
    792 } phNfc_uRemoteDevInfo_t;
    793 
    794 
    795 /** \ingroup grp_hal_nfci
    796 *
    797 *  \brief RF Device Type Listing
    798 *
    799 *  The <em> RF Device Type List </em> is used to identify the type of
    800 *  remote device that is discovered/connected. There seperate
    801 *  types to identify a Remote Reader (denoted by _PCD) and
    802 *  Remote Tag (denoted by _PICC)
    803 *  \note None.
    804 *
    805 */
    806 typedef enum phNfc_eRFDevType_t
    807 {
    808     phNfc_eUnknown_DevType        = 0x00U,
    809 
    810     /* Specific PCD Devices */
    811     phNfc_eISO14443_A_PCD,
    812     phNfc_eISO14443_B_PCD,
    813     phNfc_eISO14443_BPrime_PCD,
    814     phNfc_eFelica_PCD,
    815     phNfc_eJewel_PCD,
    816     phNfc_eISO15693_PCD,
    817     /* Generic PCD Type */
    818     phNfc_ePCD_DevType,
    819 
    820     /* Generic PICC Type */
    821     phNfc_ePICC_DevType,
    822     /* Specific PICC Devices */
    823     phNfc_eISO14443_A_PICC,
    824     phNfc_eISO14443_4A_PICC,
    825     phNfc_eISO14443_3A_PICC,
    826     phNfc_eMifare_PICC,
    827     phNfc_eISO14443_B_PICC,
    828     phNfc_eISO14443_4B_PICC,
    829     phNfc_eISO14443_BPrime_PICC,
    830     phNfc_eFelica_PICC,
    831     phNfc_eJewel_PICC,
    832     phNfc_eISO15693_PICC,
    833 
    834     /* NFC-IP1 Device Types */
    835     phNfc_eNfcIP1_Target,
    836     phNfc_eNfcIP1_Initiator,
    837 
    838     /* Other Sources */
    839     phNfc_eInvalid_DevType
    840 
    841 } phNfc_eRFDevType_t;
    842 
    843 
    844 /** \ingroup grp_hal_nfci
    845 *
    846 *  \brief Remote Device Type Listing
    847 *
    848 *  The <em> Remote Device Type List </em> is used to identify the type of
    849 *  remote device that is discovered/connected
    850 *  \note This is same as RF Device Type List.
    851 *
    852 */
    853 typedef phNfc_eRFDevType_t phNfc_eRemDevType_t;
    854 
    855 
    856 /** \ingroup grp_hal_common
    857  *
    858  *
    859  *  \brief Common Command Attribute
    860  *
    861  *  The <em> Hal Command Union </em> includes each available type of Commands.
    862  *
    863  * \note None.
    864  *
    865  */
    866 typedef union phNfc_uCommand_t
    867 {
    868   phNfc_eMifareCmdList_t         MfCmd;         /**< Mifare command structure.  */
    869   phNfc_eIso14443_4_CmdList_t    Iso144434Cmd;  /**< ISO 14443-4 command structure.  */
    870   phNfc_eFelicaCmdList_t         FelCmd;        /**< Felica command structure.  */
    871   phNfc_eJewelCmdList_t          JewelCmd;      /**< Jewel command structure.  */
    872   phNfc_eIso15693_CmdList_t      Iso15693Cmd;   /**< ISO 15693 command structure.  */
    873   phNfc_eNfcIP1CmdList_t         NfcIP1Cmd;     /**< ISO 18092 (NFCIP1) command structure */
    874 } phNfc_uCmdList_t;
    875 
    876 
    877 /** \ingroup grp_hal_nfci
    878  *
    879  *  \brief Remote Device Information Structure
    880  *
    881  *  The <em> Remote Device Information Structure </em> holds information about one single Remote
    882  *  Device detected by the polling function .\n
    883  *  It lists parameters common to all supported remote devices.
    884  *
    885  *  \note
    886  *
    887  *  \sa \ref phHal4Nfc_ConfigureDiscovery and \ref phHal4Nfc_Connect
    888  *
    889  */
    890 typedef struct phNfc_sRemoteDevInformation_t
    891 {
    892     uint8_t                    SessionOpened;       /**< [out] Boolean
    893                                                      *   Flag indicating the validity of
    894                                                      *   the handle of the remote device. */
    895     phNfc_eRemDevType_t        RemDevType;          /**< [out] Remote device type which says that remote
    896                                                     is Reader A or Reader B or NFCIP or Felica or
    897                                                     Reader B Prime or Jewel*/
    898     phNfc_uRemoteDevInfo_t     RemoteDevInfo;       /**< Union of available Remote Device.
    899                                                      *   \ref phNfc_uRemoteDevInfo_t Information.  */
    900 } phNfc_sRemoteDevInformation_t;
    901 
    902 
    903 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    904 /*    TARGET STRUCTURES */
    905 
    906 
    907 /** \ingroup  grp_hal_common
    908  *
    909  *  \brief Transceive Information Data Structure for sending commands/response
    910  *         to the remote device
    911  *
    912  *  The <em> Transceive Information Data Structure </em> is used to pass the
    913  *  Command, Address (only required for MIFARE) and the send and receive data
    914  *  data structure (buffer and length) for communication with remote device
    915  *
    916  *
    917  */
    918 typedef struct phNfc_sTransceiveInfo_t
    919 {
    920     phNfc_uCmdList_t                cmd;
    921 
    922     /** \internal Address Field required for only Mifare
    923      *  Family Proprietary Cards.
    924      *  The Address Size is Valid only upto 255 Blocks limit
    925      *  i:e for Mifare 4K
    926      */
    927     uint8_t                         addr;
    928     phNfc_sData_t                   sSendData;
    929     phNfc_sData_t                   sRecvData;
    930 } phNfc_sTransceiveInfo_t;
    931 
    932 
    933 /** \ingroup grp_hal_nfci
    934 *
    935 *  \brief Poll Device Information for conifiguring the discovery wheel
    936           Reader and Card Emulation Phases
    937 *
    938 *  The <em> \ref phNfc_sPollDevInfo_t enum </em> is used to enable/disable
    939 *  phases of the discovery wheel related to specific reader types and
    940 *  card emulation phase
    941 *  \note Enabling specific Reader technology when NFCIP1 speed is set in the
    942 *        phNfc_sADD_Cfg_t is implicitly done in HAL. Use this structure to only
    943 *        enable/disable Card Reader Functionality
    944 */
    945 typedef struct phNfc_sPollDevInfo_t
    946 {
    947     unsigned                    EnableIso14443A : 1;      /**< Flag to enable
    948                                                         Reader A discovery */
    949     unsigned                    EnableIso14443B : 1;      /**< Flag to enable
    950                                                         Reader B discovery */
    951     unsigned                    EnableFelica212 : 1;   /**< Flag to enable
    952                                                         Felica 212 discovery */
    953     unsigned                    EnableFelica424 : 1;   /**< Flag to enable
    954                                                         Felica 424 discovery */
    955     unsigned                    EnableIso15693 : 1;     /**< Flag to enable
    956                                                         ISO 15693 discovery */
    957     unsigned                    EnableNfcActive : 1; /**< Flag to enable
    958                                                         Active Mode of NFC-IP discovery.
    959                                                         This is updated internally
    960                                                         based on the NFC-IP speed.
    961                                                         */
    962     unsigned                    RFU : 1;                /**< Reserved for future use */
    963     unsigned                    DisableCardEmulation : 1;    /**< Flag to
    964                                                             disable the card emulation */
    965 } phNfc_sPollDevInfo_t;
    966 
    967 
    968 /** \ingroup grp_hal_nfci
    969 *
    970 *  \brief P2P speed for the Initiator
    971 *
    972 *  The <em> \ref phNfc_eP2PMode_t enum </em> lists all the NFCIP1 speeds
    973 *  to be used for configuring the NFCIP1 discovery
    974 *
    975 *  \note None.
    976 */
    977 typedef enum phNfc_eP2PMode_t
    978 {
    979     phNfc_eDefaultP2PMode  = 0x00U,
    980     phNfc_ePassive106 = 0x01U,
    981     phNfc_ePassive212 = 0x02U,
    982     phNfc_ePassive424 = 0x04U,
    983     phNfc_eActive106 = 0x08U,
    984     phNfc_eActive212 = 0x10U,
    985     phNfc_eActive424 = 0x20U,
    986     phNfc_eP2P_ALL   = 0x27U,  /* All Passive and 424 Active */
    987     phNfc_eInvalidP2PMode = 0xFFU
    988 } phNfc_eP2PMode_t;
    989 
    990 
    991 /** \ingroup grp_hal_common
    992 *
    993 *  \brief Identities the type of Notification
    994 *
    995 *  This enumeration is used to specify the type of notification notified
    996 *  to the upper layer. This classifies the notification into two types
    997 *  one for the discovery notifications and the other for all the remaining
    998 *  event notifications
    999 *  \note None.
   1000 */
   1001 typedef enum phNfc_eNotificationType_t
   1002 {
   1003     INVALID_NFC_NOTIFICATION    = 0x00U, /* Invalid Notification */
   1004     NFC_DISCOVERY_NOTIFICATION,         /* Remote Device Discovery Notification */
   1005     NFC_EVENT_NOTIFICATION              /* Event Notification from the other hosts */
   1006 } phNfc_eNotificationType_t;
   1007 
   1008 
   1009 /** \ingroup grp_hal_common
   1010 *
   1011 *  \brief
   1012 *
   1013 *  \note None.
   1014 */
   1015 typedef struct phNfc_sUiccInfo_t
   1016 {
   1017     /* AID and Parameter Information is obtained if the
   1018      * eventType is NFC_EVT_TRANSACTION.
   1019      */
   1020     phNfc_sData_t           aid;
   1021     phNfc_sData_t           param;
   1022 
   1023 } phNfc_sUiccInfo_t;
   1024 
   1025 
   1026 /** \ingroup grp_hal_nfci
   1027 *
   1028 *  \brief P2P Information for the Initiator
   1029 *
   1030 *  The <em> \ref phNfc_sNfcIPCfg_t </em> holds the P2P related information
   1031 *  use by the NFC Device during P2P Discovery and connection
   1032 *
   1033 *  \note None.
   1034 */
   1035 typedef struct phNfc_sNfcIPCfg_t
   1036 {
   1037     /* ATR_RES = General bytes length, Max length = 48 bytes */
   1038     uint8_t         generalBytesLength;
   1039     uint8_t         generalBytes[PHHAL_MAX_ATR_LENGTH];
   1040 
   1041     /* TODO: This will be updated later for any additional params*/
   1042 } phNfc_sNfcIPCfg_t;
   1043 
   1044 
   1045 /** \ingroup grp_hal_common
   1046 *
   1047 *  \brief Discovery Configuration Mode
   1048 *
   1049 *  This enumeration is used to choose the Discovery Configuration
   1050 *  Mode :- Configure and Start, Stop or Start with last set
   1051 *  configuration
   1052 *  \note None.
   1053 */
   1054 typedef enum phNfc_eDiscoveryConfigMode_t
   1055 {
   1056     NFC_DISCOVERY_CONFIG  = 0x00U,/**< Configure discovery with values
   1057                                        in phNfc_sADD_Cfg_t and start
   1058                                        discovery */
   1059     NFC_DISCOVERY_START,         /**< Start Discovery with previously set
   1060                                       configuration */
   1061     NFC_DISCOVERY_STOP,          /**< Stop the Discovery */
   1062     NFC_DISCOVERY_RESUME       /**< Resume the Discovery with previously
   1063                                    *  set configuration.
   1064                                    *  This is valid only when the Target
   1065                                    *  is not connected.
   1066                                    */
   1067 }phNfc_eDiscoveryConfigMode_t;
   1068 
   1069 /** \ingroup grp_hal_common
   1070 *
   1071 *  \brief Target or Tag Release Mode
   1072 *
   1073 *  This enumeration defines various modes of releasing an acquired target
   1074 *  or tag.
   1075 *  \note None.
   1076 */
   1077 typedef enum phNfc_eReleaseType_t
   1078 {
   1079     NFC_INVALID_RELEASE_TYPE    =0x00U,/**<Invalid release type */
   1080     NFC_DISCOVERY_RESTART,      /**< Release current target and
   1081                                      restart discovery within same technology*/
   1082     NFC_DISCOVERY_CONTINUE,    /**< Release current target and continue
   1083                                     discovery with next technology in the wheel */
   1084     NFC_SMARTMX_RELEASE    /**< Release SmartMX from wired mode to previous mode
   1085                                 (Virtual or Off) */
   1086 } phNfc_eReleaseType_t;
   1087 
   1088 /** \ingroup  grp_hal_common
   1089 *
   1090 *  \brief Poll configuration structure
   1091 *
   1092 *  The <em> Poll configuration structure </em> holds information about the
   1093 *  enabling the the type of discovery required by the application. This
   1094 *  structure is the input parameter for the discovery call
   1095 *
   1096 *  \note All members of this structure are input parameters [out].
   1097 *
   1098 *  \sa \ref phNfc_eP2PMode_t
   1099 *
   1100 */
   1101 typedef struct phNfc_sADD_Cfg_t
   1102 {
   1103     union
   1104     {
   1105         phNfc_sPollDevInfo_t        PollCfgInfo;        /**<  Enable/Disable Specific
   1106                                                               Reader Functionality and
   1107                                                               Card Emulation */
   1108         unsigned                    PollEnabled;     /** Can be used to set polling 'Off'
   1109                                                       by setting PollEnabled to zero */
   1110 
   1111     } PollDevInfo;
   1112     uint32_t                    Duration;           /**< Duration of virtual or idle
   1113                                                     period in microseconds in the step size
   1114                                                     of 48 microseconds.If duration is set less
   1115                                                     than  48 microseconds then default value is
   1116                                                     used.For more details please refer PN 544
   1117                                                     user manual*/
   1118     uint8_t                     NfcIP_Mode ;      /**< Select the P2P
   1119                                                     speeds using phNfc_eP2PMode_t type.
   1120                                                     This is used to enable NFC-IP Discovery
   1121                                                     The related Reader Type will be implicitly
   1122                                                     selected */
   1123     uint8_t                     NfcIP_Tgt_Disable;   /**< Flag to
   1124                                                    disable the NFCIP1 TARGET */
   1125 } phNfc_sADD_Cfg_t;
   1126 
   1127 /*@}*/
   1128 
   1129 #endif /* PHNFCTYPES */
   1130 
   1131