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_CE_B.h                                             *
22* \brief HCI card emulation management routines.                              *
23*                                                                             *
24*                                                                             *
25* Project: NFC-FRI-1.1                                                        *
26*                                                                             *
27* $Date: Fri Aug 14 17:01:26 2009 $                                           *
28* $Author: ing04880 $                                                         *
29* $Revision: 1.4 $                                                            *
30* $Aliases: 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
36#ifndef PHHCINFC_CE_B_H
37#define PHHCINFC_CE_B_H
38
39/*@}*/
40
41
42/**
43*  \name HCI
44*
45* File: \ref phHciNfc_CE_B.h
46*
47*/
48/*@{*/
49#define PHHCINFC_CE_B_FILEREVISION "$Revision: 1.4 $" /**< \ingroup grp_file_attributes */
50#define PHHCINFC_CE_B_FILEALIASES  "$Aliases: 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 */
51/*@}*/
52
53/*
54***************************** Header File Inclusion ****************************
55*/
56
57#include <phHciNfc_Generic.h>
58
59/*
60****************************** Macro Definitions *******************************
61*/
62#define HOST_CE_B_MODE_INDEX                (0x01U)
63#define HOST_CE_B_PUPI_INDEX                (0x02U)
64#define HOST_CE_B_AFI_INDEX                 (0x03U)
65#define HOST_CE_B_ATQB_INDEX                (0x04U)
66#define HOST_CE_B_HIGH_LAYER_RESP_INDEX     (0x05U)
67#define HOST_CE_B_DATA_RATE_MAX_INDEX       (0x05U)
68
69/*
70******************** Enumeration and Structure Definition **********************
71*/
72
73/* Sequence list */
74typedef enum phHciNfc_CE_B_Seq{
75    HOST_CE_B_INVALID_SEQ,
76    HOST_CE_B_PIPE_OPEN,
77    HOST_CE_B_PUPI_SEQ,
78    HOST_CE_B_ATQB_SEQ,
79    HOST_CE_B_ENABLE_SEQ,
80    HOST_CE_B_DISABLE_SEQ,
81    HOST_CE_B_PIPE_CLOSE,
82    HOST_CE_B_PIPE_DELETE
83}phHciNfc_CE_B_Seq_t;
84
85/* Information structure for the card emulation B gate */
86typedef struct phHciNfc_CE_B_Info{
87    phHciNfc_CE_B_Seq_t         current_seq;
88    phHciNfc_CE_B_Seq_t         next_seq;
89    /* Pointer to the card emulation B pipe information */
90    phHciNfc_Pipe_Info_t        *p_pipe_info;
91    uint8_t                     pipe_id;
92
93} phHciNfc_CE_B_Info_t;
94
95/*
96*********************** Function Prototype Declaration *************************
97*/
98
99/*!
100 * \brief Allocates the resources of card emulation B management gate.
101 *
102 * This function Allocates the resources of the card emulation B management
103 * gate Information Structure.
104 *
105 */
106extern
107NFCSTATUS
108phHciNfc_CE_B_Init_Resources(
109                                phHciNfc_sContext_t     *psHciContext
110                         );
111
112/**
113* \ingroup grp_hci_nfc
114*
115*   The phHciNfc_CE_B_Get_PipeID function gives the pipe id of the card
116*   emulation B gate
117*
118*   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
119*                                       context Structure.
120*   \param[in]  pHwRef                  pHwRef is the Information of
121*                                       the Device Interface Link
122*
123*   \retval NFCSTATUS_SUCCESS           Function execution is successful.
124*   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
125*                                       could not be interpreted properly.
126*
127*/
128extern
129NFCSTATUS
130phHciNfc_CE_B_Get_PipeID(
131                            phHciNfc_sContext_t     *psHciContext,
132                            uint8_t                 *ppipe_id
133                            );
134
135/**
136* \ingroup grp_hci_nfc
137*
138*  The phHciNfc_CE_B_Update_PipeInfo function updates the pipe_id of the card
139*  emulation B gate management Structure.
140*
141*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
142*                                      context Structure.
143*  \param[in]  pipeID                  pipeID of the card emulation A gate
144*  \param[in]  pPipeInfo               Update the pipe Information of the reader
145*                                      A gate
146*
147*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
148*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
149*                                      could not be interpreted properly.
150*
151*/
152
153extern
154NFCSTATUS
155phHciNfc_CE_B_Update_PipeInfo(
156                                  phHciNfc_sContext_t     *psHciContext,
157                                  uint8_t                 pipeID,
158                                  phHciNfc_Pipe_Info_t    *pPipeInfo
159                                  );
160
161/**
162* \ingroup grp_hci_nfc
163*
164*  The phHciNfc_CE_B_SendData_Event function sends data to the PN544
165*
166*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
167*                                      context Structure.
168*  \param[in]  pHwRef                  pHwRef is the Information of
169*                                      the Device Interface Link
170*  \param[in]  pipeID                  pipeID of the card emulation B gate
171*  \param[in]  pPipeInfo               Update the pipe Information of the card
172*                                      emulation B gate
173*
174*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
175*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
176*                                      could not be interpreted properly.
177*
178*/
179#ifdef CE_B_SEND_EVENT
180extern
181NFCSTATUS
182phHciNfc_CE_B_SendData_Event(
183                             void               *psContext,
184                             void               *pHwRef,
185                             uint8_t            *pEvent,
186                             uint8_t            length
187                       );
188#endif /* #ifdef CE_B_SEND_EVENT */
189
190/**
191* \ingroup grp_hci_nfc
192*
193*  The phHciNfc_CE_B_Mode function sends data to the set the card emulation mode
194*
195*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
196*                                      context Structure.
197*  \param[in]  pHwRef                  pHwRef is the Information of
198*                                      the Device Interface Link
199*  \param[in]  enable_type             type to enable
200*
201*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
202*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
203*                                      could not be interpreted properly.
204*
205*/
206NFCSTATUS
207phHciNfc_CE_B_Mode(
208                            void        *psHciHandle,
209                            void        *pHwRef,
210                            uint8_t     enable_type
211                  );
212
213/**
214* \ingroup grp_hci_nfc
215*
216*  The phHciNfc_CE_B_Initialise function opens the CE B and set all the
217*   required parameters for CE B
218*
219*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
220*                                      context Structure.
221*  \param[in]  pHwRef                  pHwRef is the Information of
222*                                      the Device Interface Link
223*
224*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
225*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
226*                                      could not be interpreted properly.
227*
228*/
229extern
230NFCSTATUS
231phHciNfc_CE_B_Initialise(
232                        phHciNfc_sContext_t     *psHciContext,
233                        void                    *pHwRef
234                        );
235
236/**
237* \ingroup grp_hci_nfc
238*
239*  The phHciNfc_CE_B_Initialise function close the CE B and reset all the
240*   required parameters to default value of CE B
241*
242*  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
243*                                      context Structure.
244*  \param[in]  pHwRef                  pHwRef is the Information of
245*                                      the Device Interface Link
246*
247*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
248*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
249*                                      could not be interpreted properly.
250*
251*/
252extern
253NFCSTATUS
254phHciNfc_CE_B_Release(
255                        phHciNfc_sContext_t     *psHciContext,
256                        void                    *pHwRef
257                        );
258
259/**
260* \ingroup grp_hci_nfc
261*
262*  The phHciNfc_CE_B_Update_Seq function to update CE B sequence depending on the
263*  specified \ref seq_type
264*
265*  \param[in]  psHciContext             psHciContext is the pointer to HCI Layer
266*                                       context Structure.
267*  \param[in]  seq_type                 sequence type specified in
268*                                       \ref phHciNfc_eSeqType_t
269*
270*  \retval NFCSTATUS_SUCCESS           Function execution is successful.
271*  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
272*                                      could not be interpreted properly.
273*
274*/
275extern
276NFCSTATUS
277phHciNfc_CE_B_Update_Seq(
278                        phHciNfc_sContext_t     *psHciContext,
279                        phHciNfc_eSeqType_t     seq_type
280                    );
281
282#endif /* PHHCINFC_CE_B_H */
283
284
285