/* * Copyright (C) 2010 NXP Semiconductors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /*! * =========================================================================== * * * * * * \file phHciNfc_RFReader.h * * \brief HCI Header for the RF Reader Management Gate. * * * * * * Project: NFC-FRI-1.1 * * * * $Date: Fri Aug 14 17:01:28 2009 $ * * $Author: ing04880 $ * * $Revision: 1.17 $ * * $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 $ * * * * =========================================================================== * */ #ifndef PHHCINFC_RFREADER_H #define PHHCINFC_RFREADER_H /*@}*/ /** * \name HCI * * File: \ref phHciNfc_RFReader.h * */ /*@{*/ #define PHHCINFC_RF_READER_FILEREVISION "$Revision: 1.17 $" /**< \ingroup grp_file_attributes */ #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 */ /*@}*/ /* ***************************** Header File Inclusion **************************** */ #include /* ****************************** Macro Definitions ******************************* */ /* Events Requested by the Reader Application Gates */ #define EVT_READER_REQUESTED 0x10U #define EVT_END_OPERATION 0x11U /* Events Triggered by the Reader RF Gates */ #define EVT_TARGET_DISCOVERED 0x10U /* Commands from ETSI HCI Specification */ #define WR_XCHGDATA 0x10U /* NXP Additional Commands apart from ETSI HCI Specification */ /* Command to Check the presence of the card */ #define NXP_WR_PRESCHECK 0x30U /* Command to Activate the next card present in the field */ #define NXP_WR_ACTIVATE_NEXT 0x31U /* Command to Activate a card with its UID */ #define NXP_WR_ACTIVATE_ID 0x32U /* Command to Dispatch the card to UICC */ #define NXP_WR_DISPATCH_TO_UICC 0x33U /* NXP Additional Events apart from ETSI HCI Specification */ /* Event to Release the Target and Restart The Wheel */ #define NXP_EVT_RELEASE_TARGET 0x35U /* Type Macro to Update the RF Reader Information */ #define HCI_RDR_ENABLE_TYPE 0x01U #define UICC_CARD_ACTIVATION_SUCCESS 0x00U #define UICC_CARD_ACTIVATION_ERROR 0x01U #define UICC_RDR_NOT_INTERESTED 0x02U /* ******************** Enumeration and Structure Definition ********************** */ /* *********************** Function Prototype Declaration ************************* */ /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Initialise function creates and the opens RF Reader * Management Gate * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING Reader RF Mgmt Gate Initialisation is pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Initialise( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Release function closes the opened RF Reader pipes * between the Host Controller Device and the NFC Device. * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING Release of the Reader RF Management gate * resources are pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Release( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Update_Sequence function Resets/Updates the sequence * to the Specified RF Reader Sequence . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] reader_seq reader_seq is the Type of sequence update * required to reset . * * \retval NFCSTATUS_SUCCESS Updates/Resets the Sequence of the Reader * RF Management gate Successsfully. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval * NFCSTATUS_INVALID_HCI_INFORMATION The RF Reader Management information is * invalid. * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Update_Sequence( phHciNfc_sContext_t *psHciContext, phHciNfc_eSeqType_t reader_seq ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Enable_Discovery function Enables the RF Reader * Gates to discover the corresponding PICC Tags . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING Enable of the Reader RF Management gate * Discovery is pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Enable_Discovery( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Discovery function Enables/Disables/Restart/Continue * the RF Reader Gates to discover the corresponding PICC Tags . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING Enable of the Reader RF Management gate * Discovery is pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Disable_Discovery function Disables the RF Reader * Gates discovery . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING Disable of the Reader RF Management gate * Discovery is pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Disable_Discovery( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Info_Sequence function Gets the information * of the Tag discovered . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING Reception the information of the discoverd * tag is ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Info_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Select function connects the * the selected tag by performing certain operation. * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] target_type target_type is the type of the * Target Device to be connected . * * \retval NFCSTATUS_PENDING The selected tag initialisation for * transaction ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Select( phHciNfc_sContext_t *psHciContext, void *pHwRef, phHal_eRemDevType_t target_type ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Reactivate function reactivates the * the tag by performing reactivate operation. * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] target_type target_type is the type of the * Target Device to be reactivated . * * \retval NFCSTATUS_PENDING The tag reactivation ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Reactivate( phHciNfc_sContext_t *psHciContext, void *pHwRef, phHal_eRemDevType_t target_type ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Presence_Check function performs presence on ISO * cards. * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING The presence check for tag is ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Presence_Check( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Activate_Next function activates and selects next * tag or target present in the RF Field . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_PENDING The activation of the next tag is ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Activate_Next( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_UICC_Dispatch function de-activates the * the selected tag by de-selecting the tag and dispatch the Card to UICC. * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] target_type target_type is the type of the * Target Device to be de-selected . * \param[in] re_poll If True: Start re-polling of the target * after the Target Device is de-activated * or else - continue discovery with next * technology. * * * \retval NFCSTATUS_PENDING Dispatching the selected tag to UICC * is ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_UICC_Dispatch( phHciNfc_sContext_t *psHciContext, void *pHwRef, phHal_eRemDevType_t target_type ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Deselect function de-activates the * the selected tag by de-selecting the tag and restarting the discovery. * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] target_type target_type is the type of the * Target Device to be de-selected . * * \retval NFCSTATUS_PENDING Terminating the operations between selected * tag is ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Deselect( phHciNfc_sContext_t *psHciContext, void *pHwRef, phHal_eRemDevType_t target_type, uint8_t re_poll ); /** * \ingroup grp_hci_nfc * * The phHciNfc_ReaderMgmt_Exchange_Data function exchanges the * data to/from the selected tag . * * \param[in] psHciContext psHciContext is the pointer to HCI Layer * context Structure. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] p_xchg_info The tag exchange info contains the command type, * addr and data to be sent to the connected * remote target device. * * \retval NFCSTATUS_PENDING Exchange of the data between the selected * tag is ongoing. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_ReaderMgmt_Exchange_Data( phHciNfc_sContext_t *psHciContext, void *pHwRef, phHciNfc_XchgInfo_t *p_xchg_info ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Send_RFReader_Command function sends the HCI Reader Gate * Specific Commands to the HCI Controller device. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] pipe_id The Reader pipe to which the * command is being sent. * \param[in] cmd The HCI Reader Gate specific command * sent to a Reader pipe . * * * \retval NFCSTATUS_PENDING ETSI HCI RF Reader gate Command * to be sent is pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_Send_RFReader_Command ( phHciNfc_sContext_t *psHciContext, void *pHwRef, uint8_t pipe_id, uint8_t cmd ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Send_RFReader_Event function sends the HCI Reader Gate * Specific Events to the HCI Controller device. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] pipe_id The Reader pipe to which the * command is being sent. * \param[in] event The HCI Reader Gate specific event * sent to a Reader pipe . * * * \retval NFCSTATUS_PENDING ETSI HCI RF Reader gate Event * to be sent is pending. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Errors related to the other layers * */ extern NFCSTATUS phHciNfc_Send_RFReader_Event ( phHciNfc_sContext_t *psHciContext, void *pHwRef, uint8_t pipe_id, uint8_t event ); #endif /* PHHCINFC_RFREADER_H */