• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_A.h                                             *
22 * \brief HCI card emulation management routines.                              *
23 *                                                                             *
24 *                                                                             *
25 * Project: NFC-FRI-1.1                                                        *
26 *                                                                             *
27 * $Date: Fri Aug 14 17:01:27 2009 $                                           *
28 * $Author: ing04880 $                                                         *
29 * $Revision: 1.5 $                                                            *
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_A_H
37 #define PHHCINFC_CE_A_H
38 
39 /*@}*/
40 
41 
42 /**
43 *  \name HCI
44 *
45 * File: \ref phHciNfc_CE_A.h
46 *
47 */
48 /*@{*/
49 #define PHHCINFC_CE_A_FILEREVISION "$Revision: 1.5 $" /**< \ingroup grp_file_attributes */
50 #define PHHCINFC_CE_A_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 
63 #define HOST_CE_A_MODE_INDEX                (0x01U)
64 #define HOST_CE_A_UID_REG_INDEX             (0x02U)
65 #define HOST_CE_A_SAK_INDEX                 (0x03U)
66 #define HOST_CE_A_ATQA_INDEX                (0x04U)
67 #define HOST_CE_A_APP_DATA_INDEX            (0x05U)
68 #define HOST_CE_A_FWI_SFGT_INDEX            (0x06U)
69 #define HOST_CE_A_CID_INDEX                 (0x07U)
70 #define HOST_CE_A_CLT_INDEX                 (0x08U)
71 #define HOST_CE_A_DATA_RATE_INDEX           (0x09U)
72 
73 
74 /*
75 ******************** Enumeration and Structure Definition **********************
76 */
77 
78 /* Sequence list */
79 typedef enum phHciNfc_CE_A_Seq{
80     HOST_CE_A_INVALID_SEQ,
81     HOST_CE_A_PIPE_OPEN,
82     HOST_CE_A_SAK_SEQ,
83     HOST_CE_A_ATQA_SEQ,
84     HOST_CE_A_ENABLE_SEQ,
85     HOST_CE_A_DISABLE_SEQ,
86     HOST_CE_A_PIPE_CLOSE,
87     HOST_CE_A_PIPE_DELETE
88 }phHciNfc_CE_A_Seq_t;
89 
90 /* Information structure for the card emulation A Gate */
91 typedef struct phHciNfc_CE_A_Info{
92 
93     phHciNfc_CE_A_Seq_t         current_seq;
94     phHciNfc_CE_A_Seq_t         next_seq;
95     /* Pointer to the card emulation A pipe information */
96     phHciNfc_Pipe_Info_t        *p_pipe_info;
97     uint8_t                     pipe_id;
98 
99 } phHciNfc_CE_A_Info_t;
100 
101 /*
102 *********************** Function Prototype Declaration *************************
103 */
104 
105 /*!
106  * \brief Allocates the resources of card emulation A management gate.
107  *
108  * This function Allocates the resources of the card emulation A management
109  * gate Information Structure.
110  *
111  */
112 extern
113 NFCSTATUS
114 phHciNfc_CE_A_Init_Resources(
115                                 phHciNfc_sContext_t     *psHciContext
116                          );
117 
118 /**
119 * \ingroup grp_hci_nfc
120 *
121 *   The phHciNfc_CE_A_Get_PipeID function gives the pipe id of the card
122 *   emulation A gate
123 *
124 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
125 *                                       context Structure.
126 *   \param[in]  pHwRef                  pHwRef is the Information of
127 *                                       the Device Interface Link
128 *
129 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
130 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
131 *                                       could not be interpreted properly.
132 *
133 */
134 extern
135 NFCSTATUS
136 phHciNfc_CE_A_Get_PipeID(
137                             phHciNfc_sContext_t     *psHciContext,
138                             uint8_t                 *ppipe_id
139                             );
140 
141 /**
142 * \ingroup grp_hci_nfc
143 *
144 *  The phHciNfc_CE_A_Update_PipeInfo function updates the pipe_id of the card
145 *  emulation A gate management Structure.
146 *
147 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
148 *                                      context Structure.
149 *  \param[in]  pipeID                  pipeID of the card emulation A gate
150 *  \param[in]  pPipeInfo               Update the pipe Information of the reader
151 *                                      A gate
152 *
153 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
154 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
155 *                                      could not be interpreted properly.
156 *
157 */
158 
159 extern
160 NFCSTATUS
161 phHciNfc_CE_A_Update_PipeInfo(
162                                   phHciNfc_sContext_t     *psHciContext,
163                                   uint8_t                 pipeID,
164                                   phHciNfc_Pipe_Info_t    *pPipeInfo
165                                   );
166 
167 /**
168 * \ingroup grp_hci_nfc
169 *
170 *  The phHciNfc_CE_A_SendData_Event function sends data to the lo
171 *
172 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
173 *                                      context Structure.
174 *  \param[in]  pHwRef                  pHwRef is the Information of
175 *                                      the Device Interface Link
176 *  \param[in]  pipeID                  pipeID of the card emulation A gate
177 *  \param[in]  pPipeInfo               Update the pipe Information of the reader
178 *                                      A gate
179 *
180 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
181 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
182 *                                      could not be interpreted properly.
183 *
184 */
185 #ifdef CE_A_SEND_EVENT
186 extern
187 NFCSTATUS
188 phHciNfc_CE_A_SendData_Event(
189                              void               *psContext,
190                              void               *pHwRef,
191                              uint8_t            *pEvent,
192                              uint8_t            length
193                        );
194 #endif /* #ifdef CE_A_SEND_EVENT */
195 
196 /**
197 * \ingroup grp_hci_nfc
198 *
199 *  The phHciNfc_CE_A_Mode function sends data to the set the card emulation mode
200 *
201 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
202 *                                      context Structure.
203 *  \param[in]  pHwRef                  pHwRef is the Information of
204 *                                      the Device Interface Link
205 *  \param[in]  enable_type             type to enable
206 *
207 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
208 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
209 *                                      could not be interpreted properly.
210 *
211 */
212 extern
213 NFCSTATUS
214 phHciNfc_CE_A_Mode(
215                             void        *psHciHandle,
216                             void        *pHwRef,
217                             uint8_t     enable_type
218                   );
219 
220 /**
221 * \ingroup grp_hci_nfc
222 *
223 *  The phHciNfc_CE_A_Initialise function opens the CE A and set all the
224 *   required parameters for CE A
225 *
226 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
227 *                                      context Structure.
228 *  \param[in]  pHwRef                  pHwRef is the Information of
229 *                                      the Device Interface Link
230 *
231 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
232 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
233 *                                      could not be interpreted properly.
234 *
235 */
236 extern
237 NFCSTATUS
238 phHciNfc_CE_A_Initialise(
239                         phHciNfc_sContext_t     *psHciContext,
240                         void                    *pHwRef
241                         );
242 
243 /**
244 * \ingroup grp_hci_nfc
245 *
246 *  The phHciNfc_CE_A_Initialise function close the CE A and reset all the
247 *   required parameters to default value of CE A
248 *
249 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
250 *                                      context Structure.
251 *  \param[in]  pHwRef                  pHwRef is the Information of
252 *                                      the Device Interface Link
253 *
254 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
255 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
256 *                                      could not be interpreted properly.
257 *
258 */
259 extern
260 NFCSTATUS
261 phHciNfc_CE_A_Release(
262                         phHciNfc_sContext_t     *psHciContext,
263                         void                    *pHwRef
264                         );
265 
266 
267 /**
268 * \ingroup grp_hci_nfc
269 *
270 *  The phHciNfc_CE_A_Update_Seq function to update CE A sequence depending on the
271 *  specified \ref seq_type
272 *
273 *  \param[in]  psHciContext             psHciContext is the pointer to HCI Layer
274 *                                       context Structure.
275 *  \param[in]  seq_type                 sequence type specified in
276 *                                       \ref phHciNfc_eSeqType_t
277 *
278 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
279 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
280 *                                      could not be interpreted properly.
281 *
282 */
283 extern
284 NFCSTATUS
285 phHciNfc_CE_A_Update_Seq(
286                         phHciNfc_sContext_t     *psHciContext,
287                         phHciNfc_eSeqType_t     seq_type
288                     );
289 #endif /* PHHCINFC_CE_A_H */
290 
291 
292