Home | History | Annotate | Download | only in src
      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 * =========================================================================== *
     19 *                                                                             *
     20 *                                                                             *
     21 * \file  phHciNfc.h                                                           *
     22 * \brief HCI Header for the Generic HCI Management.                           *
     23 *                                                                             *
     24 *                                                                             *
     25 * Project: NFC-FRI-1.1                                                        *
     26 *                                                                             *
     27 * $Date: Mon Apr  5 14:37:06 2010 $                                           *
     28 * $Author: ing04880 $                                                         *
     29 * $Revision: 1.39 $                                                           *
     30 * $Aliases: 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 $
     31 *                                                                             *
     32 * =========================================================================== *
     33 */
     34 
     35 
     36 /*@{*/
     37 
     38 #ifndef PHHCINFC_H
     39 #define PHHCINFC_H
     40 
     41 /*@}*/
     42 /**
     43  *  \name HCI
     44  *
     45  * File: \ref phHciNfc.h
     46  *
     47  */
     48 /*@{*/
     49 #define PH_HCINFC_FILEREVISION "$Revision: 1.39 $" /**< \ingroup grp_file_attributes */
     50 #define PH_HCINFC_FILEALIASES  "$Aliases: 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 */
     51 /*@}*/
     52 
     53 /*
     54 ################################################################################
     55 ***************************** Header File Inclusion ****************************
     56 ################################################################################
     57 */
     58 
     59 #include <phNfcStatus.h>
     60 #include <phNfcInterface.h>
     61 #ifdef ANDROID
     62 #include <string.h>
     63 #endif
     64 
     65 /*
     66 ################################################################################
     67 ****************************** Macro Definitions *******************************
     68 ################################################################################
     69 */
     70 
     71 
     72 /*
     73 ################################################################################
     74 ******************** Enumeration and Structure Definition **********************
     75 ################################################################################
     76 */
     77 
     78 typedef enum phHciNfc_Init
     79 {
     80   HCI_SESSION = 0x00,
     81   HCI_SELF_TEST,
     82   HCI_CUSTOM_INIT
     83 }phHciNfc_Init_t;
     84 
     85 /** \ingroup  grp_hal_hci
     86  *
     87  * \if hal
     88  *  \brief HCI Tag Exchange Information
     89  * \else
     90  *  \brief HCI-Specific
     91  * \endif
     92  *
     93  *  The <em> Tag Exchange Info Structure </em> holds the exchange information to
     94  *  the connected tag .
     95  *
     96  *  \note All members of this structure are in parameters [in].
     97  *
     98  */
     99 
    100 typedef struct phHciNfc_Tag_XchgInfo
    101 {
    102     /** \internal RF Reader Command Type */
    103     uint8_t                     cmd_type;
    104     /** \internal Address Field required for only Mifare
    105      *  Family Proprietary Cards.
    106      *  The Address Size is Valid only upto 255 Blocks limit
    107      *  i:e for Mifare 4K
    108      */
    109     uint8_t                     addr;
    110 }phHciNfc_Tag_XchgInfo_t;
    111 
    112 /** \ingroup  grp_hal_hci
    113  *
    114  * \if hal
    115  *  \brief HCI NFC-IP Exchange Information
    116  * \else
    117  *  \brief HCI-Specific
    118  * \endif
    119  *
    120  *  The <em> NFC-IP Exchange Info Structure </em> holds the exchange information to
    121  *  the connected NFC-IP target .
    122  *
    123  *  \note All members of this structure are in parameters [in].
    124  *
    125  */
    126 
    127 typedef struct phHciNfc_NfcIP_XchgInfo
    128 {
    129     /** \internal NFC-IP DEP Meta Chining Information */
    130     uint8_t                     more_info;
    131 
    132 }phHciNfc_NfcIP_XchgInfo_t;
    133 
    134 /** \ingroup  grp_hal_hci
    135  *
    136  * \if hal
    137  *  \brief HCI Target Exchange Information
    138  * \else
    139  *  \brief HCI-Specific
    140  * \endif
    141  *
    142  *  The <em> Target Exchange Info Structure </em> holds all the exchange information to
    143  *  the connected target .
    144  *
    145  *  \note All members of this structure are in parameters [in].
    146  *
    147  */
    148 
    149 
    150 typedef struct phHciNfc_XchgInfo
    151 {
    152     /** \internal Exchange Data/NFC-IP DEP
    153      *   Exchange Buffer */
    154     uint8_t                     *tx_buffer;
    155     /** \internal Exchange Data/NFC-IP DEP
    156      *   Exchange Buffer Length*/
    157     uint16_t                     tx_length;
    158 
    159     union
    160     {
    161         phHciNfc_Tag_XchgInfo_t   tag_info;
    162         phHciNfc_NfcIP_XchgInfo_t nfc_info;
    163     }params;
    164 
    165 }phHciNfc_XchgInfo_t;
    166 
    167 
    168 
    169 /*
    170 ################################################################################
    171 *********************** Function Prototype Declaration *************************
    172 ################################################################################
    173 */
    174 
    175 /**
    176  * \ingroup grp_hci_nfc
    177  *
    178  *  The phHciNfc_Initialise function initialises the HCI context and all other
    179  *  resources used in the HCI Layer for the corresponding interface link.
    180  *
    181  *  \param[in,out]  psHciHandle         psHciHandle is the handle or the context
    182  *                                      of the HCI Layer.
    183  *  \param[in]  pHwRef                  pHwRef is the Information of
    184  *                                      the Device Interface Link .
    185  *  \param[in]  init_mode               init_mode specifies the kind of the
    186  *                                      Initialisation for the HCI layer .
    187  *  \param[in]  pHwConfig               pHwConfig is the Information required
    188  *                                      to configure the parameters of the
    189  *                                      NFC Device .
    190  *  \param[in]  pHalNotify              Upper layer Notification function
    191  *                                      pointer.
    192  *  \param[in]  psContext               psContext is the context of
    193  *                                      the Upper Layer.
    194  *  \param[in]  psHciLayerCfg           Pointer to the  HCI Layer configuration
    195  *                                      Structure.
    196  *
    197  *  \retval NFCSTATUS_PENDING           Initialisation of HCI Layer is in Progress.
    198  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    199  *                                      could not be interpreted properly.
    200  *  \retval Other errors                Errors related to the other layers
    201  *
    202  */
    203 
    204  extern
    205  NFCSTATUS
    206  phHciNfc_Initialise (
    207                         void                            *psHciHandle,
    208                         void                            *pHwRef,
    209                         phHciNfc_Init_t                 init_mode,
    210                         phHal_sHwConfig_t               *pHwConfig,
    211                         pphNfcIF_Notification_CB_t       pHalNotify,
    212                         void                            *psContext,
    213                         phNfcLayer_sCfg_t               *psHciLayerCfg
    214                      );
    215 
    216 /**
    217  * \ingroup grp_hci_nfc
    218  *
    219  *  The phHciNfc_Release function releases all the resources used in the HCI
    220  *  Layer for the corresponding interface link, described by the HCI handle.
    221  *
    222  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    223  *                                      of the HCI Layer.
    224  *  \param[in]  pHwRef                  pHwRef is the Information of
    225  *                                      the Device Interface Link .
    226  *  \param[in]  pHalReleaseCB           Upper layer release callback function
    227  *                                      pointer .
    228  *  \param[in]  psContext               psContext is the context of
    229  *                                      the Upper Layer.
    230  *
    231  *  \retval NFCSTATUS_PENDING           Releasing of HCI Resources are in Progress.
    232  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    233  *                                      could not be interpreted properly.
    234  *  \retval Other errors                Errors related to the other layers
    235  *
    236  */
    237 
    238  extern
    239  NFCSTATUS
    240  phHciNfc_Release (
    241                     void                            *psHciHandle,
    242                     void                            *pHwRef,
    243                     pphNfcIF_Notification_CB_t      pHalReleaseCB,
    244                     void                            *psContext
    245                   );
    246 
    247 
    248 extern
    249 NFCSTATUS
    250 phHciNfc_Config_Discovery (
    251                     void                            *psHciHandle,
    252                     void                            *pHwRef,
    253                     phHal_sADD_Cfg_t                *pPollConfig
    254                     );
    255 
    256 
    257 /**
    258  * \ingroup grp_hci_nfc
    259  *
    260  *  The phHciNfc_Restart_Discovery function restarts the Polling Wheel.
    261  *
    262  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    263  *                                      of the HCI Layer.
    264  *  \param[in]  pHwRef                  pHwRef is the Information of
    265  *                                      the Device Interface Link .
    266  *  \param[in]  re_poll                 If True: Start re-polling of the target
    267  *                                      after the Target Device is de-activated
    268  *                                      or else - continue discovery with next
    269  *                                      technology.
    270  *  \retval NFCSTATUS_PENDING           The Discovery Wheel retarted.
    271  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    272  *                                      could not be interpreted properly.
    273  *  \retval Other errors                Errors related to the other layers
    274  *
    275  */
    276 
    277  extern
    278  NFCSTATUS
    279  phHciNfc_Restart_Discovery (
    280                         void                            *psHciHandle,
    281                         void                            *pHwRef,
    282                         uint8_t                         repoll
    283                      );
    284 
    285 
    286  /**
    287  * \ingroup grp_hci_nfc
    288  *
    289  *  The phHciNfc_Start_Discovery function Starts the Polling Wheel.
    290  *
    291  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    292  *                                      of the HCI Layer.
    293  *  \param[in]  pHwRef                  pHwRef is the Information of
    294  *                                      the Device Interface Link .
    295  *  \retval NFCSTATUS_PENDING           The Discovery Wheel Started.
    296  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    297  *                                      could not be interpreted properly.
    298  *  \retval Other errors                Errors related to the other layers
    299  *
    300  */
    301 
    302  extern
    303  NFCSTATUS
    304  phHciNfc_Start_Discovery (
    305                         void                            *psHciHandle,
    306                         void                            *pHwRef
    307                      );
    308 
    309 
    310  /**
    311  * \ingroup grp_hci_nfc
    312  *
    313  *  The phHciNfc_Stop_Discovery function Stops the Polling Wheel.
    314  *
    315  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    316  *                                      of the HCI Layer.
    317  *  \param[in]  pHwRef                  pHwRef is the Information of
    318  *                                      the Device Interface Link .
    319  *  \retval NFCSTATUS_PENDING           The Discovery Wheel Stopped.
    320  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    321  *                                      could not be interpreted properly.
    322  *  \retval Other errors                Errors related to the other layers
    323  *
    324  */
    325 
    326  extern
    327  NFCSTATUS
    328  phHciNfc_Stop_Discovery (
    329                         void                            *psHciHandle,
    330                         void                            *pHwRef
    331                      );
    332 
    333 
    334  /**
    335  * \ingroup grp_hci_nfc
    336  *
    337  *  The phHciNfc_Configure function Configures Configures the Polling Wheel to
    338  *  select the kind of Tags to be polled. This also allows to enable/disable
    339  *  the Tag Emulation. This also configures the Secure elements the UICC, WI and
    340  *  Target to Emulate the Tag or Target.
    341  *
    342  *
    343  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    344  *                                      of the HCI Layer.
    345  *  \param[in]  pHwRef                  pHwRef is the Information of
    346  *                                      the Device Interface Link .
    347  *  \param[in]  config_type             config_type specifies the type of the
    348  *                                      Parameter configuration.
    349  *  \param[in]  pConfig                 pConfig is the Information for
    350  *                                      Configuring the Device.
    351  *  \retval NFCSTATUS_PENDING           The Emulation configuration pending.
    352  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    353  *                                      could not be interpreted properly.
    354  *  \retval Other errors                Errors related to the other layers
    355  *
    356  */
    357 
    358  extern
    359  NFCSTATUS
    360  phHciNfc_Configure (
    361                         void                            *psHciHandle,
    362                         void                            *pHwRef,
    363                         phHal_eConfigType_t             config_type,
    364                         phHal_uConfig_t                 *pConfig
    365                      );
    366 
    367  /**
    368  * \ingroup grp_hci_nfc
    369  *
    370  *  The phHciNfc_Switch_SmxMode function Switches the WI(S2C) interface
    371  *  from Wired/Virtual to vice versa.
    372  *
    373  *
    374  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    375  *                                      of the HCI Layer.
    376  *  \param[in]  pHwRef                  pHwRef is the Information of
    377  *                                      the Device Interface Link .
    378  *  \param[in]  smx_mode                smx_mode specifies the type of the switch
    379  *                                      configuration.
    380  *  \param[in]  pPollConfig             pPollConfig is the Information for
    381  *                                      polling the SmartMX Device.
    382  *  \retval NFCSTATUS_PENDING           The SmartMX Mode Switch pending.
    383  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    384  *                                      could not be interpreted properly.
    385  *  \retval Other errors                Errors related to the other layers
    386  *
    387  */
    388 
    389  NFCSTATUS
    390  phHciNfc_Switch_SmxMode (
    391                         void                            *psHciHandle,
    392                         void                            *pHwRef,
    393                         phHal_eSmartMX_Mode_t           smx_mode,
    394                         phHal_sADD_Cfg_t                *pPollConfig
    395                      );
    396 
    397 
    398  /**
    399  * \ingroup grp_hci_nfc
    400  *
    401  *  The phHciNfc_Switch_SwpMode function Switches the SWP Link
    402  *  from On/Off to vice versa.
    403  *
    404  *
    405  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    406  *                                      of the HCI Layer.
    407  *  \param[in]  pHwRef                  pHwRef is the Information of
    408  *                                      the Device Interface Link .
    409  *  \param[in]  swp_mode                swp_mode specifies to switch on/off the
    410  *                                      SWP Link.
    411  *  \retval NFCSTATUS_PENDING           The SWP Mode Switch pending.
    412  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    413  *                                      could not be interpreted properly.
    414  *  \retval Other errors                Errors related to the other layers
    415  *
    416  */
    417 
    418  NFCSTATUS
    419  phHciNfc_Switch_SwpMode (
    420                         void                            *psHciHandle,
    421                         void                            *pHwRef,
    422                         phHal_eSWP_Mode_t               swp_mode /* ,
    423                         void                            *pSwpCfg */
    424                      );
    425 
    426 
    427 
    428 /**
    429  * \ingroup grp_hci_nfc
    430  *
    431  *  The phHciNfc_Connect function selects the discovered target to
    432  *  perform the transactions on it.
    433  *
    434  *
    435  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    436  *                                      of the HCI Layer.
    437  *  \param[in]  pHwRef                  pHwRef is the Information of
    438  *                                      the Device Interface Link .
    439  *  \param[in]  p_remote_dev_info       p_remote_dev_info is the information
    440  *                                      of the Target Device to be connected .
    441  *  \retval NFCSTATUS_PENDING           To select the remote target pending.
    442  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    443  *                                      could not be interpreted properly.
    444  *  \retval Other errors                Errors related to the other layers
    445  *
    446  */
    447 
    448  extern
    449  NFCSTATUS
    450  phHciNfc_Connect (
    451                     void                            *psHciHandle,
    452                     void                            *pHwRef,
    453                     phHal_sRemoteDevInformation_t   *p_remote_dev_info
    454                  );
    455 
    456 
    457 /**
    458  * \ingroup grp_hci_nfc
    459  *
    460  *  The phHciNfc_Reactiavte function reactivates the discovered target to
    461  *  and selects that target perform the transactions on it.
    462  *
    463  *
    464  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    465  *                                      of the HCI Layer.
    466  *  \param[in]  pHwRef                  pHwRef is the Information of
    467  *                                      the Device Interface Link .
    468  *  \param[in]  p_remote_dev_info       p_remote_dev_info is the information
    469  *                                      of the Target Device to be reactivated .
    470  *  \retval NFCSTATUS_PENDING           To reactivate the remote target pending.
    471  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    472  *                                      could not be interpreted properly.
    473  *  \retval Other errors                Errors related to the other layers
    474  *
    475  */
    476 
    477 
    478  extern
    479  NFCSTATUS
    480  phHciNfc_Reactivate (
    481                     void                            *psHciHandle,
    482                     void                            *pHwRef,
    483                     phHal_sRemoteDevInformation_t   *p_target_info
    484                  );
    485 
    486 
    487 /**
    488  * \ingroup grp_hci_nfc
    489  *
    490  *  The phHciNfc_Disconnect function de-selects the selected target and
    491  *  any ongoing transactions .
    492  *
    493  *
    494  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    495  *                                      of the HCI Layer.
    496  *  \param[in]  pHwRef                  pHwRef is the Information of
    497  *                                      the Device Interface Link .
    498  *  \param[in]  re_poll                 If True: Start re-polling of the target
    499  *                                      after the Target Device is de-activated
    500  *                                      or else - continue discovery with next
    501  *                                      technology.
    502  *
    503  *  \retval NFCSTATUS_PENDING           To De-select the remote target pending.
    504  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    505  *                                      could not be interpreted properly.
    506  *  \retval Other errors                Errors related to the other layers
    507  *
    508  */
    509 
    510  extern
    511  NFCSTATUS
    512  phHciNfc_Disconnect (
    513                     void                            *psHciHandle,
    514                     void                            *pHwRef,
    515                     uint8_t                         re_poll
    516                  );
    517 
    518 
    519 /**
    520  * \ingroup grp_hci_nfc
    521  *
    522  *  The phHciNfc_Presence_Check function checks for the presence of the target
    523  *  selected in the vicinity of the Reader's RF Field .
    524  *
    525  *
    526  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    527  *                                      of the HCI Layer.
    528  *  \param[in]  pHwRef                  pHwRef is the Information of
    529  *                                      the Device Interface Link .
    530  *  \retval NFCSTATUS_PENDING           Presence Check of the remote target
    531  *                                      pending.
    532  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    533  *                                      could not be interpreted properly.
    534  *  \retval Other errors                Errors related to the other layers
    535  *
    536  */
    537 
    538 extern
    539 NFCSTATUS
    540 phHciNfc_Presence_Check (
    541                     void                            *psHciHandle,
    542                     void                            *pHwRef
    543                     );
    544 
    545 
    546 /**
    547  * \ingroup grp_hci_nfc
    548  *
    549  *  The phHciNfc_Select_Next_Target function selects and activates the
    550  *  next target present in the the Reader's RF Field .
    551  *
    552  *
    553  *  \param[in]  psHciHandle             psHciHandle is the handle or the
    554  *                                      context of the HCI Layer.
    555  *  \param[in]  pHwRef                  pHwRef is the Information of
    556  *                                      the Device Interface Link .
    557  *  \retval NFCSTATUS_PENDING           selection and activation of the next
    558  *                                      remote target pending.
    559  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    560  *                                      could not be interpreted properly.
    561  *  \retval Other errors                Errors related to the other layers
    562  *
    563  */
    564 
    565 extern
    566 NFCSTATUS
    567 phHciNfc_Select_Next_Target (
    568                     void                            *psHciHandle,
    569                     void                            *pHwRef
    570                     );
    571 
    572 
    573  /**
    574  * \ingroup grp_hci_nfc
    575  *
    576  *  The phHciNfc_Exchange_Data function exchanges the data
    577  *  to/from the selected remote target device.
    578  *
    579  *
    580  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    581  *                                      of the HCI Layer.
    582  *  \param[in]  pHwRef                  pHwRef is the Information of
    583  *                                      the Device Interface Link .
    584  *  \param[in]  p_remote_dev_info       p_remote_dev_info is the information of the
    585  *                                      selected target to which data
    586  *                                      should be sent.
    587  *  \param[in]  p_xchg_info             The exchange info contains the command type,
    588  *                                      addr and data to be sent to the connected
    589  *                                      remote target device.
    590  *  \retval NFCSTATUS_PENDING           Data to remote target pending.
    591  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    592  *                                      could not be interpreted properly.
    593  *  \retval Other errors                Errors related to the other layers
    594  *
    595  */
    596 
    597  extern
    598  NFCSTATUS
    599  phHciNfc_Exchange_Data (
    600                     void                            *psHciHandle,
    601                     void                            *pHwRef,
    602                     phHal_sRemoteDevInformation_t   *p_remote_dev_info,
    603                     phHciNfc_XchgInfo_t             *p_xchg_info
    604                 );
    605 
    606  /**
    607  * \ingroup grp_hci_nfc
    608  *
    609  *  The phHciNfc_Send_Data function Sends the data provided
    610  *  to the appropriate remote target device.
    611  *
    612  *
    613  *  \param[in]  psHciHandle             psHciHandle is the handle or the context
    614  *                                      of the HCI Layer.
    615  *  \param[in]  pHwRef                  pHwRef is the Information of
    616  *                                      the Device Interface Link .
    617  *  \param[in]  p_remote_dev_info       p_remote_dev_info is the information
    618  *                                      of the selected target to which data
    619  *                                      should be sent.
    620  *  \param[in]  p_send_param            The send param contains the
    621  *                                      data to be sent to the
    622  *                                      remote device.
    623  *  \retval NFCSTATUS_PENDING           Data to remote device pending.
    624  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    625  *                                      could not be interpreted properly.
    626  *  \retval Other errors                Errors related to the other layers
    627  *
    628  */
    629 
    630  extern
    631  NFCSTATUS
    632  phHciNfc_Send_Data (
    633                     void                            *psHciHandle,
    634                     void                            *pHwRef,
    635                     phHal_sRemoteDevInformation_t   *p_remote_dev_info,
    636                     phHciNfc_XchgInfo_t             *p_send_param
    637                  );
    638 
    639  /**
    640  * \ingroup grp_hci_nfc
    641  *
    642  *  The phHciNfc_System_Test function performs the System Management Tests
    643  * provided by the NFC Peripheral device.
    644  *
    645  *  \param[in]  psContext               psContext is the pointer to HCI Layer
    646  *                                      context Structure.
    647  *  \param[in]  pHwRef                  pHwRef is the Information of
    648  *                                      the Device Interface Link .
    649  *  \param[in]  test_type               test_type is the type of the Self Test
    650  *                                      that needs to be performed on the device.
    651  *  \param[in]  test_param              test_param is the parameter for the Self Test
    652  *                                      that needs to be performed on the device.
    653  *
    654  *
    655  *  \retval NFCSTATUS_PENDING           System Test on the System Management
    656  *                                      is pending.
    657  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    658  *                                      could not be interpreted properly.
    659  *  \retval Other errors                Errors related to the other layers
    660  *
    661  */
    662 
    663 extern
    664 NFCSTATUS
    665 phHciNfc_System_Test(
    666                     void                            *psContext,
    667                     void                            *pHwRef,
    668                     uint32_t                        test_type,
    669                     phNfc_sData_t                   *test_param
    670                  );
    671 
    672  /**
    673  * \ingroup grp_hci_nfc
    674  *
    675  *  The phHciNfc_System_Configure function performs the System Management
    676  * Configuration with the value provided.
    677  *
    678  *  \param[in]  psContext               psContext is the pointer to HCI Layer
    679  *                                      context Structure.
    680  *  \param[in]  pHwRef                  pHwRef is the Information of
    681  *                                      the Device Interface Link .
    682  *  \param[in]  config_type             config_type is the type of the configuration
    683  *                                      that needs to be performed on the device.
    684  *  \param[in]  config_value            config_value is the value for the configuring
    685  *                                      that needs to be performed on the device.
    686  *
    687  *
    688  *  \retval NFCSTATUS_PENDING           Configuration of the provided information to
    689  *                                      the is pending.
    690  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    691  *                                      could not be interpreted properly.
    692  *  \retval Other errors                Errors related to the other layers
    693  *
    694  */
    695 extern
    696 NFCSTATUS
    697 phHciNfc_System_Configure (
    698                 void                            *psHciHandle,
    699                 void                            *pHwRef,
    700                 uint32_t                        config_type,
    701                 uint8_t                         config_value
    702                 );
    703 
    704  /**
    705  * \ingroup grp_hci_nfc
    706  *
    707  *  The phHciNfc_System_Get_Info function obtains the System Management
    708  * information from the address provided.
    709  *
    710  *  \param[in]  psContext               psContext is the pointer to HCI Layer
    711  *                                      context Structure.
    712  *  \param[in]  pHwRef                  pHwRef is the Information of
    713  *                                      the Device Interface Link .
    714  *  \param[in]  info_type               info_type is the type of the Information
    715  *                                      that needs to be obtained from the device.
    716  *  \param[in,out]  p_val               p_val is the pointer to which the
    717  *                                      information need to be updated.
    718  *
    719  *
    720  *  \retval NFCSTATUS_PENDING           Get information from the NFC Device
    721  *                                      is pending.
    722  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    723  *                                      could not be interpreted properly.
    724  *  \retval Other errors                Errors related to the other layers
    725  *
    726  */
    727 extern
    728 NFCSTATUS
    729 phHciNfc_System_Get_Info(
    730                 void                            *psHciHandle,
    731                 void                            *pHwRef,
    732                 uint32_t                        info_type,
    733                 uint8_t                         *p_val
    734                 );
    735 
    736 extern
    737 NFCSTATUS
    738 phHciNfc_PRBS_Test (
    739                 void                            *psHciHandle,
    740                 void                            *pHwRef,
    741                 uint32_t                        test_type,
    742                 phNfc_sData_t                   *test_param
    743                 );
    744 
    745 #if 0
    746  extern
    747  NFCSTATUS
    748  phHciNfc_Receive_Data (
    749                     void                            *psHciHandle,
    750                     void                            *pHwRef,
    751                     uint8_t                         *p_data,
    752                     uint8_t                         length
    753                  );
    754 
    755 #endif
    756 
    757 
    758 #endif
    759 
    760