1 /*
2  * Copyright (C) 2015 The Android Open Source Project
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.: NFCSTATUS status = PHNFCSTVAL(phNfcCompID, phNfcStatus);
43  * ... if (status == PHNFCSTVAL(phNfcCompID, phNfcStatus)) ...
44  */
45 #define PHNFCSTVAL(phNfcCompID, phNfcStatus)               \
46   (((phNfcStatus) == (NFCSTATUS_SUCCESS))                  \
47        ? (NFCSTATUS_SUCCESS)                               \
48        : ((((NFCSTATUS)(phNfcStatus)) & (PHNFCSTBLOWER)) | \
49           (((uint16_t)(phNfcCompID)) << (PHNFCSTSHL8))))
50 
51 /*
52  * PHNFCSTATUS
53  * Get grp_retval from Status Code
54  */
55 #define PHNFCSTATUS(phNfcStatus) ((phNfcStatus)&0x00FFU)
56 #define PHNFCCID(phNfcStatus) (((phNfcStatus)&0xFF00U) >> 8)
57 
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  * This Layer is Not initialized, hence initialization required.
134  */
135 #define NFCSTATUS_NOT_INITIALISED (0x0031)
136 
137 /*
138  * The Layer is already initialized, hence initialization repeated.
139  */
140 #define NFCSTATUS_ALREADY_INITIALISED (0x0032)
141 
142 /*
143  * Feature not supported
144  */
145 #define NFCSTATUS_FEATURE_NOT_SUPPORTED (0x0033)
146 
147 /*  The Unregistration command has failed because the user wants to unregister
148  * on an element for which he was not registered
149  */
150 #define NFCSTATUS_NOT_REGISTERED (0x0034)
151 
152 /* The Registration command has failed because the user wants to register on
153  * an element for which he is already registered
154  */
155 #define NFCSTATUS_ALREADY_REGISTERED (0x0035)
156 
157 /*  Single Tag with Multiple
158     Protocol support detected */
159 #define NFCSTATUS_MULTIPLE_PROTOCOLS (0x0036)
160 
161 /*
162  * Feature not supported
163  */
164 #define NFCSTATUS_MULTIPLE_TAGS (0x0037)
165 
166 /*
167  * A DESELECT event has occurred
168  */
169 #define NFCSTATUS_DESELECTED (0x0038)
170 
171 /*
172  * A RELEASE event has occurred
173  */
174 #define NFCSTATUS_RELEASED (0x0039)
175 
176 /*
177  * The operation is currently not possible or not allowed
178  */
179 #define NFCSTATUS_NOT_ALLOWED (0x003A)
180 
181 /*
182  *  The system is busy with the previous operation.
183  */
184 #define NFCSTATUS_BUSY (0x006F)
185 
186 /* NDEF Mapping error codes */
187 
188 /* The remote device (type) is not valid for this request. */
189 #define NFCSTATUS_INVALID_REMOTE_DEVICE (0x001D)
190 
191 /* Read operation failed */
192 #define NFCSTATUS_READ_FAILED (0x0014)
193 
194 /*
195  * Write operation failed
196  */
197 #define NFCSTATUS_WRITE_FAILED (0x0015)
198 
199 /* Non Ndef Compliant */
200 #define NFCSTATUS_NO_NDEF_SUPPORT (0x0016)
201 
202 /* Could not proceed further with the write operation: reached card EOF*/
203 #define NFCSTATUS_EOF_NDEF_CONTAINER_REACHED (0x001A)
204 
205 /* Incorrect number of bytes received from the card*/
206 #define NFCSTATUS_INVALID_RECEIVE_LENGTH (0x001B)
207 
208 /* The data format/composition is not understood/correct. */
209 #define NFCSTATUS_INVALID_FORMAT (0x001C)
210 
211 /* There is not sufficient storage available. */
212 #define NFCSTATUS_INSUFFICIENT_STORAGE (0x001F)
213 
214 /* The Ndef Format procedure has failed. */
215 #define NFCSTATUS_FORMAT_ERROR (0x0023)
216 
217 /* The NCI Cedit error */
218 #define NFCSTATUS_CREDIT_TIMEOUT (0x0024)
219 
220 /*
221  * Response Time out for the control message(NFCC not responded)
222  */
223 #define NFCSTATUS_RESPONSE_TIMEOUT (0x0025)
224 
225 /*
226  * Device is already connected
227  */
228 #define NFCSTATUS_ALREADY_CONNECTED (0x0026)
229 
230 /*
231  * Device is already connected
232  */
233 #define NFCSTATUS_ANOTHER_DEVICE_CONNECTED (0x0027)
234 
235 /*
236  * Single Target Detected and Activated
237  */
238 #define NFCSTATUS_SINGLE_TAG_ACTIVATED (0x0028)
239 
240 /*
241  * Single Target Detected
242  */
243 #define NFCSTATUS_SINGLE_TAG_DISCOVERED (0x0029)
244 
245 /*
246  * Secure element Detected and Activated
247  */
248 #define NFCSTATUS_SECURE_ELEMENT_ACTIVATED (0x0028)
249 
250 /*
251  * Unknown error Status Codes
252  */
253 #define NFCSTATUS_UNKNOWN_ERROR (0x00FE)
254 
255 /*
256  * Status code for failure
257  */
258 #define NFCSTATUS_FAILED (0x00FF)
259 
260 /*
261  * The function/command has been aborted
262  */
263 #define NFCSTATUS_CMD_ABORTED (0x0002)
264 
265 /*
266  * No target found after poll
267  */
268 #define NFCSTATUS_NO_TARGET_FOUND (0x000A)
269 
270 /* Attempt to disconnect a not connected remote device. */
271 #define NFCSTATUS_NO_DEVICE_CONNECTED (0x000B)
272 
273 /* External RF field detected. */
274 #define NFCSTATUS_EXTERNAL_RF_DETECTED (0x000E)
275 
276 /* Message is not allowed by the state machine
277  * (e.g. configuration went wrong)
278  */
279 #define NFCSTATUS_MSG_NOT_ALLOWED_BY_FSM (0x0010)
280 
281 /*
282  * No access has been granted
283  */
284 #define NFCSTATUS_ACCESS_DENIED (0x001E)
285 
286 /* No registry node matches the specified input data. */
287 #define NFCSTATUS_NODE_NOT_FOUND (0x0017)
288 
289 /* The current module is busy ; one might retry later */
290 #define NFCSTATUS_SMX_BAD_STATE (0x00F0)
291 
292 /* The Abort mechanism has failed for unexpected reason: user can try again*/
293 #define NFCSTATUS_ABORT_FAILED (0x00F2)
294 
295 /* The Registration command has failed because the user wants to register as
296  * target on a operating mode not supported
297  */
298 #define NFCSTATUS_REG_OPMODE_NOT_SUPPORTED (0x00F5)
299 
300 /*
301  * Shutdown in progress, cannot handle the request at this time.
302  */
303 #define NFCSTATUS_SHUTDOWN (0x0091)
304 
305 /*
306  * Target is no more in RF field
307  */
308 #define NFCSTATUS_TARGET_LOST (0x0092)
309 
310 /*
311  * Request is rejected
312  */
313 #define NFCSTATUS_REJECTED (0x0093)
314 
315 /*
316  * Target is not connected
317  */
318 #define NFCSTATUS_TARGET_NOT_CONNECTED (0x0094)
319 
320 /*
321  * Invalid handle for the operation
322  */
323 #define NFCSTATUS_INVALID_HANDLE (0x0095)
324 
325 /*
326  * Process aborted
327  */
328 #define NFCSTATUS_ABORTED (0x0096)
329 
330 /*
331  * Requested command is not supported
332  */
333 #define NFCSTATUS_COMMAND_NOT_SUPPORTED (0x0097)
334 
335 /*
336  * Tag is not NDEF compliant
337  */
338 #define NFCSTATUS_NON_NDEF_COMPLIANT (0x0098)
339 
340 /*
341  * Not enough memory available to complete the requested operation
342  */
343 #define NFCSTATUS_NOT_ENOUGH_MEMORY (0x001F)
344 
345 /*
346  * Indicates incoming connection
347  */
348 #define NFCSTATUS_INCOMING_CONNECTION (0x0045)
349 
350 /*
351  * Indicates Connection was successful
352  */
353 #define NFCSTATUS_CONNECTION_SUCCESS (0x0046)
354 
355 /*
356  * Indicates Connection failed
357  */
358 #define NFCSTATUS_CONNECTION_FAILED (0x0047)
359 
360 #endif /* PHNFCSTATUS_H */
361