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
73typedef enum phHciNfc_eNfcIPType{
74    NFCIP_INVALID                        = 0x00U,
75    NFCIP_INITIATOR,
76    NFCIP_TARGET
77}phHciNfc_eNfcIPType_t;
78
79typedef 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
89typedef 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
100typedef 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
110typedef 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*/
180extern
181NFCSTATUS
182phHciNfc_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*/
202extern
203NFCSTATUS
204phHciNfc_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
227extern
228NFCSTATUS
229phHciNfc_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*/
251extern
252NFCSTATUS
253phHciNfc_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*/
265extern
266NFCSTATUS
267phHciNfc_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*/
287extern
288NFCSTATUS
289phHciNfc_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
312extern
313NFCSTATUS
314phHciNfc_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*/
338extern
339NFCSTATUS
340phHciNfc_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*/
367extern
368NFCSTATUS
369phHciNfc_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*/
394extern
395NFCSTATUS
396phHciNfc_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*/
419extern
420NFCSTATUS
421phHciNfc_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*/
445extern
446NFCSTATUS
447phHciNfc_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*/
473extern
474NFCSTATUS
475phHciNfc_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*/
498extern
499NFCSTATUS
500phHciNfc_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*/
522extern
523NFCSTATUS
524phHciNfc_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*/
550extern
551NFCSTATUS
552phHciNfc_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*/
590extern
591NFCSTATUS
592phHciNfc_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*/
614extern
615NFCSTATUS
616phHciNfc_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*/
637extern
638NFCSTATUS
639phHciNfc_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*/
660extern
661NFCSTATUS
662phHciNfc_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*/
690extern
691NFCSTATUS
692phHciNfc_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