blob: e3c714f65d6d34080a8f20fcd362678245a590ee [file] [log] [blame]
Nick Pelly5d9927b2010-09-23 12:47:58 -07001/*
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
96extern
97NFCSTATUS
98phHciNfc_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
122extern
123NFCSTATUS
124phHciNfc_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
143extern
144NFCSTATUS
145phHciNfc_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
163extern
164void
165phHciNfc_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
191extern
192NFCSTATUS
193phHciNfc_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
216extern
217NFCSTATUS
218phHciNfc_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
243extern
244NFCSTATUS
245phHciNfc_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
270extern
271NFCSTATUS
272phHciNfc_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
296extern
297NFCSTATUS
298phHciNfc_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
322extern
323NFCSTATUS
324phHciNfc_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 */
349extern
350void
351phHciNfc_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
378extern
379NFCSTATUS
380phHciNfc_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
406extern
407NFCSTATUS
408phHciNfc_Release_Sequence(
409 phHciNfc_sContext_t *psHciContext,
410 void *pHwRef
411 );
412
413
414/*
415################################################################################
416***************************** Function Definitions *****************************
417################################################################################
418*/
419
420#endif
421