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