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 *                                                                             *
22 * \file  phHciNfc_Sequence.h                                                  *
23 * \brief State Machine Management for the HCI and the Function Sequence       *
24 * for a particular State.                                                     *
25 *                                                                             *
26 *                                                                             *
27 * Project: NFC-FRI-1.1                                                        *
28 *                                                                             *
29 * $Date: Fri Aug 14 17:01:28 2009 $                                           *
30 * $Author: ing04880 $                                                         *
31 * $Revision: 1.12 $                                                            *
32 * $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 $
33 *                                                                             *
34 * =========================================================================== *
35 */
36 
37 /*@{*/
38 #ifndef PHHCINFC_SEQUENCE_H
39 #define PHHCINFC_SEQUENCE_H
40 
41 /*@}*/
42 
43 
44 /**
45  *  \name HCI
46  *
47  * File: \ref phHciNfc_Sequence.h
48  *
49  */
50 
51 /*@{*/
52 #define PHHCINFC_SEQUENCE_FILEREVISION "$Revision: 1.12 $" /**< \ingroup grp_file_attributes */
53 #define PHHCINFC_SEQUENCE_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 */
54 /*@}*/
55 
56 
57 /*
58 ################################################################################
59 ***************************** Header File Inclusion ****************************
60 ################################################################################
61 */
62 
63 #include <phHciNfc_Generic.h>
64 
65 /*
66 ################################################################################
67 ****************************** Macro Definitions *******************************
68 ################################################################################
69 */
70 
71 /*
72 ################################################################################
73 ************************* Function Prototype Declaration ***********************
74 ################################################################################
75 */
76 
77 
78 /**
79  * \ingroup grp_hci_nfc
80  *
81  *  The phHciNfc_FSM_Update function Validates the HCI State to
82  *  the next operation ongoing.
83  *
84  *  \param[in]  psHciContext            psHciContext is the context of
85  *                                      the HCI Layer.
86  *  \param[in]  state                   state is the state to which the
87  *                                      current HCI Layer state is validated.
88  *  \param[in]  validate_type           validate the state by the type of the
89  *                                      validation required.
90  *
91  *  \retval NFCSTATUS_SUCCESS           FSM Validated successfully .
92  *  \retval NFCSTATUS_INVALID_STATE     The supplied state parameter is invalid.
93  *
94  */
95 
96 extern
97 NFCSTATUS
98 phHciNfc_FSM_Validate(
99                         phHciNfc_sContext_t *psHciContext,
100                         phHciNfc_eState_t state,
101                         uint8_t validate_type
102                     );
103 
104 /**
105  * \ingroup grp_hci_nfc
106  *
107  *  The phHciNfc_FSM_Update function Checks and Updates the HCI State to
108  *  the next valid State.
109  *
110  *  \param[in]  psHciContext            psHciContext is the context of
111  *                                      the HCI Layer.
112  *  \param[in]  next_state              next_state is the state to which
113  *                                      we the HCI Layer.
114  *  \param[in]  transition              transiton of the state whether
115  *                                      ongoing or complete .
116  *
117  *  \retval NFCSTATUS_SUCCESS           FSM Updated successfully .
118  *  \retval NFCSTATUS_INVALID_STATE     The supplied state parameter is invalid.
119  *
120  */
121 
122 extern
123 NFCSTATUS
124 phHciNfc_FSM_Update(
125                         phHciNfc_sContext_t *psHciContext,
126                         phHciNfc_eState_t   next_state
127                    );
128 
129 /**
130  * \ingroup grp_hci_nfc
131  *
132  *  The phHciNfc_FSM_Complete function completes the  ongoing state transition
133  *  from the current state to the next state.
134  *
135  *  \param[in]  psHciContext            psHciContext is the context of
136  *                                      the HCI Layer.
137  *
138  *  \retval NFCSTATUS_SUCCESS           FSM Updated successfully .
139  *  \retval NFCSTATUS_INVALID_STATE     The supplied state parameter is invalid.
140  *
141  */
142 
143 extern
144 NFCSTATUS
145 phHciNfc_FSM_Complete(
146                         phHciNfc_sContext_t *psHciContext
147                     );
148 
149 
150 /**
151  * \ingroup grp_hci_nfc
152  *
153  *  The phHciNfc_FSM_Rollback function rolls back to previous valid state
154  *  and abort the ongoing state transition.
155  *
156  *  \param[in]  psHciContext            psHciContext is the context of
157  *                                      the HCI Layer.
158  *
159  *  \retval NONE.
160  *
161  */
162 
163 extern
164 void
165 phHciNfc_FSM_Rollback(
166                         phHciNfc_sContext_t *psHciContext
167                     );
168 
169 
170 
171 /**
172  * \ingroup grp_hci_nfc
173  *
174  *  The phHciNfc_Initialise_Sequence function sequence initialises the
175  *  HCI layer and the remote device by performing the operations required
176  *  setup the reader and discovery functionality.
177  *
178  *  \param[in]  psHciContext            psHciContext is the context of
179  *                                      the HCI Layer.
180  *  \param[in]  pHwRef                  pHwRef is the Information of
181  *                                      the Device Interface Link .
182  *
183  *  \retval NFCSTATUS_SUCCESS           HCI current initialise sequence successful.
184  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
185  *                                      could not be interpreted properly.
186  *  \retval Other errors                Other related errors
187  *
188  */
189 
190 
191 extern
192 NFCSTATUS
193 phHciNfc_Initialise_Sequence(
194                                 phHciNfc_sContext_t     *psHciContext,
195                                 void                    *pHwRef
196                              );
197 
198 /**
199  * \ingroup grp_hci_nfc
200  *
201  *  The phHciNfc_PollLoop_Sequence function sequence starts the
202  *  discovery sequence of device.
203  *
204  *  \param[in]  psHciContext            psHciContext is the context of
205  *                                      the HCI Layer.
206  *  \param[in]  pHwRef                  pHwRef is the Information of
207  *                                      the Device Interface Link .
208  *
209  *  \retval NFCSTATUS_SUCCESS           HCI Discovery Configuration sequence successful.
210  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
211  *                                      could not be interpreted properly.
212  *  \retval Other errors                Other related errors
213  *
214  */
215 
216 extern
217 NFCSTATUS
218 phHciNfc_PollLoop_Sequence(
219                             phHciNfc_sContext_t     *psHciContext,
220                             void                    *pHwRef
221                          );
222 
223 
224 /**
225  * \ingroup grp_hci_nfc
226  *
227  *  The phHciNfc_EmulationCfg_Sequence function sequence configures the
228  *  device for different types of emulation supported.
229  *
230  *  \param[in]  psHciContext            psHciContext is the context of
231  *                                      the HCI Layer.
232  *  \param[in]  pHwRef                  pHwRef is the Information of
233  *                                      the Device Interface Link .
234  *
235  *  \retval NFCSTATUS_SUCCESS           HCI Emulation Configuration
236  *                                      sequence successful.
237  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
238  *                                      could not be interpreted properly.
239  *  \retval Other errors                    Other related errors
240  *
241  */
242 
243 extern
244 NFCSTATUS
245 phHciNfc_EmulationCfg_Sequence(
246                            phHciNfc_sContext_t      *psHciContext,
247                            void                 *pHwRef
248                            );
249 
250 
251 /**
252  * \ingroup grp_hci_nfc
253  *
254  *  The phHciNfc_SmartMx_Mode_Sequence function sequence configures the
255  *  SmartMx device for different modes by enabling and disabling polling.
256  *
257  *  \param[in]  psHciContext            psHciContext is the context of
258  *                                      the HCI Layer.
259  *  \param[in]  pHwRef                  pHwRef is the Information of
260  *                                      the Device Interface Link .
261  *
262  *  \retval NFCSTATUS_SUCCESS           HCI SmartMX Mode Configuration
263  *                                      sequence successful.
264  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
265  *                                      could not be interpreted properly.
266  *  \retval Other errors                 Other related errors
267  *
268  */
269 
270 extern
271 NFCSTATUS
272 phHciNfc_SmartMx_Mode_Sequence(
273                            phHciNfc_sContext_t      *psHciContext,
274                            void                     *pHwRef
275                           );
276 
277 
278 /**
279  * \ingroup grp_hci_nfc
280  *
281  *  The phHciNfc_Connect_Sequence function sequence selects the
282  *  discovered target for performing the transaction.
283  *
284  *  \param[in]  psHciContext            psHciContext is the context of
285  *                                      the HCI Layer.
286  *  \param[in]  pHwRef                  pHwRef is the Information of
287  *                                      the Device Interface Link .
288  *
289  *  \retval NFCSTATUS_SUCCESS           HCI target selection sequence successful.
290  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
291  *                                      could not be interpreted properly.
292  *  \retval Other errors                Other related errors
293  *
294  */
295 
296 extern
297 NFCSTATUS
298 phHciNfc_Connect_Sequence(
299                             phHciNfc_sContext_t     *psHciContext,
300                             void                    *pHwRef
301                          );
302 
303 
304 /**
305  * \ingroup grp_hci_nfc
306  *
307  *  The phHciNfc_Disconnect_Sequence function sequence de-selects the
308  *  selected target .
309  *
310  *  \param[in]  psHciContext            psHciContext is the context of
311  *                                      the HCI Layer.
312  *  \param[in]  pHwRef                  pHwRef is the Information of
313  *                                      the Device Interface Link .
314  *
315  *  \retval NFCSTATUS_SUCCESS           HCI target de-selection sequence successful.
316  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
317  *                                      could not be interpreted properly.
318  *  \retval Other errors                Other related errors
319  *
320  */
321 
322 extern
323 NFCSTATUS
324 phHciNfc_Disconnect_Sequence(
325                             phHciNfc_sContext_t     *psHciContext,
326                             void                    *pHwRef
327                          );
328 
329 /**
330  * \ingroup grp_hci_nfc
331  *
332  *  The phHciNfc_Error_Sequence function sequence notifies the
333  *  error in the HCI sequence to the upper layer .
334  *
335  *  \param[in]  psHciContext            psHciContext is the context of
336  *                                      the HCI Layer.
337  *  \param[in]  pHwRef                  pHwRef is the Information of
338  *                                      the Device Interface Link .
339  *  \param[in]  status                  Notify status information from the
340  *                                      HCI layer to the Upper Layer.
341  *
342  *
343  *  \retval NFCSTATUS_SUCCESS           HCI Error sequence Notification successful.
344  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
345  *                                      could not be interpreted properly.
346  *  \retval Other errors                Other related errors
347  *
348  */
349 extern
350 void
351 phHciNfc_Error_Sequence(
352                                 void            *psContext,
353                                 void            *pHwRef,
354                                 NFCSTATUS       error_status,
355                                 void            *pdata,
356                                 uint8_t         length
357                         );
358 
359 
360 /**
361  * \ingroup grp_hci_nfc
362  *
363  *  The phHciNfc_Resume_Sequence function sequence resumes the
364  *  previous pending sequence of HCI .
365  *
366  *  \param[in]  psHciContext            psHciContext is the context of
367  *                                      the HCI Layer.
368  *  \param[in]  pHwRef                  pHwRef is the Information of
369  *                                      the Device Interface Link .
370  *
371  *  \retval NFCSTATUS_SUCCESS           HCI sequence resume successful.
372  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
373  *                                      could not be interpreted properly.
374  *  \retval Other errors                Other related errors
375  *
376  */
377 
378 extern
379 NFCSTATUS
380 phHciNfc_Resume_Sequence(
381                                 phHciNfc_sContext_t     *psHciContext,
382                                 void                    *pHwRef
383                           );
384 
385 
386 /**
387  * \ingroup grp_hci_nfc
388  *
389  *  The phHciNfc_Release_Sequence function sequence releases the
390  *  HCI layer and the remote device by performing the operations required
391  *  release the reader and discovery functionality.
392  *
393  *  \param[in]  psHciContext            psHciContext is the context of
394  *                                      the HCI Layer.
395  *  \param[in]  pHwRef                  pHwRef is the Information of
396  *                                      the Device Interface Link .
397  *
398  *  \retval NFCSTATUS_SUCCESS           HCI current release sequence successful.
399  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
400  *                                      could not be interpreted properly.
401  *  \retval Other errors                Other related errors
402  *
403  */
404 
405 
406 extern
407 NFCSTATUS
408 phHciNfc_Release_Sequence(
409                             phHciNfc_sContext_t     *psHciContext,
410                             void                    *pHwRef
411                          );
412 
413 
414 /*
415 ################################################################################
416 ***************************** Function Definitions *****************************
417 ################################################################################
418 */
419 
420 #endif
421 
422