1 /*
2  * Copyright (C) 2010-2014 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  * NFC Status Values - Function Return Codes
19  */
20 
21 #ifndef PHNFCSTATUS_H
22 #define PHNFCSTATUS_H
23 
24 #include <phNfcTypes.h>
25 
26 /* Internally required by PHNFCSTVAL. */
27 #define PHNFCSTSHL8                          (8U)
28 /* Required by PHNFCSTVAL. */
29 #define PHNFCSTBLOWER                        ((NFCSTATUS)(0x00FFU))
30 
31 /*
32  *  NFC Status Composition Macro
33  *
34  *  This is the macro which must be used to compose status values.
35  *
36  *  phNfcCompID Component ID, as defined in phNfcCompId.h .
37  *  phNfcStatus Status values, as defined in phNfcStatus.h .
38  *
39  *  The macro is not required for the NFCSTATUS_SUCCESS value.
40  *  This is the only return value to be used directly.
41  *  For all other values it shall be used in assignment and conditional statements, e.g.:
42  *     NFCSTATUS status = PHNFCSTVAL(phNfcCompID, phNfcStatus); ...
43  *     if (status == PHNFCSTVAL(phNfcCompID, phNfcStatus)) ...
44  */
45 #define PHNFCSTVAL(phNfcCompID, phNfcStatus)                                  \
46             ( ((phNfcStatus) == (NFCSTATUS_SUCCESS)) ? (NFCSTATUS_SUCCESS) :  \
47                 ( (((NFCSTATUS)(phNfcStatus)) & (PHNFCSTBLOWER)) |            \
48                     (((uint16_t)(phNfcCompID)) << (PHNFCSTSHL8)) ) )
49 
50 /*
51  * PHNFCSTATUS
52  * Get grp_retval from Status Code
53  */
54 #define PHNFCSTATUS(phNfcStatus)  ((phNfcStatus) & 0x00FFU)
55 #define PHNFCCID(phNfcStatus)  (((phNfcStatus) & 0xFF00U)>>8)
56 
57 #define PHNFC_I2C_FRAGMENT_SIZE       512
58 /*
59  *  Status Codes
60  *
61  *  Generic Status codes for the NFC components. Combined with the Component ID
62  *  they build the value (status) returned by each function.
63  *  Example:
64  *      grp_comp_id "Component ID" -  e.g. 0x10, plus
65  *      status code as listed in this file - e.g. 0x03
66  *      result in a status value of 0x0003.
67  */
68 
69 /*
70  * The function indicates successful completion
71  */
72 #define NFCSTATUS_SUCCESS                                     (0x0000)
73 
74 /*
75  *  The function indicates successful completion
76  */
77 #define NFCSTATUS_OK                                (NFCSTATUS_SUCCESS)
78 
79 /*
80  * At least one parameter could not be properly interpreted
81  */
82 #define NFCSTATUS_INVALID_PARAMETER                           (0x0001)
83 
84 /*
85  * The buffer provided by the caller is too small
86  */
87 #define NFCSTATUS_BUFFER_TOO_SMALL                            (0x0003)
88 
89 /*
90  * Device specifier/handle value is invalid for the operation
91  */
92 #define NFCSTATUS_INVALID_DEVICE                              (0x0006)
93 
94 /*
95  * The function executed successfully but could have returned
96  * more information than space provided by the caller
97  */
98 #define NFCSTATUS_MORE_INFORMATION                            (0x0008)
99 
100 /*
101  * No response from the remote device received: Time-out
102  */
103 #define NFCSTATUS_RF_TIMEOUT                                  (0x0009)
104 
105 /*
106  * RF Error during data transaction with the remote device
107  */
108 #define NFCSTATUS_RF_ERROR                                    (0x000A)
109 
110 /*
111  * Not enough resources Memory, Timer etc(e.g. allocation failed.)
112  */
113 #define NFCSTATUS_INSUFFICIENT_RESOURCES                      (0x000C)
114 
115 /*
116  * A non-blocking function returns this immediately to indicate
117  * that an internal operation is in progress
118  */
119 #define NFCSTATUS_PENDING                                     (0x000D)
120 
121 /*
122  * A board communication error occurred
123  * (e.g. Configuration went wrong)
124  */
125 #define NFCSTATUS_BOARD_COMMUNICATION_ERROR                   (0x000F)
126 
127 /*
128  * Invalid State of the particular state machine
129  */
130 #define NFCSTATUS_INVALID_STATE                               (0x0011)
131 
132 
133 /*
134  * This Layer is Not initialized, hence initialization required.
135  */
136 #define NFCSTATUS_NOT_INITIALISED                             (0x0031)
137 
138 
139 /*
140  * The Layer is already initialized, hence initialization repeated.
141  */
142 #define NFCSTATUS_ALREADY_INITIALISED                         (0x0032)
143 
144 
145 /*
146  * Feature not supported
147  */
148 #define NFCSTATUS_FEATURE_NOT_SUPPORTED                       (0x0033)
149 
150 /*  The Unregistration command has failed because the user wants to unregister on
151  * an element for which he was not registered
152  */
153 #define NFCSTATUS_NOT_REGISTERED                              (0x0034)
154 
155 
156 /* The Registration command has failed because the user wants to register on
157  * an element for which he is already registered
158  */
159 #define NFCSTATUS_ALREADY_REGISTERED                          (0x0035)
160 
161 /*  Single Tag with Multiple
162     Protocol support detected */
163 #define NFCSTATUS_MULTIPLE_PROTOCOLS                          (0x0036)
164 
165 /*
166  * Feature not supported
167  */
168 #define NFCSTATUS_MULTIPLE_TAGS                               (0x0037)
169 
170 /*
171  * A DESELECT event has occurred
172  */
173 #define NFCSTATUS_DESELECTED                                  (0x0038)
174 
175 /*
176  * A RELEASE event has occurred
177  */
178 #define NFCSTATUS_RELEASED                                    (0x0039)
179 
180 /*
181  * The operation is currently not possible or not allowed
182  */
183 #define NFCSTATUS_NOT_ALLOWED                                 (0x003A)
184 
185 /*
186  * FW version error while performing FW download,
187  * FW major version mismatch (cannot downgrade FW major version) or FW version already upto date
188  * User may be trying to flash Mobile FW on top of Infra FW, which is not allowed
189  * Download appropriate version of FW
190  */
191 #define NFCSTATUS_FW_VERSION_ERROR                            (0x003C)
192 
193 /*
194  *  The system is busy with the previous operation.
195  */
196 #define NFCSTATUS_BUSY                                        (0x006F)
197 
198 
199 /* NDEF Mapping error codes */
200 
201 /* The remote device (type) is not valid for this request. */
202 #define NFCSTATUS_INVALID_REMOTE_DEVICE                       (0x001D)
203 
204 /* Read operation failed */
205 #define NFCSTATUS_READ_FAILED                                 (0x0014)
206 
207 /*
208  * Write operation failed
209  */
210 #define NFCSTATUS_WRITE_FAILED                                (0x0015)
211 
212 /* Non Ndef Compliant */
213 #define NFCSTATUS_NO_NDEF_SUPPORT                             (0x0016)
214 
215 /* Could not proceed further with the write operation: reached card EOF*/
216 #define NFCSTATUS_EOF_NDEF_CONTAINER_REACHED                  (0x001A)
217 
218 /* Incorrect number of bytes received from the card*/
219 #define NFCSTATUS_INVALID_RECEIVE_LENGTH                      (0x001B)
220 
221 /* The data format/composition is not understood/correct. */
222 #define NFCSTATUS_INVALID_FORMAT                              (0x001C)
223 
224 
225 /* There is not sufficient storage available. */
226 #define NFCSTATUS_INSUFFICIENT_STORAGE                        (0x001F)
227 
228 /* The Ndef Format procedure has failed. */
229 #define NFCSTATUS_FORMAT_ERROR                                (0x0023)
230 
231 /* The NCI Cedit error */
232 #define NFCSTATUS_CREDIT_TIMEOUT                              (0x0024)
233 
234 /*
235  * Response Time out for the control message(NFCC not responded)
236  */
237 #define NFCSTATUS_RESPONSE_TIMEOUT                            (0x0025)
238 
239 /*
240  * Device is already connected
241  */
242 #define NFCSTATUS_ALREADY_CONNECTED                           (0x0026)
243 
244 /*
245  * Device is already connected
246  */
247 #define NFCSTATUS_ANOTHER_DEVICE_CONNECTED                    (0x0027)
248 
249 /*
250  * Single Target Detected and Activated
251  */
252 #define NFCSTATUS_SINGLE_TAG_ACTIVATED                        (0x0028)
253 
254 /*
255  * Single Target Detected
256  */
257 #define NFCSTATUS_SINGLE_TAG_DISCOVERED                       (0x0029)
258 
259 /*
260  * Secure element Detected and Activated
261  */
262 #define NFCSTATUS_SECURE_ELEMENT_ACTIVATED                    (0x0028)
263 
264 /*
265  * Unknown error Status Codes
266  */
267 #define NFCSTATUS_UNKNOWN_ERROR                               (0x00FE)
268 
269 /*
270  * Status code for failure
271  */
272 #define NFCSTATUS_FAILED                                      (0x00FF)
273 
274 /*
275  * The function/command has been aborted
276  */
277 #define NFCSTATUS_CMD_ABORTED                                 (0x0002)
278 
279 /*
280  * No target found after poll
281  */
282 #define NFCSTATUS_NO_TARGET_FOUND                             (0x000A)
283 
284 /* Attempt to disconnect a not connected remote device. */
285 #define NFCSTATUS_NO_DEVICE_CONNECTED                         (0x000B)
286 
287 /* External RF field detected. */
288 #define NFCSTATUS_EXTERNAL_RF_DETECTED                        (0x000E)
289 
290 /* Message is not allowed by the state machine
291  * (e.g. configuration went wrong)
292  */
293 #define NFCSTATUS_MSG_NOT_ALLOWED_BY_FSM                      (0x0010)
294 
295 /*
296  * No access has been granted
297  */
298 #define NFCSTATUS_ACCESS_DENIED                               (0x001E)
299 
300 /* No registry node matches the specified input data. */
301 #define NFCSTATUS_NODE_NOT_FOUND                              (0x0017)
302 
303 /* The current module is busy ; one might retry later */
304 #define NFCSTATUS_SMX_BAD_STATE                               (0x00F0)
305 
306 
307 /* The Abort mechanism has failed for unexpected reason: user can try again*/
308 #define NFCSTATUS_ABORT_FAILED                                (0x00F2)
309 
310 
311 /* The Registration command has failed because the user wants to register as target
312  * on a operating mode not supported
313  */
314 #define NFCSTATUS_REG_OPMODE_NOT_SUPPORTED                    (0x00F5)
315 
316 /*
317  * Shutdown in progress, cannot handle the request at this time.
318  */
319 #define NFCSTATUS_SHUTDOWN                  (0x0091)
320 
321 /*
322  * Target is no more in RF field
323  */
324 #define NFCSTATUS_TARGET_LOST               (0x0092)
325 
326 /*
327  * Request is rejected
328  */
329 #define NFCSTATUS_REJECTED                  (0x0093)
330 
331 /*
332  * Target is not connected
333  */
334 #define NFCSTATUS_TARGET_NOT_CONNECTED      (0x0094)
335 
336 /*
337  * Invalid handle for the operation
338  */
339 #define NFCSTATUS_INVALID_HANDLE            (0x0095)
340 
341 /*
342  * Process aborted
343  */
344 #define NFCSTATUS_ABORTED                   (0x0096)
345 
346 /*
347  * Requested command is not supported
348  */
349 #define NFCSTATUS_COMMAND_NOT_SUPPORTED     (0x0097)
350 
351 /*
352  * Tag is not NDEF compilant
353  */
354 #define NFCSTATUS_NON_NDEF_COMPLIANT        (0x0098)
355 
356 /*
357  * Not enough memory available to complete the requested operation
358  */
359 #define NFCSTATUS_NOT_ENOUGH_MEMORY         (0x001F)
360 
361 /*
362  * Indicates incoming connection
363  */
364 #define NFCSTATUS_INCOMING_CONNECTION        (0x0045)
365 
366 /*
367  * Indicates Connection was successful
368  */
369 #define NFCSTATUS_CONNECTION_SUCCESS         (0x0046)
370 
371 /*
372  * Indicates Connection failed
373  */
374 #define NFCSTATUS_CONNECTION_FAILED          (0x0047)
375 
376 #endif /* PHNFCSTATUS_H */
377