373 lines
14 KiB
C
373 lines
14 KiB
C
/*
|
|
* 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_RFReaderA.h *
|
|
* \brief HCI Reader A Management Routines. *
|
|
* *
|
|
* *
|
|
* Project: NFC-FRI-1.1 *
|
|
* *
|
|
* $Date: Fri Aug 14 17:01:27 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_RFREADERA_H
|
|
#define PHHCINFC_RFREADERA_H
|
|
|
|
/*@}*/
|
|
|
|
|
|
/**
|
|
* \name HCI
|
|
*
|
|
* File: \ref phHciNfc_ReaderA.h
|
|
*
|
|
*/
|
|
/*@{*/
|
|
#define PHHCINFC_RFREADERA_FILEREVISION "$Revision: 1.17 $" /**< \ingroup grp_file_attributes */
|
|
#define PHHCINFC_RFREADERA_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 *******************************
|
|
*/
|
|
|
|
/* Commands exposed to the upper layer */
|
|
#define NXP_WRA_CONTINUE_ACTIVATION 0x12U
|
|
#define NXP_MIFARE_RAW 0x20U
|
|
#define NXP_MIFARE_CMD 0x21U
|
|
#define DATA_RATE_MAX_DEFAULT_VALUE 0x00U
|
|
|
|
/* Enable the reader A */
|
|
#define HCI_READER_A_ENABLE 0x01U
|
|
#define HCI_READER_A_INFO_SEQ 0x02U
|
|
|
|
#define RDR_A_TIMEOUT_MIN 0x00U
|
|
#define RDR_A_TIMEOUT_MAX 0x15U
|
|
/*
|
|
******************** Enumeration and Structure Definition **********************
|
|
*/
|
|
typedef enum phHciNfc_ReaderA_Seq{
|
|
RDR_A_DATA_RATE_MAX,
|
|
RDR_A_UID,
|
|
RDR_A_SAK,
|
|
RDR_A_ATQA,
|
|
RDR_A_APP_DATA,
|
|
RDR_A_FWI_SFGT,
|
|
RDR_A_END_SEQUENCE,
|
|
RDR_A_INVALID_SEQ
|
|
} phHciNfc_ReaderA_Seq_t;
|
|
|
|
/* Information structure for the polling loop Gate */
|
|
typedef struct phHciNfc_ReaderA_Info{
|
|
/* Current running Sequence of the reader A Management */
|
|
phHciNfc_ReaderA_Seq_t current_seq;
|
|
/* Next running Sequence of the reader A Management */
|
|
phHciNfc_ReaderA_Seq_t next_seq;
|
|
/* Pointer to the reader A pipe information */
|
|
phHciNfc_Pipe_Info_t *p_pipe_info;
|
|
uint8_t pipe_id;
|
|
/* Flag to say about the multiple targets */
|
|
uint8_t multiple_tgts_found;
|
|
/* Reader A information */
|
|
phHal_sRemoteDevInformation_t reader_a_info;
|
|
/* Enable or disable reader gate */
|
|
uint8_t enable_rdr_a_gate;
|
|
/* UICC re-activation status */
|
|
uint8_t uicc_activation;
|
|
} phHciNfc_ReaderA_Info_t;
|
|
|
|
/*
|
|
*********************** Function Prototype Declaration *************************
|
|
*/
|
|
|
|
/*!
|
|
* \brief Allocates the resources of reader A management gate.
|
|
*
|
|
* This function Allocates the resources of the reader A management
|
|
* gate Information Structure.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Init_Resources(
|
|
phHciNfc_sContext_t *psHciContext
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Get_PipeID function gives the pipe id of the reader A
|
|
* 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_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Get_PipeID(
|
|
phHciNfc_sContext_t *psHciContext,
|
|
uint8_t *ppipe_id
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Sequence function executes the sequence of operations, to
|
|
* get the UID, SAK, ATQA etc.
|
|
*
|
|
* \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_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Info_Sequence (
|
|
void *psHciHandle,
|
|
void *pHwRef
|
|
);
|
|
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_App_Data function is to get the application data information.
|
|
*
|
|
* \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_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_App_Data (
|
|
void *psHciHandle,
|
|
void *pHwRef
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Fwi_Sfgt function is to get the frame waiting time
|
|
* information.
|
|
*
|
|
* \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_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Fwi_Sfgt (
|
|
void *psHciHandle,
|
|
void *pHwRef
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Update_PipeInfo function updates the pipe_id of the reader A
|
|
* gate management Structure.
|
|
*
|
|
* \param[in] psHciContext psHciContext is the pointer to HCI Layer
|
|
* context Structure.
|
|
* \param[in] pipeID pipeID of the reader A gate
|
|
* \param[in] pPipeInfo Update the pipe Information of the reader
|
|
* A gate
|
|
*
|
|
* \retval NFCSTATUS_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Update_PipeInfo(
|
|
phHciNfc_sContext_t *psHciContext,
|
|
uint8_t pipeID,
|
|
phHciNfc_Pipe_Info_t *pPipeInfo
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_Send_ReaderA_Command function executes the command sent by the
|
|
* upper layer, depending on the commands defined.
|
|
*
|
|
* \param[in] psContext psContext is the pointer to HCI Layer
|
|
* context Structure.
|
|
* \param[in] pHwRef pHwRef is the Information of
|
|
* the Device Interface Link
|
|
* \param[in] pipe_id pipeID of the reader A gate
|
|
* \param[in] cmd command that needs to be sent to the device
|
|
* \param[in] length information length sent by the caller
|
|
* \param[in] params information related to the command
|
|
*
|
|
* \retval NFCSTATUS_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_Send_ReaderA_Command(
|
|
phHciNfc_sContext_t *psContext,
|
|
void *pHwRef,
|
|
uint8_t pipe_id,
|
|
uint8_t cmd
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Auto_Activate function updates auto activate register
|
|
*
|
|
* \param[in] psContext psContext is the pointer to HCI Layer
|
|
* context Structure.
|
|
* \param[in] pHwRef pHwRef is the Information of
|
|
* the Device Interface Link
|
|
* \param[in] activate_enable to enable or disable auto activation
|
|
*
|
|
* \retval NFCSTATUS_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Auto_Activate(
|
|
void *psContext,
|
|
void *pHwRef,
|
|
uint8_t activate_enable
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_Send_ReaderA_Command function executes the command sent by the
|
|
* upper layer, depending on the commands defined.
|
|
*
|
|
* \param[in] psHciContext psHciContext is the pointer to HCI Layer
|
|
* context Structure.
|
|
* \param[in] infotype To enable the reader A gate
|
|
* \param[in] rdr_a_info reader A gate info
|
|
*
|
|
* \retval NFCSTATUS_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Update_Info(
|
|
phHciNfc_sContext_t *psHciContext,
|
|
uint8_t infotype,
|
|
void *rdr_a_info
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Cont_Active function executes NXP_WRA_CONTINUE_ACTIVATION
|
|
* command to inform the CLF Controller after having received the event
|
|
* EVT_TARGET_DISCOVERED to continue activation in case activation has
|
|
* been stopped after successful SAK response. The response to this command, sent
|
|
* as soon as the activation is finished, indicates the result of the
|
|
* activation procedure
|
|
*
|
|
* \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] pipeID pipeID of the reader A gate
|
|
*
|
|
* \retval NFCSTATUS_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Cont_Activate (
|
|
phHciNfc_sContext_t *psHciContext,
|
|
void *pHwRef
|
|
);
|
|
|
|
/**
|
|
* \ingroup grp_hci_nfc
|
|
*
|
|
* The phHciNfc_ReaderA_Set_DataRateMax function updates the data rate max value
|
|
*
|
|
* \param[in] psHciContext psHciContext is the pointer to HCI Layer
|
|
* context Structure.
|
|
* \param[in] pipeID pipeID of the reader A gate
|
|
* \param[in] pPipeInfo Update the pipe Information of the reader
|
|
* A gate
|
|
*
|
|
* \retval NFCSTATUS_SUCCESS Function execution is successful.
|
|
* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
|
|
* could not be interpreted properly.
|
|
*
|
|
*/
|
|
extern
|
|
NFCSTATUS
|
|
phHciNfc_ReaderA_Set_DataRateMax(
|
|
void *psContext,
|
|
void *pHwRef,
|
|
uint8_t data_rate_value
|
|
);
|
|
|
|
#endif /* #ifndef PHHCINFC_RFREADERA_H */
|
|
|