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 */ 126extern 127NFCSTATUS 128phHciNfc_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 */ 150extern 151NFCSTATUS 152phHciNfc_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 178extern 179NFCSTATUS 180phHciNfc_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 204extern 205NFCSTATUS 206phHciNfc_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 250extern 251NFCSTATUS 252phHciNfc_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 277extern 278NFCSTATUS 279phHciNfc_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 305extern 306NFCSTATUS 307phHciNfc_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 335extern 336NFCSTATUS 337phHciNfc_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 361extern 362NFCSTATUS 363phHciNfc_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 386extern 387NFCSTATUS 388phHciNfc_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 420extern 421NFCSTATUS 422phHciNfc_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 450extern 451NFCSTATUS 452phHciNfc_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 481extern 482NFCSTATUS 483phHciNfc_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 515extern 516NFCSTATUS 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 548extern 549NFCSTATUS 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