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 * \file  phNfcStatus.h
19 * \brief NFC Status Values - Function Return Codes
20 *
21 * Project: NFC MW / HAL
22 *
23 * $Date: Wed Apr 29 16:28:21 2009 $
24 * $Author: ing04880 $
25 * $Revision: 1.31 $
26 * $Aliases: NFC_FRI1.1_WK918_R24_1,NFC_FRI1.1_WK920_PREP1,NFC_FRI1.1_WK920_R25_1,NFC_FRI1.1_WK922_PREP1,NFC_FRI1.1_WK922_R26_1,NFC_FRI1.1_WK924_PREP1,NFC_FRI1.1_WK924_R27_1,NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_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 $
27 *
28 */
29
30#ifndef PHNFCSTATUS_H /* */
31#define PHNFCSTATUS_H/* */
32
33#ifndef PH_FRINFC_EXCLUDE_FROM_TESTFW /* */
34
35/**
36 *  \name NFC Status
37 *
38 * File: \ref phNfcStatus.h
39 *
40 *\defgroup grp_retval ERROR Status Codes
41 */
42/*@{*/
43#define PHNFCSTATUS_FILEREVISION "$Revision: 1.31 $" /**< \ingroup grp_file_attributes */
44#define PHNFCSTATUS_FILEALIASES  "$Aliases: NFC_FRI1.1_WK918_R24_1,NFC_FRI1.1_WK920_PREP1,NFC_FRI1.1_WK920_R25_1,NFC_FRI1.1_WK922_PREP1,NFC_FRI1.1_WK922_R26_1,NFC_FRI1.1_WK924_PREP1,NFC_FRI1.1_WK924_R27_1,NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_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 */
45/*@}*/
46
47#endif /* PH_FRINFC_EXCLUDE_FROM_TESTFW */
48
49#include <phNfcTypes.h>
50
51/* Internally required by \ref PHNFCSTVAL. */
52#define PHNFCSTSHL8                          (8U)
53/* Required by \ref PHNFCSTVAL. */
54#define PHNFCSTBLOWER                        ((NFCSTATUS)(0x00FFU))
55
56/**
57 *  \name NFC Status Composition Macro
58 *
59 *  This is the macro which must be used to compose status values.
60 *
61 *  \param[in] phNfcCompID Component ID, as defined in \ref phNfcCompId.h .
62 *  \param[in] phNfcStatus Status values, as defined in \ref phNfcStatus.h .
63 *
64 *  \note The macro is not required for the \ref NFCSTATUS_SUCCESS value. This is the only
65 *        return value to be used directly.
66 *        For all other values it shall be used in assigment and conditional statements e.g.:
67 *        - NFCSTATUS status = PHNFCSTVAL(phNfcCompID, phNfcStatus); ...
68 *        - if (status == PHNFCSTVAL(phNfcCompID, phNfcStatus)) ...
69 *
70 */
71#define PHNFCSTVAL(phNfcCompID, phNfcStatus)                                \
72            ( ((phNfcStatus) == (NFCSTATUS_SUCCESS)) ? (NFCSTATUS_SUCCESS) :  \
73                ( (((NFCSTATUS)(phNfcStatus)) & (PHNFCSTBLOWER)) |          \
74                    (((uint16_t)(phNfcCompID)) << (PHNFCSTSHL8)) ) )     /**< \ingroup grp_retval
75                                                                              Use this macro for return value composition. */
76#define PHNFCSTATUS(phNfcStatus)  ((phNfcStatus) & 0x00FFU)
77#define PHNFCCID(phNfcStatus)  (((phNfcStatus) & 0xFF00U)>>8)
78
79/**
80 *  \name Status Codes
81 *
82 *  Generic Status codes for the NFC components. Combined with the Component ID
83 *  they build the value (status) returned by each
84 *  function. Some Specific E.g.:\n
85 *  <UL>
86 *      <LI> \ref grp_comp_id "Component ID" -  e.g. 0x10, plus                 </LI>
87 *      <LI> status code as listed in this file - e.g. 0x03                     </LI>
88 *  </UL>
89 *  result in a status value of 0x0003.
90 *
91 *  \note The \ref grp_comp_id "Component ID" used for return codes
92     must not be \ref CID_NFC_NONE
93 *        except for the value \ref NFCSTATUS_SUCCESS.
94 */
95/*@{*/
96
97/** \ingroup grp_retval
98    The function indicates successful completion. */
99#define NFCSTATUS_SUCCESS                                       (0x0000)
100
101/** \ingroup grp_retval
102    At least one paramter could not be properly interpreted. */
103#define NFCSTATUS_INVALID_PARAMETER                             (0x0001)
104
105/** \ingroup grp_retval
106    The buffer provided by the caller is too small. */
107#define NFCSTATUS_BUFFER_TOO_SMALL                              (0x0003)
108
109/** \ingroup grp_retval
110    Device specifier/handle value is invalid for the operation. */
111#define NFCSTATUS_INVALID_DEVICE                                (0x0006)
112
113/** \ingroup grp_retval
114    The function executed successfully but could have returned
115    more information than space provided by the caller. */
116#define NFCSTATUS_MORE_INFORMATION                              (0x0008)
117
118/** \ingroup grp_retval
119    No response from the remote device received: Time-out.*/
120#define NFCSTATUS_RF_TIMEOUT                                    (0x0009)
121
122/** \ingroup grp_retval
123    RF Error during data transaction with the remote device.*/
124#define NFCSTATUS_RF_ERROR                                      (0x000A)
125
126/** \ingroup grp_retval
127    Not enough resources (e.g. allocation failed.). */
128#define NFCSTATUS_INSUFFICIENT_RESOURCES                        (0x000C)
129
130/** \ingroup grp_retval
131    A non-blocking function returns this immediately to indicate
132    that an internal operation is in progress. */
133#define NFCSTATUS_PENDING                                       (0x000D)
134
135/** \ingroup grp_retval
136    A board communication error occurred
137    (e.g. configuration went wrong). */
138#define NFCSTATUS_BOARD_COMMUNICATION_ERROR                     (0x000F)
139
140/** \ingroup grp_retval
141    Invalid State of the particular state machine
142 */
143#define NFCSTATUS_INVALID_STATE									(0x0011)
144
145
146/** \ingroup grp_retval
147    This Layer is Not initialised, hence initialisation required.
148 */
149#define NFCSTATUS_NOT_INITIALISED								(0x0031)
150
151
152/** \ingroup grp_retval
153    The Layer is already initialised, hence initialisation repeated.
154 */
155#define NFCSTATUS_ALREADY_INITIALISED							(0x0032)
156
157
158/** \ingroup grp_retval
159    Feature not supported . */
160#define NFCSTATUS_FEATURE_NOT_SUPPORTED                         (0x0033)
161
162/** \ingroup grp_retval
163    The Unregistration command has failed because the user wants to unregister on
164    an element for which he was not registered*/
165#define NFCSTATUS_NOT_REGISTERED								(0x0034)
166
167
168/** \ingroup grp_retval
169    The Registration command has failed because the user wants to register on
170    an element for which he is already registered*/
171#define NFCSTATUS_ALREADY_REGISTERED							(0x0035)
172
173/** \ingroup grp_retval
174    Single Tag with Multiple
175	Protocol support detected. */
176#define NFCSTATUS_MULTIPLE_PROTOCOLS	 	                    (0x0036)
177
178/** \ingroup grp_retval
179    Feature not supported . */
180#define NFCSTATUS_MULTIPLE_TAGS	 	                            (0x0037)
181
182/** \ingroup grp_retval
183    A DESELECT event has occurred. */
184#define NFCSTATUS_DESELECTED                                    (0x0038)
185
186/** \ingroup grp_retval
187    A RELEASE event has occurred. */
188#define NFCSTATUS_RELEASED                                      (0x0039)
189
190/** \ingroup grp_retval
191    The operation is currently not possible or not allowed */
192#define NFCSTATUS_NOT_ALLOWED                                   (0x003A)
193
194/** \ingroup grp_retval
195     The sytem is busy with the previous operation.
196*/
197#define NFCSTATUS_BUSY											(0x006F)
198
199
200/* NDEF Mapping error codes */
201
202/** \ingroup grp_retval
203    The remote device (type) is not valid for this request. */
204#define NFCSTATUS_INVALID_REMOTE_DEVICE                         (0x001D)
205
206/** \ingroup grp_retval
207    Smart tag functionality not supported */
208#define NFCSTATUS_SMART_TAG_FUNC_NOT_SUPPORTED                  (0x0013)
209
210/** \ingroup grp_retval
211    Read operation failed */
212#define NFCSTATUS_READ_FAILED                                   (0x0014)
213
214/** \ingroup grp_retval
215    Write operation failed */
216#define NFCSTATUS_WRITE_FAILED                                  (0x0015)
217
218/** \ingroup grp_retval
219    Non Ndef Compliant */
220#define NFCSTATUS_NO_NDEF_SUPPORT                               (0x0016)
221
222/** \ingroup grp_retval
223    Could not proceed further with the write operation: reached card EOF*/
224#define NFCSTATUS_EOF_NDEF_CONTAINER_REACHED                    (0x001A)
225
226/** \ingroup grp_retval
227    Incorrect number of bytes received from the card*/
228#define NFCSTATUS_INVALID_RECEIVE_LENGTH                        (0x001B)
229
230/** \ingroup grp_retval
231    The data format/composition is not understood/correct. */
232#define NFCSTATUS_INVALID_FORMAT                                (0x001C)
233
234
235/** \ingroup grp_retval
236    There is not sufficient storage available. */
237#define NFCSTATUS_INSUFFICIENT_STORAGE                          (0x001F)
238
239/** \ingroup grp_retval
240    The Ndef Format procedure has failed. */
241#define NFCSTATUS_FORMAT_ERROR                                  (0x0023)
242
243
244/*
245 * Macros Required for FRI Stack
246NFCSTATUS_INVALID_PARAMETER
247NFCSTATUS_CMD_ABORTED
248NFCSTATUS_FORMAT_STATUS
249NFSTATUS_SUCCESS
250NFCSTATUS_INVALID_REMOTE_DEVICE
251NFCSTATUS_PENDING
252NFCSTATUS_EOF_NDEF_CONTAINED_REACHED
253NFCSTATUS_NO_NDEF_SUPPORT
254NFCSTATUS_SMART_TAG_FUNC_NOT_SUPPORTED
255NFCSTATUS_READ_FAILED
256NFCSTATUS_WRITE_FAILED
257NFCSTATUS_INVALID_RECEIVE_LENGTH
258NFCSTATUS_BUFFER_TOO_SMALL
259NFCSTATUS_NODE_NOT_FOUND
260*/
261
262
263/* 0x70 to 0xCF Values are Component Specific Error Values */
264
265
266/** \ingroup grp_retval
267    Max number of Status Codes*/
268#define NFCSTATUS_FAILED										(0x00FF)
269
270/*@}*/
271
272#ifdef RFU_STATUS_CODES  /* To Be Removed later */
273
274/** \ingroup grp_retval
275    The function/command has been aborted. */
276#define NFCSTATUS_CMD_ABORTED                                   (0x0002)
277
278/** \ingroup grp_retval
279 *  Repeated call of the connecting function is not allowed.
280 *   \if hal
281 *     \sa \ref phHalNfc_Connect
282 *   \endif */
283#define NFCSTATUS_ALREADY_CONNECTED                             (0x0004)
284
285/** \ingroup grp_retval
286 *  Calling the polling function is not allowed when remote device
287 *  are allready connected.
288 *   \if hal
289 *     \sa \ref phHalNfc_Poll
290 *   \endif */
291#define NFCSTATUS_MULTI_POLL_NOT_SUPPORTED                      (0x0005)
292
293
294/** \ingroup grp_retval
295    No target found after poll.*/
296#define NFCSTATUS_NO_DEVICE_FOUND                               (0x000A)
297
298/** \ingroup grp_retval
299    No target found after poll.*/
300#define NFCSTATUS_NO_TARGET_FOUND                               (0x000A)
301
302/** \ingroup grp_retval
303    Attempt to disconnect a not connected remote device. */
304#define NFCSTATUS_NO_DEVICE_CONNECTED                           (0x000B)
305
306/** \ingroup grp_retval
307    External RF field detected. */
308#define NFCSTATUS_EXTERNAL_RF_DETECTED                          (0x000E)
309
310/** \ingroup grp_retval
311    Message is not allowed by the state machine
312    (e.g. configuration went wrong). */
313#define NFCSTATUS_MSG_NOT_ALLOWED_BY_FSM                        (0x0010)
314
315/** \ingroup grp_retval
316    No access has been granted. */
317#define NFCSTATUS_ACCESS_DENIED                                 (0x001E)
318
319/** \ingroup grp_retval
320    No registry node matches the specified input data. */
321#define NFCSTATUS_NODE_NOT_FOUND                                (0x0017)
322
323/** \ingroup grp_retval
324    The current module is busy ; one might retry later */
325#define NFCSTATUS_SMX_BAD_STATE									(0x00F0)
326
327
328/** \ingroup grp_retval
329    The Abort mechanism has failed for unexpected reason: user can try again*/
330#define NFCSTATUS_ABORT_FAILED									(0x00F2)
331
332
333/** \ingroup grp_retval
334    The Registration command has failed because the user wants to register as target
335    on a operating mode not supported*/
336#define NFCSTATUS_REG_OPMODE_NOT_SUPPORTED						(0x00F5)
337
338
339#endif
340
341
342#endif /* PHNFCSTATUS_H */
343
344