blob: 751fbbb34146beeefc2d62e806f11c364c45659c [file] [log] [blame]
/*
* 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 <phHciNfc_Generic.h>
/*
****************************** 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 */