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