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_NfcIPMgmt.h                                                 *
     22 * \brief HCI NFCIP-1 Management Routines.                                    *
     23 *                                                                             *
     24 *                                                                             *
     25 * Project: NFC-FRI-1.1                                                        *
     26 *                                                                             *
     27 * $Date: Thu Jun 11 18:45:00 2009 $                                           *
     28 * $Author: ing02260 $                                                         *
     29 * $Revision: 1.14 $                                                            *
     30 * $Aliases: NFC_FRI1.1_WK924_R27_1,NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK926_R28_2,NFC_FRI1.1_WK926_R28_3,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_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 $                                                                *
     31 *                                                                             *
     32 * =========================================================================== *
     33 */
     34 
     35 #ifndef PHHCINFC_NFCIPMGMT_H
     36 #define PHHCINFC_NFCIPMGMT_H
     37 
     38 /*@}*/
     39 
     40 
     41 /**
     42 *  \name HCI
     43 *
     44 * File: \ref phHciNfc_NfcIPMgmt.h
     45 *
     46 */
     47 /*@{*/
     48 #define PHHCINFC_NFCIP1MGMT_FILEREVISION "$Revision: 1.14 $" /**< \ingroup grp_file_attributes */
     49 #define PHHCINFC_NFCIP1MGMT_FILEALIASES  "$Aliases: NFC_FRI1.1_WK924_R27_1,NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK926_R28_2,NFC_FRI1.1_WK926_R28_3,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_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 */
     50 /*@}*/
     51 
     52 /*
     53 ***************************** Header File Inclusion ****************************
     54 */
     55 
     56 #include <phHciNfc_Generic.h>
     57 
     58 /*
     59 ****************************** Macro Definitions *******************************
     60 */
     61 
     62 /* Commands exposed to the upper layer */
     63 
     64 
     65 /*
     66 ******************** Enumeration and Structure Definition **********************
     67 */
     68 /* LENGTH definition */
     69 #define NFCIP_ATR_MAX_LENGTH                PHHAL_MAX_ATR_LENGTH
     70 #define NFCIP_NFCID_LENGTH                  PHHAL_MAX_UID_LENGTH
     71 #define NFCIP_MAX_DEP_REQ_HDR_LEN           0x05
     72 
     73 typedef enum phHciNfc_eNfcIPType{
     74     NFCIP_INVALID                        = 0x00U,
     75     NFCIP_INITIATOR,
     76     NFCIP_TARGET
     77 }phHciNfc_eNfcIPType_t;
     78 
     79 typedef enum phHciNfc_NfcIP_Seq{
     80     NFCIP_INVALID_SEQUENCE              = 0x00U,
     81     NFCIP_ATR_INFO,
     82     NFCIP_STATUS,
     83     NFCIP_NFCID3I,
     84     NFCIP_NFCID3T,
     85     NFCIP_PARAM,
     86     NFCIP_END_SEQUENCE
     87 } phHciNfc_NfcIP_Seq_t;
     88 
     89 typedef enum phHciNfc_eP2PSpeed{
     90     NFCIP_SPEED_106                         = 0x00U,
     91     NFCIP_SPEED_212,
     92     NFCIP_SPEED_424,
     93     NFCIP_SPEED_848,
     94     NFCIP_SPEED_1696,
     95     NFCIP_SPEED_3392,
     96     NFCIP_SPEED_6784,
     97     NFCIP_SPEED_RFU
     98 }phHciNfc_eP2PSpeed_t;
     99 
    100 typedef enum phHciNfc_eNfcIPMode{
    101     NFCIP_MODE_PAS_106                         = 0x01U,
    102     NFCIP_MODE_PAS_212                         = 0x02U,
    103     NFCIP_MODE_PAS_424                         = 0x04U,
    104     NFCIP_MODE_ACT_106                         = 0x08U,
    105     NFCIP_MODE_ACT_212                         = 0x10U,
    106     NFCIP_MODE_ACT_424                         = 0x20U,
    107     NFCIP_MODE_ALL                             = 0x3FU
    108 }phHciNfc_eNfcIPMode_t;
    109 
    110 typedef struct phHciNfc_NfcIP_Info
    111 {
    112     phHciNfc_NfcIP_Seq_t            current_seq;
    113     phHciNfc_NfcIP_Seq_t            next_seq;
    114     phHciNfc_eNfcIPType_t           nfcip_type;
    115     phHciNfc_Pipe_Info_t            *p_init_pipe_info;
    116     phHciNfc_Pipe_Info_t            *p_tgt_pipe_info;
    117     phHal_sRemoteDevInformation_t   rem_nfcip_tgt_info;
    118     /* ATR_RES = General bytes length, Max length = 48 bytes for
    119         host = target */
    120     uint8_t                         atr_res_info[NFCIP_ATR_MAX_LENGTH];
    121     uint8_t                         atr_res_length;
    122     /* ATR_REQ = General bytes length, Max length = 48 bytes for
    123         host = initiator */
    124     uint8_t                         atr_req_info[NFCIP_ATR_MAX_LENGTH];
    125     uint8_t                         atr_req_length;
    126     /* Contains the current status of the NFCIP-1 link
    127         when communication has been set.
    128             0x00 -> data is expected from the host
    129             0x01 -> data is expected from the RF side */
    130     uint8_t                         linkstatus;
    131     /* Contains the random NFCID3I conveyed with the ATR_REQ.
    132         always 10 bytes length */
    133     uint8_t                         nfcid3i_length;
    134     uint8_t                         nfcid3i[NFCIP_NFCID_LENGTH];
    135     /* Contains the random NFCID3T conveyed with the ATR_RES.
    136         always 10 bytes length */
    137     uint8_t                         nfcid3t_length;
    138     uint8_t                         nfcid3t[NFCIP_NFCID_LENGTH];
    139     /* Contains the current parameters of the NFCIP-1 link when
    140     communication has been set.
    141         - bits 0 to 2: data rate target to initiator
    142         - bits 3 to 5: data rate initiator to target
    143             0 -> Divisor equal to 1
    144             1 -> Divisor equal to 2
    145             2 -> Divisor equal to 4
    146             3 -> Divisor equal to 8
    147             4 -> Divisor equal to 16
    148             5 -> Divisor equal to 32
    149             6 -> Divisor equal to 64
    150             7 -> RFU
    151             - bits 6 to 7: maximum frame length
    152             0 -> 64 bytes
    153             1 -> 128 bytes
    154             2 -> 192 bytes
    155             3 -> 256 bytes  */
    156     phHciNfc_eP2PSpeed_t            initiator_speed;
    157     phHciNfc_eP2PSpeed_t            target_speed;
    158     uint16_t                        max_frame_len;
    159     /* Supported modes */
    160     uint8_t                         nfcip_mode;
    161     uint8_t                         psl1;
    162     uint8_t                         psl2;
    163     uint8_t                         nad;
    164     uint8_t                         did;
    165     uint8_t                         options;
    166     uint8_t                         activation_mode;
    167 }phHciNfc_NfcIP_Info_t;
    168 
    169 
    170 /*
    171 *********************** Function Prototype Declaration *************************
    172 */
    173 /*!
    174 * \brief Allocates the resources of NFCIP-1 initiator management gate.
    175 *
    176 * This function Allocates the resources of the NFCIP-1 initiator management
    177 * gate Information Structure.
    178 *
    179 */
    180 extern
    181 NFCSTATUS
    182 phHciNfc_Initiator_Init_Resources(
    183                                   phHciNfc_sContext_t     *psHciContext
    184                                   );
    185 
    186 /**
    187 * \ingroup grp_hci_nfc
    188 *
    189 *   The phHciNfc_Initiator_Get_PipeID function gives the pipe id of the NFCIP-1
    190 *   initiator gate
    191 *
    192 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    193 *                                       context Structure.
    194 *   \param[in]  pHwRef                  pHwRef is the Information of
    195 *                                       the Device Interface Link
    196 *
    197 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    198 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    199 *                                       could not be interpreted properly.
    200 *
    201 */
    202 extern
    203 NFCSTATUS
    204 phHciNfc_Initiator_Get_PipeID(
    205                               phHciNfc_sContext_t     *psHciContext,
    206                               uint8_t                 *ppipe_id
    207                               );
    208 
    209 /**
    210 * \ingroup grp_hci_nfc
    211 *
    212 *  The phHciNfc_Initiator_Update_PipeInfo function updates the pipe_id of the NFCIP-1
    213 *  initiator gate management Structure.
    214 *
    215 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    216 *                                      context Structure.
    217 *  \param[in]  pipeID                  pipeID of the NFCIP-1 initiator gate
    218 *  \param[in]  pPipeInfo               Update the pipe Information of the NFCIP-1
    219 *                                      initiator gate
    220 *
    221 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    222 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    223 *                                      could not be interpreted properly.
    224 *
    225 */
    226 
    227 extern
    228 NFCSTATUS
    229 phHciNfc_Initiator_Update_PipeInfo(
    230                                    phHciNfc_sContext_t     *psHciContext,
    231                                    uint8_t                 pipeID,
    232                                    phHciNfc_Pipe_Info_t    *pPipeInfo
    233                                    );
    234 
    235 /**
    236 * \ingroup grp_hci_nfc
    237 *
    238 *   The phHciNfc_Send_Initiator_Command function executes the command sent by the
    239 *   upper layer, depending on the commands defined.
    240 *
    241 *   \param[in]  psContext        psContext is the pointer to HCI Layer
    242 *                                context Structure.
    243 *   \param[in]  pHwRef           pHwRef is the Information of
    244 *                                the Device Interface Link
    245 *
    246 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    247 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    248 *                                       could not be interpreted properly.
    249 *
    250 */
    251 extern
    252 NFCSTATUS
    253 phHciNfc_NfcIP_Presence_Check(
    254                                 phHciNfc_sContext_t   *psContext,
    255                                 void                  *pHwRef
    256                                 );
    257 
    258 /*!
    259 * \brief Allocates the resources of NFCIP-1 target management gate.
    260 *
    261 * This function Allocates the resources of the NFCIP-1 target management
    262 * gate Information Structure.
    263 *
    264 */
    265 extern
    266 NFCSTATUS
    267 phHciNfc_Target_Init_Resources(
    268                                phHciNfc_sContext_t     *psHciContext
    269                                );
    270 
    271 /**
    272 * \ingroup grp_hci_nfc
    273 *
    274 *   The phHciNfc_Target_Get_PipeID function gives the pipe id of the NFCIP-1
    275 *   target gate
    276 *
    277 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    278 *                                       context Structure.
    279 *   \param[in]  pHwRef                  pHwRef is the Information of
    280 *                                       the Device Interface Link
    281 *
    282 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    283 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    284 *                                       could not be interpreted properly.
    285 *
    286 */
    287 extern
    288 NFCSTATUS
    289 phHciNfc_Target_Get_PipeID(
    290                            phHciNfc_sContext_t     *psHciContext,
    291                            uint8_t                 *ppipe_id
    292                            );
    293 
    294 /**
    295 * \ingroup grp_hci_nfc
    296 *
    297 *  The phHciNfc_Target_Update_PipeInfo function updates the pipe_id of the NFCIP-1
    298 *  target gate management Structure.
    299 *
    300 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    301 *                                      context Structure.
    302 *  \param[in]  pipeID                  pipeID of the NFCIP-1 target gate
    303 *  \param[in]  pPipeInfo               Update the pipe Information of the NFCIP-1
    304 *                                      target gate
    305 *
    306 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    307 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    308 *                                      could not be interpreted properly.
    309 *
    310 */
    311 
    312 extern
    313 NFCSTATUS
    314 phHciNfc_Target_Update_PipeInfo(
    315                                 phHciNfc_sContext_t     *psHciContext,
    316                                 uint8_t                 pipeID,
    317                                 phHciNfc_Pipe_Info_t    *pPipeInfo
    318                                 );
    319 
    320 /**
    321 * \ingroup grp_hci_nfc
    322 *
    323 *   The phHciNfc_NfcIP_Info_Sequence function executes the sequence of operations, to
    324 *   get ATR_RES, NFCID3I, NFCID3T, PARAMS  etc.
    325 *
    326 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    327 *                                       context Structure.
    328 *   \param[in]  pHwRef                  pHwRef is the Information of
    329 *                                       the Device Interface Link
    330 *   \param[in]  notify_reqd             if TRUE continue till END_SEQUENCE, else
    331 *                                       stop the sequence
    332 *
    333 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    334 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    335 *                                       could not be interpreted properly.
    336 *
    337 */
    338 extern
    339 NFCSTATUS
    340 phHciNfc_NfcIP_Info_Sequence (
    341                               phHciNfc_sContext_t   *psHciContext,
    342                               void                  *pHwRef
    343 #ifdef NOTIFY_REQD
    344                               ,
    345                               uint8_t               notify_reqd
    346 #endif /* #ifdef NOTIFY_REQD */
    347                               );
    348 
    349 /**
    350 * \ingroup grp_hci_nfc
    351 *
    352 *   The phHciNfc_NfcIP_SetMode function sets the value for NFCIP-1 modes
    353 *
    354 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    355 *                                       context Structure.
    356 *   \param[in]  pHwRef                  pHwRef is the Information of
    357 *                                       the Device Interface Link
    358 *   \param[in]  nfciptype               Specifies initiator or target
    359 *   \param[in]  nfcip_mode              nfcip_mode is the supported mode
    360 *                                       information
    361 *
    362 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    363 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    364 *                                       could not be interpreted properly.
    365 *
    366 */
    367 extern
    368 NFCSTATUS
    369 phHciNfc_NfcIP_SetMode(
    370                        phHciNfc_sContext_t      *psHciContext,
    371                        void                     *pHwRef,
    372                        phHciNfc_eNfcIPType_t    nfciptype,
    373                        uint8_t                  nfcip_mode
    374                        );
    375 
    376 /**
    377 * \ingroup grp_hci_nfc
    378 *
    379 *   The phHciNfc_NfcIP_SetNAD function sets the NAD value
    380 *
    381 *   \param[in]  psHciContext            pContext is the pointer to HCI Layer
    382 *                                       context Structure.
    383 *   \param[in]  pHwRef                  pHwRef is the Information of
    384 *                                       the Device Interface Link
    385 *   \param[in]  nfciptype               Specifies initiator or target
    386 *   \param[in]  nad                     Node address, this will be used as
    387 *                                       logical address of the initiator (b4 to b7)
    388 *
    389 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    390 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    391 *                                       could not be interpreted properly.
    392 *
    393 */
    394 extern
    395 NFCSTATUS
    396 phHciNfc_NfcIP_SetNAD(
    397                       phHciNfc_sContext_t   *psHciContext,
    398                       void                  *pHwRef,
    399                       phHciNfc_eNfcIPType_t nfciptype,
    400                       uint8_t               nad
    401                       );
    402 
    403 /**
    404 * \ingroup grp_hci_nfc
    405 *
    406 *   The phHciNfc_NfcIP_SetDID function sets the DID value for the initiator
    407 *
    408 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    409 *                                       context Structure.
    410 *   \param[in]  pHwRef                  pHwRef is the Information of
    411 *                                       the Device Interface Link
    412 *   \param[in]  did                     Device ID
    413 *
    414 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    415 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    416 *                                       could not be interpreted properly.
    417 *
    418 */
    419 extern
    420 NFCSTATUS
    421 phHciNfc_NfcIP_SetDID(
    422                       phHciNfc_sContext_t   *psHciContext,
    423                       void                  *pHwRef,
    424                       uint8_t               did
    425                       );
    426 
    427 /**
    428 * \ingroup grp_hci_nfc
    429 *
    430 *   The phHciNfc_NfcIP_SetOptions function sets the different options depending on
    431 *   the host type (initiator or target) like PSL, NAD and DID
    432 *
    433 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    434 *                                       context Structure.
    435 *   \param[in]  pHwRef                  pHwRef is the Information of
    436 *                                       the Device Interface Link
    437 *   \param[in]  nfciptype               Specifies initiator or target
    438 *   \param[in]  nfcip_options           specifies enabled options PSL, NAD and DID
    439 *
    440 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    441 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    442 *                                       could not be interpreted properly.
    443 *
    444 */
    445 extern
    446 NFCSTATUS
    447 phHciNfc_NfcIP_SetOptions(
    448                           phHciNfc_sContext_t       *psHciContext,
    449                           void                      *pHwRef,
    450                           phHciNfc_eNfcIPType_t     nfciptype,
    451                           uint8_t                   nfcip_options
    452                           );
    453 
    454 /**
    455 * \ingroup grp_hci_nfc
    456 *
    457 *   The phHciNfc_NfcIP_SetATRInfo function sets the general byte information
    458 *
    459 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    460 *                                       context Structure.
    461 *   \param[in]  pHwRef                  pHwRef is the Information of
    462 *                                       the Device Interface Link
    463 *   \param[in]  nfciptype               Specifies initiator or target
    464 *   \param[in]  atr_info                contains the general bytes of the ATR_REQ
    465 *                                       (initiator) or ATR_RES (target) (max size =
    466 *                                       48 bytes)
    467 *
    468 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    469 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    470 *                                       could not be interpreted properly.
    471 *
    472 */
    473 extern
    474 NFCSTATUS
    475 phHciNfc_NfcIP_SetATRInfo(
    476                           phHciNfc_sContext_t       *psHciContext,
    477                           void                      *pHwRef,
    478                           phHciNfc_eNfcIPType_t     nfciptype,
    479                           phHal_sNfcIPCfg_t         *atr_info
    480                           );
    481 
    482 /**
    483 * \ingroup grp_hci_nfc
    484 *
    485 *   The phHciNfc_NfcIP_SetPSL1 function sets the BRS byte of PSL_REQ
    486 *
    487 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    488 *                                       context Structure.
    489 *   \param[in]  pHwRef                  pHwRef is the Information of
    490 *                                       the Device Interface Link
    491 *   \param[in]  psl1                    specifies the BRS byte of PSL_REQ
    492 *
    493 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    494 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    495 *                                       could not be interpreted properly.
    496 *
    497 */
    498 extern
    499 NFCSTATUS
    500 phHciNfc_NfcIP_SetPSL1(
    501                        phHciNfc_sContext_t   *psHciContext,
    502                        void                  *pHwRef,
    503                        uint8_t               psl1
    504                           );
    505 
    506 /**
    507 * \ingroup grp_hci_nfc
    508 *
    509 *   The phHciNfc_NfcIP_SetPSL2 function sets the BRS byte of PSL_REQ
    510 *
    511 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    512 *                                       context Structure.
    513 *   \param[in]  pHwRef                  pHwRef is the Information of
    514 *                                       the Device Interface Link
    515 *   \param[in]  psl2                    specifies the FSL byte of PSL_REQ
    516 *
    517 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    518 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    519 *                                       could not be interpreted properly.
    520 *
    521 */
    522 extern
    523 NFCSTATUS
    524 phHciNfc_NfcIP_SetPSL2(
    525                        phHciNfc_sContext_t      *psHciContext,
    526                        void                     *pHwRef,
    527                        uint8_t                  psl2
    528                           );
    529 
    530 /**
    531 * \ingroup grp_hci_nfc
    532 *
    533 *   The phHciNfc_NfcIP_GetStatus function receives the present status of the
    534 *   NFCIP-1 link, when communication has been set.
    535 *   If 0x00 is the status, then it means data is expected from the host
    536 *   If 0x01 is the status, then it means data is expected from the RF side
    537 *   Other status values are error
    538 *
    539 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    540 *                                       context Structure.
    541 *   \param[in]  pHwRef                  pHwRef is the Information of
    542 *                                       the Device Interface Link
    543 *   \param[in]  nfciptype               Specifies initiator or target
    544 *
    545 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    546 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    547 *                                       could not be interpreted properly.
    548 *
    549 */
    550 extern
    551 NFCSTATUS
    552 phHciNfc_NfcIP_GetStatus(
    553                             phHciNfc_sContext_t      *psHciContext,
    554                             void                     *pHwRef,
    555                             phHciNfc_eNfcIPType_t    nfciptype
    556                           );
    557 
    558 /**
    559 * \ingroup grp_hci_nfc
    560 *
    561 *   The phHciNfc_NfcIP_GetStatus function receives the current parameters of the
    562 *   NFCIP-1 link, when communication has been set.
    563 *       - bits 0 to 2: data rate target to initiator
    564 *       - bits 3 to 5: data rate initiator to target
    565 *           0 -> Divisor equal to 1
    566 *           1 -> Divisor equal to 2
    567 *           2 -> Divisor equal to 4
    568 *           3 -> Divisor equal to 8
    569 *           4 -> Divisor equal to 16
    570 *           5 -> Divisor equal to 32
    571 *           6 -> Divisor equal to 64
    572 *           7 -> RFU
    573 *       - bits 6 to 7: maximum frame length
    574 *           0 -> 64 bytes
    575 *           1 -> 128 bytes
    576 *           2 -> 192 bytes
    577 *           3 -> 256 bytes
    578 *
    579 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    580 *                                       context Structure.
    581 *   \param[in]  pHwRef                  pHwRef is the Information of
    582 *                                       the Device Interface Link
    583 *   \param[in]  nfciptype               Specifies initiator or target
    584 *
    585 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    586 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    587 *                                       could not be interpreted properly.
    588 *
    589 */
    590 extern
    591 NFCSTATUS
    592 phHciNfc_NfcIP_GetParam(
    593                          phHciNfc_sContext_t    *psHciContext,
    594                          void                   *pHwRef,
    595                          phHciNfc_eNfcIPType_t  nfciptype
    596                          );
    597 
    598 /**
    599 * \ingroup grp_hci_nfc
    600 *
    601 *   The phHciNfc_NfcIP_Send_Data function sends data using the SEND_DATA event
    602 *
    603 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    604 *                                       context Structure.
    605 *   \param[in]  pHwRef                  pHwRef is the Information of
    606 *                                       the Device Interface Link
    607 *   \param[in]  sData                   Data to be sent to the lower layer
    608 *
    609 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    610 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    611 *                                       could not be interpreted properly.
    612 *
    613 */
    614 extern
    615 NFCSTATUS
    616 phHciNfc_NfcIP_Send_Data (
    617                          phHciNfc_sContext_t    *psHciContext,
    618                          void                   *pHwRef,
    619                          phHciNfc_XchgInfo_t    *sData
    620                          );
    621 
    622 /**
    623 * \ingroup grp_hci_nfc
    624 *
    625 *   The phHciNfc_Initiator_Cont_Activate function to activate the NFCIP initiator
    626 *
    627 *   \param[in]  pContext                pContext is the pointer to HCI Layer
    628 *                                       context Structure.
    629 *   \param[in]  pHwRef                  pHwRef is the Information of
    630 *                                       the Device Interface Link
    631 *
    632 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    633 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    634 *                                       could not be interpreted properly.
    635 *
    636 */
    637 extern
    638 NFCSTATUS
    639 phHciNfc_Initiator_Cont_Activate (
    640                                   phHciNfc_sContext_t       *psHciContext,
    641                                   void                      *pHwRef
    642                                   );
    643 
    644 /**
    645 * \ingroup grp_hci_nfc
    646 *
    647 *   The phHciNfc_NfcIP_GetATRInfo function is to get ATR information
    648 *
    649 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    650 *                                       context Structure.
    651 *   \param[in]  pHwRef                  pHwRef is the Information of
    652 *                                       the Device Interface Link
    653 *   \param[in]  nfciptype               Specifies initiator or target
    654 *
    655 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    656 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    657 *                                       could not be interpreted properly.
    658 *
    659 */
    660 extern
    661 NFCSTATUS
    662 phHciNfc_NfcIP_GetATRInfo (
    663                            phHciNfc_sContext_t      *psHciContext,
    664                            void                     *pHwRef,
    665                            phHciNfc_eNfcIPType_t    nfciptype
    666                            );
    667 
    668 /**
    669 * \ingroup grp_hci_nfc
    670 *
    671 *   The phHciNfc_NfcIP_SetMergeSak function is to indicate, if the NFCIP-1
    672 *   target feature must be merged with Type A RF card feature in order to
    673 *   present only one type A target (set of the related bit in SAK to
    674 *   reflect the ISO18092 compliancy).
    675 *       0x00 -> disabled
    676 *       0x01 -> enabled
    677 *       Others values are RFU : error code returned as NFCSTATUS_INVALID_PARAMETER
    678 *
    679 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    680 *                                       context Structure.
    681 *   \param[in]  pHwRef                  pHwRef is the Information of
    682 *                                       the Device Interface Link
    683 *   \param[in]  sak_value               Specifies initiator or target
    684 *
    685 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    686 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    687 *                                       could not be interpreted properly.
    688 *
    689 */
    690 extern
    691 NFCSTATUS
    692 phHciNfc_NfcIP_SetMergeSak(
    693                             phHciNfc_sContext_t     *psHciContext,
    694                             void                    *pHwRef,
    695                             uint8_t                 sak_value
    696                            );
    697 #endif /* #ifndef PHHCINFC_NFCIPMGMT_H */
    698 
    699 
    700