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