1 /* 2 * Copyright (C) 2010 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 * =========================================================================== * 19 * * 20 * * 21 * \file phHciNfc_RFReader.h * 22 * \brief HCI Header for the RF Reader Management Gate. * 23 * * 24 * * 25 * Project: NFC-FRI-1.1 * 26 * * 27 * $Date: Fri Aug 14 17:01:28 2009 $ * 28 * $Author: ing04880 $ * 29 * $Revision: 1.17 $ * 30 * $Aliases: NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $ * 31 * * 32 * =========================================================================== * 33 */ 34 35 36 #ifndef PHHCINFC_RFREADER_H 37 #define PHHCINFC_RFREADER_H 38 39 /*@}*/ 40 41 42 /** 43 * \name HCI 44 * 45 * File: \ref phHciNfc_RFReader.h 46 * 47 */ 48 /*@{*/ 49 #define PHHCINFC_RF_READER_FILEREVISION "$Revision: 1.17 $" /**< \ingroup grp_file_attributes */ 50 #define PHHCINFC_RF_READER_FILEALIASES "$Aliases: NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_file_attributes */ 51 /*@}*/ 52 53 /* 54 ***************************** Header File Inclusion **************************** 55 */ 56 57 #include <phHciNfc_Generic.h> 58 59 /* 60 ****************************** Macro Definitions ******************************* 61 */ 62 /* Events Requested by the Reader Application Gates */ 63 #define EVT_READER_REQUESTED 0x10U 64 #define EVT_END_OPERATION 0x11U 65 66 /* Events Triggered by the Reader RF Gates */ 67 #define EVT_TARGET_DISCOVERED 0x10U 68 69 /* Commands from ETSI HCI Specification */ 70 #define WR_XCHGDATA 0x10U 71 72 /* NXP Additional Commands apart from ETSI HCI Specification */ 73 /* Command to Check the presence of the card */ 74 #define NXP_WR_PRESCHECK 0x30U 75 76 /* Command to Activate the next card present in the field */ 77 #define NXP_WR_ACTIVATE_NEXT 0x31U 78 79 /* Command to Activate a card with its UID */ 80 #define NXP_WR_ACTIVATE_ID 0x32U 81 82 /* Command to Dispatch the card to UICC */ 83 #define NXP_WR_DISPATCH_TO_UICC 0x33U 84 85 /* NXP Additional Events apart from ETSI HCI Specification */ 86 /* Event to Release the Target and Restart The Wheel */ 87 #define NXP_EVT_RELEASE_TARGET 0x35U 88 89 90 /* Type Macro to Update the RF Reader Information */ 91 92 #define HCI_RDR_ENABLE_TYPE 0x01U 93 94 #define UICC_CARD_ACTIVATION_SUCCESS 0x00U 95 #define UICC_CARD_ACTIVATION_ERROR 0x01U 96 #define UICC_RDR_NOT_INTERESTED 0x02U 97 98 99 /* 100 ******************** Enumeration and Structure Definition ********************** 101 */ 102 103 104 105 /* 106 *********************** Function Prototype Declaration ************************* 107 */ 108 109 /** 110 * \ingroup grp_hci_nfc 111 * 112 * The phHciNfc_ReaderMgmt_Initialise function creates and the opens RF Reader 113 * Management Gate 114 * 115 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 116 * context Structure. 117 * \param[in] pHwRef pHwRef is the Information of 118 * the Device Interface Link . 119 * 120 * \retval NFCSTATUS_PENDING Reader RF Mgmt Gate Initialisation is pending. 121 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 122 * could not be interpreted properly. 123 * \retval Other errors Errors related to the other layers 124 * 125 */ 126 extern 127 NFCSTATUS 128 phHciNfc_ReaderMgmt_Initialise( 129 phHciNfc_sContext_t *psHciContext, 130 void *pHwRef 131 ); 132 /** 133 * \ingroup grp_hci_nfc 134 * 135 * The phHciNfc_ReaderMgmt_Release function closes the opened RF Reader pipes 136 * between the Host Controller Device and the NFC Device. 137 * 138 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 139 * context Structure. 140 * \param[in] pHwRef pHwRef is the Information of 141 * the Device Interface Link . 142 * 143 * \retval NFCSTATUS_PENDING Release of the Reader RF Management gate 144 * resources are pending. 145 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 146 * could not be interpreted properly. 147 * \retval Other errors Errors related to the other layers 148 * 149 */ 150 extern 151 NFCSTATUS 152 phHciNfc_ReaderMgmt_Release( 153 phHciNfc_sContext_t *psHciContext, 154 void *pHwRef 155 ); 156 157 /** 158 * \ingroup grp_hci_nfc 159 * 160 * The phHciNfc_ReaderMgmt_Update_Sequence function Resets/Updates the sequence 161 * to the Specified RF Reader Sequence . 162 * 163 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 164 * context Structure. 165 * \param[in] reader_seq reader_seq is the Type of sequence update 166 * required to reset . 167 * 168 * \retval NFCSTATUS_SUCCESS Updates/Resets the Sequence of the Reader 169 * RF Management gate Successsfully. 170 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 171 * could not be interpreted properly. 172 * \retval 173 * NFCSTATUS_INVALID_HCI_INFORMATION The RF Reader Management information is 174 * invalid. 175 * 176 */ 177 178 extern 179 NFCSTATUS 180 phHciNfc_ReaderMgmt_Update_Sequence( 181 phHciNfc_sContext_t *psHciContext, 182 phHciNfc_eSeqType_t reader_seq 183 ); 184 185 /** 186 * \ingroup grp_hci_nfc 187 * 188 * The phHciNfc_ReaderMgmt_Enable_Discovery function Enables the RF Reader 189 * Gates to discover the corresponding PICC Tags . 190 * 191 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 192 * context Structure. 193 * \param[in] pHwRef pHwRef is the Information of 194 * the Device Interface Link . 195 * 196 * \retval NFCSTATUS_PENDING Enable of the Reader RF Management gate 197 * Discovery is pending. 198 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 199 * could not be interpreted properly. 200 * \retval Other errors Errors related to the other layers 201 * 202 */ 203 204 extern 205 NFCSTATUS 206 phHciNfc_ReaderMgmt_Enable_Discovery( 207 phHciNfc_sContext_t *psHciContext, 208 void *pHwRef 209 ); 210 211 /** 212 * \ingroup grp_hci_nfc 213 * 214 * The phHciNfc_ReaderMgmt_Discovery function Enables/Disables/Restart/Continue 215 * the RF Reader Gates to discover the corresponding PICC Tags . 216 * 217 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 218 * context Structure. 219 * \param[in] pHwRef pHwRef is the Information of 220 * the Device Interface Link . 221 * 222 * \retval NFCSTATUS_PENDING Enable of the Reader RF Management gate 223 * Discovery is pending. 224 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 225 * could not be interpreted properly. 226 * \retval Other errors Errors related to the other layers 227 * 228 */ 229 230 231 /** 232 * \ingroup grp_hci_nfc 233 * 234 * The phHciNfc_ReaderMgmt_Disable_Discovery function Disables the RF Reader 235 * Gates discovery . 236 * 237 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 238 * context Structure. 239 * \param[in] pHwRef pHwRef is the Information of 240 * the Device Interface Link . 241 * 242 * \retval NFCSTATUS_PENDING Disable of the Reader RF Management gate 243 * Discovery is pending. 244 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 245 * could not be interpreted properly. 246 * \retval Other errors Errors related to the other layers 247 * 248 */ 249 250 extern 251 NFCSTATUS 252 phHciNfc_ReaderMgmt_Disable_Discovery( 253 phHciNfc_sContext_t *psHciContext, 254 void *pHwRef 255 ); 256 257 258 /** 259 * \ingroup grp_hci_nfc 260 * 261 * The phHciNfc_ReaderMgmt_Info_Sequence function Gets the information 262 * of the Tag discovered . 263 * 264 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 265 * context Structure. 266 * \param[in] pHwRef pHwRef is the Information of 267 * the Device Interface Link . 268 * 269 * \retval NFCSTATUS_PENDING Reception the information of the discoverd 270 * tag is ongoing. 271 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 272 * could not be interpreted properly. 273 * \retval Other errors Errors related to the other layers 274 * 275 */ 276 277 extern 278 NFCSTATUS 279 phHciNfc_ReaderMgmt_Info_Sequence( 280 phHciNfc_sContext_t *psHciContext, 281 void *pHwRef 282 ); 283 284 /** 285 * \ingroup grp_hci_nfc 286 * 287 * The phHciNfc_ReaderMgmt_Select function connects the 288 * the selected tag by performing certain operation. 289 * 290 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 291 * context Structure. 292 * \param[in] pHwRef pHwRef is the Information of 293 * the Device Interface Link . 294 * \param[in] target_type target_type is the type of the 295 * Target Device to be connected . 296 * 297 * \retval NFCSTATUS_PENDING The selected tag initialisation for 298 * transaction ongoing. 299 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 300 * could not be interpreted properly. 301 * \retval Other errors Errors related to the other layers 302 * 303 */ 304 305 extern 306 NFCSTATUS 307 phHciNfc_ReaderMgmt_Select( 308 phHciNfc_sContext_t *psHciContext, 309 void *pHwRef, 310 phHal_eRemDevType_t target_type 311 ); 312 313 314 /** 315 * \ingroup grp_hci_nfc 316 * 317 * The phHciNfc_ReaderMgmt_Reactivate function reactivates the 318 * the tag by performing reactivate operation. 319 * 320 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 321 * context Structure. 322 * \param[in] pHwRef pHwRef is the Information of 323 * the Device Interface Link . 324 * \param[in] target_type target_type is the type of the 325 * Target Device to be reactivated . 326 * 327 * \retval NFCSTATUS_PENDING The tag reactivation ongoing. 328 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 329 * could not be interpreted properly. 330 * \retval Other errors Errors related to the other layers 331 * 332 */ 333 334 335 extern 336 NFCSTATUS 337 phHciNfc_ReaderMgmt_Reactivate( 338 phHciNfc_sContext_t *psHciContext, 339 void *pHwRef, 340 phHal_eRemDevType_t target_type 341 ); 342 343 /** 344 * \ingroup grp_hci_nfc 345 * 346 * The phHciNfc_ReaderMgmt_Presence_Check function performs presence on ISO 347 * cards. 348 * 349 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 350 * context Structure. 351 * \param[in] pHwRef pHwRef is the Information of 352 * the Device Interface Link . 353 * 354 * \retval NFCSTATUS_PENDING The presence check for tag is ongoing. 355 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 356 * could not be interpreted properly. 357 * \retval Other errors Errors related to the other layers 358 * 359 */ 360 361 extern 362 NFCSTATUS 363 phHciNfc_ReaderMgmt_Presence_Check( 364 phHciNfc_sContext_t *psHciContext, 365 void *pHwRef 366 ); 367 368 /** 369 * \ingroup grp_hci_nfc 370 * 371 * The phHciNfc_ReaderMgmt_Activate_Next function activates and selects next 372 * tag or target present in the RF Field . 373 * 374 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 375 * context Structure. 376 * \param[in] pHwRef pHwRef is the Information of 377 * the Device Interface Link . 378 * 379 * \retval NFCSTATUS_PENDING The activation of the next tag is ongoing. 380 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 381 * could not be interpreted properly. 382 * \retval Other errors Errors related to the other layers 383 * 384 */ 385 386 extern 387 NFCSTATUS 388 phHciNfc_ReaderMgmt_Activate_Next( 389 phHciNfc_sContext_t *psHciContext, 390 void *pHwRef 391 ); 392 393 394 /** 395 * \ingroup grp_hci_nfc 396 * 397 * The phHciNfc_ReaderMgmt_UICC_Dispatch function de-activates the 398 * the selected tag by de-selecting the tag and dispatch the Card to UICC. 399 * 400 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 401 * context Structure. 402 * \param[in] pHwRef pHwRef is the Information of 403 * the Device Interface Link . 404 * \param[in] target_type target_type is the type of the 405 * Target Device to be de-selected . 406 * \param[in] re_poll If True: Start re-polling of the target 407 * after the Target Device is de-activated 408 * or else - continue discovery with next 409 * technology. 410 * 411 * 412 * \retval NFCSTATUS_PENDING Dispatching the selected tag to UICC 413 * is ongoing. 414 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 415 * could not be interpreted properly. 416 * \retval Other errors Errors related to the other layers 417 * 418 */ 419 420 extern 421 NFCSTATUS 422 phHciNfc_ReaderMgmt_UICC_Dispatch( 423 phHciNfc_sContext_t *psHciContext, 424 void *pHwRef, 425 phHal_eRemDevType_t target_type 426 ); 427 428 429 /** 430 * \ingroup grp_hci_nfc 431 * 432 * The phHciNfc_ReaderMgmt_Deselect function de-activates the 433 * the selected tag by de-selecting the tag and restarting the discovery. 434 * 435 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 436 * context Structure. 437 * \param[in] pHwRef pHwRef is the Information of 438 * the Device Interface Link . 439 * \param[in] target_type target_type is the type of the 440 * Target Device to be de-selected . 441 * 442 * \retval NFCSTATUS_PENDING Terminating the operations between selected 443 * tag is ongoing. 444 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 445 * could not be interpreted properly. 446 * \retval Other errors Errors related to the other layers 447 * 448 */ 449 450 extern 451 NFCSTATUS 452 phHciNfc_ReaderMgmt_Deselect( 453 phHciNfc_sContext_t *psHciContext, 454 void *pHwRef, 455 phHal_eRemDevType_t target_type, 456 uint8_t re_poll 457 ); 458 459 /** 460 * \ingroup grp_hci_nfc 461 * 462 * The phHciNfc_ReaderMgmt_Exchange_Data function exchanges the 463 * data to/from the selected tag . 464 * 465 * \param[in] psHciContext psHciContext is the pointer to HCI Layer 466 * context Structure. 467 * \param[in] pHwRef pHwRef is the Information of 468 * the Device Interface Link . 469 * \param[in] p_xchg_info The tag exchange info contains the command type, 470 * addr and data to be sent to the connected 471 * remote target device. 472 * 473 * \retval NFCSTATUS_PENDING Exchange of the data between the selected 474 * tag is ongoing. 475 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 476 * could not be interpreted properly. 477 * \retval Other errors Errors related to the other layers 478 * 479 */ 480 481 extern 482 NFCSTATUS 483 phHciNfc_ReaderMgmt_Exchange_Data( 484 phHciNfc_sContext_t *psHciContext, 485 void *pHwRef, 486 phHciNfc_XchgInfo_t *p_xchg_info 487 ); 488 489 490 491 /** 492 * \ingroup grp_hci_nfc 493 * 494 * The phHciNfc_Send_RFReader_Command function sends the HCI Reader Gate 495 * Specific Commands to the HCI Controller device. 496 * 497 * \param[in] psHciContext psHciContext is the context of 498 * the HCI Layer. 499 * \param[in] pHwRef pHwRef is the Information of 500 * the Device Interface Link . 501 * \param[in] pipe_id The Reader pipe to which the 502 * command is being sent. 503 * \param[in] cmd The HCI Reader Gate specific command 504 * sent to a Reader pipe . 505 * 506 * 507 * \retval NFCSTATUS_PENDING ETSI HCI RF Reader gate Command 508 * to be sent is pending. 509 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 510 * could not be interpreted properly. 511 * \retval Other errors Errors related to the other layers 512 * 513 */ 514 515 extern 516 NFCSTATUS 517 phHciNfc_Send_RFReader_Command ( 518 phHciNfc_sContext_t *psHciContext, 519 void *pHwRef, 520 uint8_t pipe_id, 521 uint8_t cmd 522 ); 523 524 /** 525 * \ingroup grp_hci_nfc 526 * 527 * The phHciNfc_Send_RFReader_Event function sends the HCI Reader Gate 528 * Specific Events to the HCI Controller device. 529 * 530 * \param[in] psHciContext psHciContext is the context of 531 * the HCI Layer. 532 * \param[in] pHwRef pHwRef is the Information of 533 * the Device Interface Link . 534 * \param[in] pipe_id The Reader pipe to which the 535 * command is being sent. 536 * \param[in] event The HCI Reader Gate specific event 537 * sent to a Reader pipe . 538 * 539 * 540 * \retval NFCSTATUS_PENDING ETSI HCI RF Reader gate Event 541 * to be sent is pending. 542 * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters 543 * could not be interpreted properly. 544 * \retval Other errors Errors related to the other layers 545 * 546 */ 547 548 extern 549 NFCSTATUS 550 phHciNfc_Send_RFReader_Event ( 551 phHciNfc_sContext_t *psHciContext, 552 void *pHwRef, 553 uint8_t pipe_id, 554 uint8_t event 555 ); 556 557 #endif /* PHHCINFC_RFREADER_H */ 558 559