* Makefile, Scripts: new linter * About: remove ID from IC * Firmware: remove double define for DIVC/DIVR * Scripts: check folder names too. Docker: replace syntax check with make lint. * Reformat Sources and Migrate to new file naming convention * Docker: symlink clang-format-12 to clang-format * Add coding style guide
		
			
				
	
	
		
			924 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			924 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
 | 
						|
/******************************************************************************
 | 
						|
  * \attention
 | 
						|
  *
 | 
						|
  * <h2><center>© COPYRIGHT 2020 STMicroelectronics</center></h2>
 | 
						|
  *
 | 
						|
  * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
 | 
						|
  * You may not use this file except in compliance with the License.
 | 
						|
  * You may obtain a copy of the License at:
 | 
						|
  *
 | 
						|
  *        www.st.com/myliberty
 | 
						|
  *
 | 
						|
  * 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,
 | 
						|
  * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 | 
						|
  * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
 | 
						|
  * See the License for the specific language governing permissions and
 | 
						|
  * limitations under the License.
 | 
						|
  *
 | 
						|
******************************************************************************/
 | 
						|
 | 
						|
/*
 | 
						|
 *      PROJECT:   ST25R391x firmware
 | 
						|
 *      Revision:
 | 
						|
 *      LANGUAGE:  ISO C99
 | 
						|
 */
 | 
						|
 | 
						|
/*! \file rfal_nfcv.h
 | 
						|
 *
 | 
						|
 *  \author Gustavo Patricio
 | 
						|
 *
 | 
						|
 *  \brief Implementation of NFC-V Poller (ISO15693) device
 | 
						|
 *
 | 
						|
 *  The definitions and helpers methods provided by this module 
 | 
						|
 *  are aligned with NFC-V Digital 2.1
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * \addtogroup RFAL
 | 
						|
 * @{
 | 
						|
 *
 | 
						|
 * \addtogroup RFAL-AL
 | 
						|
 * \brief RFAL Abstraction Layer
 | 
						|
 * @{
 | 
						|
 *
 | 
						|
 * \addtogroup NFC-V
 | 
						|
 * \brief RFAL NFC-V Module
 | 
						|
 * @{
 | 
						|
 * 
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef RFAL_NFCV_H
 | 
						|
#define RFAL_NFCV_H
 | 
						|
 | 
						|
/*
 | 
						|
 ******************************************************************************
 | 
						|
 * INCLUDES
 | 
						|
 ******************************************************************************
 | 
						|
 */
 | 
						|
#include "platform.h"
 | 
						|
#include "st_errno.h"
 | 
						|
#include "rfal_rf.h"
 | 
						|
 | 
						|
/*
 | 
						|
 ******************************************************************************
 | 
						|
 * GLOBAL DEFINES
 | 
						|
 ******************************************************************************
 | 
						|
 */
 | 
						|
 | 
						|
#define RFAL_NFCV_UID_LEN 8U /*!< NFC-V UID length                                             */
 | 
						|
#define RFAL_NFCV_MAX_BLOCK_LEN \
 | 
						|
    32U /*!< Max Block size: can be of up to 256 bits  ISO 15693 2000  5  */
 | 
						|
#define RFAL_NFCV_BNO_LEN 1U /*!< NFC-V Block Number length                                    */
 | 
						|
#define RFAL_NFCV_CRC_LEN 2U /*!< NFC-V CRC length                                             */
 | 
						|
#define RFAL_NFCV_MAX_GEN_DATA_LEN \
 | 
						|
    (RFAL_NFCV_MAX_BLOCK_LEN + RFAL_NFCV_BNO_LEN + RFAL_NFCV_UID_LEN) /*!<Max data    */
 | 
						|
#define RFAL_NFCV_BLOCKNUM_LEN \
 | 
						|
    1U /*!< Block Number length on normal commands: 8 bits               */
 | 
						|
#define RFAL_NFCV_BLOCKNUM_EXTENDED_LEN \
 | 
						|
    2U /*!< Block Number length on extended commands: 16 bits            */
 | 
						|
#define RFAL_NFCV_PARAM_SKIP \
 | 
						|
    0U /*!< Skip proprietary Param Request                               */
 | 
						|
 | 
						|
/*! NFC-V RequestFlags   ISO15693 2000 7.3.1 */
 | 
						|
enum {
 | 
						|
    RFAL_NFCV_REQ_FLAG_DEFAULT =
 | 
						|
        0x02U, /*!< Default Request Flags                                        */
 | 
						|
    RFAL_NFCV_REQ_FLAG_SUB_CARRIER =
 | 
						|
        0x01U, /*!< Sub Carrier flag                                             */
 | 
						|
    RFAL_NFCV_REQ_FLAG_DATA_RATE =
 | 
						|
        0x02U, /*!< Data Rate flag                                               */
 | 
						|
    RFAL_NFCV_REQ_FLAG_INVENTORY =
 | 
						|
        0x04U, /*!< Inventory flag                                               */
 | 
						|
    RFAL_NFCV_REQ_FLAG_PROTOCOL_EXT =
 | 
						|
        0x08U, /*!< Protocol Extension flag                                      */
 | 
						|
    RFAL_NFCV_REQ_FLAG_SELECT =
 | 
						|
        0x10U, /*!< Select flag                                                  */
 | 
						|
    RFAL_NFCV_REQ_FLAG_ADDRESS =
 | 
						|
        0x20U, /*!< Address flag                                                 */
 | 
						|
    RFAL_NFCV_REQ_FLAG_OPTION =
 | 
						|
        0x40U, /*!< Option flag                                                  */
 | 
						|
    RFAL_NFCV_REQ_FLAG_RFU =
 | 
						|
        0x80U, /*!< RFU flag                                                     */
 | 
						|
    RFAL_NFCV_REQ_FLAG_AFI =
 | 
						|
        0x10U, /*!< AFI flag                                                     */
 | 
						|
    RFAL_NFCV_REQ_FLAG_NB_SLOTS =
 | 
						|
        0x20U, /*!< Number of Slots flag                                         */
 | 
						|
};
 | 
						|
 | 
						|
/*! NFC-V Response Flags   ISO15693 2000 7.4.1 */
 | 
						|
enum {
 | 
						|
    RFAL_NFCV_RES_FLAG_ERROR =
 | 
						|
        0x01U, /*!< Error flag                                                   */
 | 
						|
    RFAL_NFCV_RES_FLAG_RFU1 =
 | 
						|
        0x02U, /*!< RFU flag                                                     */
 | 
						|
    RFAL_NFCV_RES_FLAG_RFU2 =
 | 
						|
        0x04U, /*!< RFU flag                                                     */
 | 
						|
    RFAL_NFCV_RES_FLAG_EXTENSION =
 | 
						|
        0x08U, /*!< Extension flag                                               */
 | 
						|
    RFAL_NFCV_RES_FLAG_RFU3 =
 | 
						|
        0x10U, /*!< RFU flag                                                     */
 | 
						|
    RFAL_NFCV_RES_FLAG_RFU4 =
 | 
						|
        0x20U, /*!< RFU flag                                                     */
 | 
						|
    RFAL_NFCV_RES_FLAG_RFU5 =
 | 
						|
        0x40U, /*!< RFU flag                                                     */
 | 
						|
    RFAL_NFCV_RES_FLAG_RFU6 =
 | 
						|
        0x80U /*!< RFU flag                                                     */
 | 
						|
};
 | 
						|
 | 
						|
/*! NFC-V Error code  ISO15693 2000 7.4.2 */
 | 
						|
enum {
 | 
						|
    RFAL_NFCV_ERROR_CMD_NOT_SUPPORTED =
 | 
						|
        0x01U, /*!< The command is not supported, code is not recognised         */
 | 
						|
    RFAL_NFCV_ERROR_CMD_NOT_RECOGNIZED =
 | 
						|
        0x02U, /*!< The command is not recognised, format error occurred         */
 | 
						|
    RFAL_NFCV_ERROR_OPTION_NOT_SUPPORTED =
 | 
						|
        0x03U, /*!< The option is not supported                                  */
 | 
						|
    RFAL_NFCV_ERROR_UNKNOWN =
 | 
						|
        0x0FU, /*!< Unknown error                                                */
 | 
						|
    RFAL_NFCV_ERROR_BLOCK_NOT_AVALIABLE =
 | 
						|
        0x10U, /*!< The specified block is not available                         */
 | 
						|
    RFAL_NFCV_ERROR_BLOCK_ALREDY_LOCKED =
 | 
						|
        0x11U, /*!< The specified block is already locked                        */
 | 
						|
    RFAL_NFCV_ERROR_BLOCK_LOCKED =
 | 
						|
        0x12U, /*!< The specified block is locked                                */
 | 
						|
    RFAL_NFCV_ERROR_WRITE_FAILED =
 | 
						|
        0x13U, /*!< The specified block was not successfully programmed          */
 | 
						|
    RFAL_NFCV_ERROR_BLOCK_FAILED =
 | 
						|
        0x14U /*!< The specified block was not successfully locked              */
 | 
						|
};
 | 
						|
 | 
						|
/*! NFC-V command set   ISO15693 2000 9.1 */
 | 
						|
enum {
 | 
						|
    RFAL_NFCV_CMD_INVENTORY =
 | 
						|
        0x01U, /*!< INVENTORY_REQ (Inventory) command                            */
 | 
						|
    RFAL_NFCV_CMD_SLPV =
 | 
						|
        0x02U, /*!< SLPV_REQ (Stay quiet) command                                */
 | 
						|
    RFAL_NFCV_CMD_READ_SINGLE_BLOCK =
 | 
						|
        0x20U, /*!< Read single block command                                    */
 | 
						|
    RFAL_NFCV_CMD_WRITE_SINGLE_BLOCK =
 | 
						|
        0x21U, /*!< Write single block command                                   */
 | 
						|
    RFAL_NFCV_CMD_LOCK_BLOCK =
 | 
						|
        0x22U, /*!< Lock block command                                           */
 | 
						|
    RFAL_NFCV_CMD_READ_MULTIPLE_BLOCKS =
 | 
						|
        0x23U, /*!< Read multiple blocks command                                 */
 | 
						|
    RFAL_NFCV_CMD_WRITE_MULTIPLE_BLOCKS =
 | 
						|
        0x24U, /*!< Write multiple blocks command                                */
 | 
						|
    RFAL_NFCV_CMD_SELECT =
 | 
						|
        0x25U, /*!< Select command                                               */
 | 
						|
    RFAL_NFCV_CMD_RESET_TO_READY =
 | 
						|
        0x26U, /*!< Reset To Ready command                                       */
 | 
						|
    RFAL_NFCV_CMD_GET_SYS_INFO =
 | 
						|
        0x2BU, /*!< Get System Information command                               */
 | 
						|
    RFAL_NFCV_CMD_EXTENDED_READ_SINGLE_BLOCK =
 | 
						|
        0x30U, /*!< Extended read single block command                           */
 | 
						|
    RFAL_NFCV_CMD_EXTENDED_WRITE_SINGLE_BLOCK =
 | 
						|
        0x31U, /*!< Extended write single block command                          */
 | 
						|
    RFAL_NFCV_CMD_EXTENDED_LOCK_SINGLE_BLOCK =
 | 
						|
        0x32U, /*!< Extended lock single block command                           */
 | 
						|
    RFAL_NFCV_CMD_EXTENDED_READ_MULTIPLE_BLOCK =
 | 
						|
        0x33U, /*!< Extended read multiple block command                         */
 | 
						|
    RFAL_NFCV_CMD_EXTENDED_WRITE_MULTIPLE_BLOCK =
 | 
						|
        0x34U, /*!< Extended read multiple block command                         */
 | 
						|
    RFAL_NFCV_CMD_EXTENDED_GET_SYS_INFO =
 | 
						|
        0x3BU /*!< Extended Get System Information command                      */
 | 
						|
};
 | 
						|
 | 
						|
/*! ST25TV/ST25DV command set  */
 | 
						|
enum {
 | 
						|
    RFAL_NFCV_CMD_READ_CONFIGURATION =
 | 
						|
        0xA0U, /*!< Read configuration command                                 */
 | 
						|
    RFAL_NFCV_CMD_WRITE_CONFIGURATION =
 | 
						|
        0xA1U, /*!< Write configuration command                                */
 | 
						|
    RFAL_NFCV_CMD_SET_EAS =
 | 
						|
        0xA2U, /*!< Set EAS command                                            */
 | 
						|
    RFAL_NFCV_CMD_RESET_EAS =
 | 
						|
        0xA3U, /*!< Reset EAS command                                          */
 | 
						|
    RFAL_NFCV_CMD_LOCK_EAS =
 | 
						|
        0xA4U, /*!< Lock EAS command                                           */
 | 
						|
    RFAL_NFCV_CMD_ENABLE_EAS =
 | 
						|
        0xA5U, /*!< Enable EAS command                                         */
 | 
						|
    RFAL_NFCV_CMD_KILL = 0xA6U, /*!< Kill command                                               */
 | 
						|
    RFAL_NFCV_CMD_WRITE_EAS_ID =
 | 
						|
        0xA7U, /*!< Write EAS ID command                                       */
 | 
						|
    RFAL_NFCV_CMD_WRITE_EAS_CONFIG =
 | 
						|
        0xA8U, /*!< Write EAS CONFIG command                                   */
 | 
						|
    RFAL_NFCV_CMD_MANAGE_GPO =
 | 
						|
        0xA9U, /*!< Manage GPO command                                         */
 | 
						|
    RFAL_NFCV_CMD_WRITE_MESSAGE =
 | 
						|
        0xAAU, /*!< Write Message command                                      */
 | 
						|
    RFAL_NFCV_CMD_READ_MESSAGE_LENGTH =
 | 
						|
        0xABU, /*!< Read Message Length command                                */
 | 
						|
    RFAL_NFCV_CMD_READ_MESSAGE =
 | 
						|
        0xACU, /*!< Read Message command                                       */
 | 
						|
    RFAL_NFCV_CMD_READ_DYN_CONFIGURATION =
 | 
						|
        0xADU, /*!< Read Dynamic Configuration command                         */
 | 
						|
    RFAL_NFCV_CMD_WRITE_DYN_CONFIGURATION =
 | 
						|
        0xAEU, /*!< Write Dynamic Configuration command                        */
 | 
						|
    RFAL_NFCV_CMD_WRITE_PASSWORD =
 | 
						|
        0xB1U, /*!< Write Kill Password / Write Password command               */
 | 
						|
    RFAL_NFCV_CMD_LOCK_KILL =
 | 
						|
        0xB2U, /*!< Lock Kill command                                          */
 | 
						|
    RFAL_NFCV_CMD_PRESENT_PASSWORD =
 | 
						|
        0xB3U, /*!< Present Password command                                   */
 | 
						|
    RFAL_NFCV_CMD_GET_RANDOM_NUMBER =
 | 
						|
        0xB4U, /*!< Get Random Number command                                  */
 | 
						|
    RFAL_NFCV_CMD_FAST_READ_SINGLE_BLOCK =
 | 
						|
        0xC0U, /*!< Fast Read single block command                             */
 | 
						|
    RFAL_NFCV_CMD_FAST_READ_MULTIPLE_BLOCKS =
 | 
						|
        0xC3U, /*!< Fast Read multiple blocks command                          */
 | 
						|
    RFAL_NFCV_CMD_FAST_EXTENDED_READ_SINGLE_BLOCK =
 | 
						|
        0xC4U, /*!< Fast Extended Read single block command                    */
 | 
						|
    RFAL_NFCV_CMD_FAST_EXTENDED_READ_MULTIPLE_BLOCKS =
 | 
						|
        0xC5U, /*!< Fast Extended Read multiple blocks command                 */
 | 
						|
    RFAL_NFCV_CMD_FAST_WRITE_MESSAGE =
 | 
						|
        0xCAU, /*!< Fast Write Message                                         */
 | 
						|
    RFAL_NFCV_CMD_FAST_READ_MESSAGE_LENGTH =
 | 
						|
        0xCBU, /*!< Fast Read Message Length                                   */
 | 
						|
    RFAL_NFCV_CMD_FAST_READ_MESSAGE =
 | 
						|
        0xCCU, /*!< Fast Read Message                                          */
 | 
						|
    RFAL_NFCV_CMD_FAST_READ_DYN_CONFIGURATION =
 | 
						|
        0xCDU, /*!< Fast Read Dynamic configuration                            */
 | 
						|
    RFAL_NFCV_CMD_FAST_WRITE_DYN_CONFIGURATION =
 | 
						|
        0xCEU /*!< Fast Write Dynamic Configuration                           */
 | 
						|
};
 | 
						|
 | 
						|
/*! ISO 15693 Get System info parameter request field ISO15693 2018 Table 94 */
 | 
						|
enum {
 | 
						|
    RFAL_NFCV_SYSINFO_DFSID =
 | 
						|
        0x01U, /*!< Get System info DFSID flag                                   */
 | 
						|
    RFAL_NFCV_SYSINFO_AFI =
 | 
						|
        0x02U, /*!< Get System info AFI flag                                     */
 | 
						|
    RFAL_NFCV_SYSINFO_MEMSIZE =
 | 
						|
        0x04U, /*!< Get System info MEMSIZE flag                                 */
 | 
						|
    RFAL_NFCV_SYSINFO_ICREF =
 | 
						|
        0x08U, /*!< Get System info ICREF flag                                   */
 | 
						|
    RFAL_NFCV_SYSINFO_MOI =
 | 
						|
        0x10U, /*!< Get System info MOI flag                                     */
 | 
						|
    RFAL_NFCV_SYSINFO_CMDLIST =
 | 
						|
        0x20U, /*!< Get System info CMDLIST flag                                 */
 | 
						|
    RFAL_NFCV_SYSINFO_CSI =
 | 
						|
        0x40U, /*!< Get System info CSI flag                                     */
 | 
						|
    RFAL_NFCV_SYSINFO_REQ_ALL =
 | 
						|
        0x7FU /*!< Get System info request of all parameters                    */
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 ******************************************************************************
 | 
						|
 * GLOBAL MACROS
 | 
						|
 ******************************************************************************
 | 
						|
 */
 | 
						|
 | 
						|
/*
 | 
						|
******************************************************************************
 | 
						|
* GLOBAL TYPES
 | 
						|
******************************************************************************
 | 
						|
*/
 | 
						|
 | 
						|
/*! NFC-V Number of slots  Digital 2.0  9.6.1 */
 | 
						|
typedef enum {
 | 
						|
    RFAL_NFCV_NUM_SLOTS_1 = 0x20, /*!< Number of slots: 1             */
 | 
						|
    RFAL_NFCV_NUM_SLOTS_16 = 0x00, /*!< Number of slots: 16            */
 | 
						|
} rfalNfcvNumSlots;
 | 
						|
 | 
						|
/*! NFC-V INVENTORY_RES format   Digital 2.0  9.6.2 */
 | 
						|
typedef struct {
 | 
						|
    uint8_t RES_FLAG; /*!< Response Flags                 */
 | 
						|
    uint8_t DSFID; /*!< Data Storage Format Identifier */
 | 
						|
    uint8_t UID[RFAL_NFCV_UID_LEN]; /*!< NFC-V device UID               */
 | 
						|
    uint8_t crc[RFAL_CRC_LEN]; /*!< CRC                            */
 | 
						|
} rfalNfcvInventoryRes;
 | 
						|
 | 
						|
/*! NFC-V Generic Req format  */
 | 
						|
typedef struct {
 | 
						|
    uint8_t REQ_FLAG; /*!< Request Flags      */
 | 
						|
    uint8_t CMD; /*!< Command code       */
 | 
						|
    union { /*  PRQA S 0750 # MISRA 19.2 - Both members are of the same type, just different names.  Thus no problem can occur. */
 | 
						|
        uint8_t UID[RFAL_NFCV_UID_LEN]; /*!< Mask Value         */
 | 
						|
        uint8_t data[RFAL_NFCV_MAX_GEN_DATA_LEN]; /*!< Data               */
 | 
						|
    } payload; /*!< Payload            */
 | 
						|
} rfalNfcvGenericReq;
 | 
						|
 | 
						|
/*! NFC-V Generic Response format */
 | 
						|
typedef struct {
 | 
						|
    uint8_t RES_FLAG; /*!< Response Flags     */
 | 
						|
    uint8_t data[RFAL_NFCV_MAX_GEN_DATA_LEN]; /*!< Data               */
 | 
						|
} rfalNfcvGenericRes;
 | 
						|
 | 
						|
/*! NFC-V listener device (VICC) struct  */
 | 
						|
typedef struct {
 | 
						|
    rfalNfcvInventoryRes InvRes; /*!< INVENTORY_RES                  */
 | 
						|
    bool isSleep; /*!< Device sleeping flag           */
 | 
						|
} rfalNfcvListenDevice;
 | 
						|
 | 
						|
/*
 | 
						|
******************************************************************************
 | 
						|
* GLOBAL FUNCTION PROTOTYPES
 | 
						|
******************************************************************************
 | 
						|
*/
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  Initialize NFC-V Poller mode
 | 
						|
 *  
 | 
						|
 * This methods configures RFAL RF layer to perform as a 
 | 
						|
 * NFC-F Poller/RW (ISO15693) including all default timings 
 | 
						|
 *
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or mode not set
 | 
						|
 * \return ERR_PARAM        : Incorrect bitrate
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerInitialize(void);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Check Presence
 | 
						|
 *  
 | 
						|
 * This method checks if a NFC-V Listen device (VICC) is present on the field
 | 
						|
 * by sending an Inventory (INVENTORY_REQ) 
 | 
						|
 *  
 | 
						|
 * \param[out] invRes : If received, the INVENTORY_RES
 | 
						|
 *
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error, no listener device detectedd
 | 
						|
 * \return ERR_NONE         : No error, one or more device in the field
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerCheckPresence(rfalNfcvInventoryRes* invRes);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief NFC-F Poller Poll
 | 
						|
 * 
 | 
						|
 * This function sends to all VICCs in field the INVENTORY command with the 
 | 
						|
 * given number of slots
 | 
						|
 * 
 | 
						|
 * If more than one slot is used the following EOF need to be handled
 | 
						|
 * by the caller using rfalISO15693TransceiveEOFAnticollision()
 | 
						|
 *
 | 
						|
 * \param[in]  nSlots  : Number of Slots to be sent (1 or 16)
 | 
						|
 * \param[in]  maskLen : Number bits on the Mask value
 | 
						|
 * \param[in]  maskVal : location of the Mask value
 | 
						|
 * \param[out] invRes  : location to place the INVENTORY_RES
 | 
						|
 * \param[out] rcvdLen : number of bits received (without collision)
 | 
						|
 * 
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error
 | 
						|
 * \return ERR_RF_COLLISION : Collision detected 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerInventory(
 | 
						|
    rfalNfcvNumSlots nSlots,
 | 
						|
    uint8_t maskLen,
 | 
						|
    const uint8_t* maskVal,
 | 
						|
    rfalNfcvInventoryRes* invRes,
 | 
						|
    uint16_t* rcvdLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Full Collision Resolution
 | 
						|
 *  
 | 
						|
 * Performs a full Collision resolution as defined in Activity 2.0   9.3.7
 | 
						|
 * Once done, the devCnt will indicate how many (if any) devices have 
 | 
						|
 * been identified and their details are contained on nfcvDevList
 | 
						|
 *
 | 
						|
 * \param[in]  compMode     : compliance mode to be performed
 | 
						|
 * \param[in]  devLimit     : device limit value, and size nfcaDevList
 | 
						|
 * \param[out] nfcvDevList  : NFC-v listener devices list
 | 
						|
 * \param[out] devCnt       : Devices found counter
 | 
						|
 *
 | 
						|
 * When compMode is set to ISO the function immediately goes to 16 slots improving
 | 
						|
 * chances to detect more than only one strong card.
 | 
						|
 *
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or mode not set
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerCollisionResolution(
 | 
						|
    rfalComplianceMode compMode,
 | 
						|
    uint8_t devLimit,
 | 
						|
    rfalNfcvListenDevice* nfcvDevList,
 | 
						|
    uint8_t* devCnt);
 | 
						|
 | 
						|
/*!
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Full Collision Resolution With Sleep
 | 
						|
 *
 | 
						|
 * Performs a full Collision resolution which is different from Activity 2.0 9.3.7.
 | 
						|
 * The implementation uses SLPV (StayQuiet) command to make sure all cards are found.
 | 
						|
 * Once done, the devCnt will indicate how many (if any) devices have
 | 
						|
 * been identified and their details are contained on nfcvDevList
 | 
						|
 *
 | 
						|
 * \param[in]  devLimit     : device limit value, and size nfcaDevList
 | 
						|
 * \param[out] nfcvDevList  : NFC-v listener devices list
 | 
						|
 * \param[out] devCnt       : Devices found counter
 | 
						|
 *
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or mode not set
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerSleepCollisionResolution(
 | 
						|
    uint8_t devLimit,
 | 
						|
    rfalNfcvListenDevice* nfcvDevList,
 | 
						|
    uint8_t* devCnt);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Sleep
 | 
						|
 *  
 | 
						|
 * This function is used to send the SLPV_REQ (Stay Quiet) command to put the VICC 
 | 
						|
 * with the given UID to state QUIET so that they do not reply to more Inventory
 | 
						|
 * 
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device to be put to Sleep
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerSleep(uint8_t flags, const uint8_t* uid);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Select
 | 
						|
 *  
 | 
						|
 * Selects a device (VICC) by its UID 
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device to be put to be Selected
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerSelect(uint8_t flags, const uint8_t* uid);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Read Single Block
 | 
						|
 *  
 | 
						|
 * Reads a Single Block from a device (VICC)  
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device to be put to be read
 | 
						|
 *                             if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  blockNum     : Number of the block to read
 | 
						|
 * \param[out] rxBuf        : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen     : length of rxBuf
 | 
						|
 * \param[out] rcvLen       : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerReadSingleBlock(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint8_t blockNum,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Write Single Block
 | 
						|
 *  
 | 
						|
 * Writes a Single Block from a device (VICC)
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device to be put to be written
 | 
						|
 *                             if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  blockNum     : Number of the block to write
 | 
						|
 * \param[in]  wrData       : data to be written on the given block
 | 
						|
 * \param[in]  blockLen     : number of bytes of a block
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerWriteSingleBlock(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint8_t blockNum,
 | 
						|
    const uint8_t* wrData,
 | 
						|
    uint8_t blockLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Read Multiple Blocks
 | 
						|
 *  
 | 
						|
 * Reads Multiple Blocks from a device (VICC)  
 | 
						|
 *
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  firstBlockNum  : first block to be read
 | 
						|
 * \param[in]  numOfBlocks    : number of block to read
 | 
						|
 * \param[out] rxBuf          : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen       : length of rxBuf
 | 
						|
 * \param[out] rcvLen         : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerReadMultipleBlocks(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint8_t firstBlockNum,
 | 
						|
    uint8_t numOfBlocks,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Write Multiple Blocks
 | 
						|
 *  
 | 
						|
 * Reads Multiple Blocks from a device (VICC)
 | 
						|
 * In order to not limit the length of the Write multiple command, a buffer
 | 
						|
 * must be provided where the request will be composed and then sent.
 | 
						|
 *
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  firstBlockNum  : first block to be write
 | 
						|
 * \param[in]  numOfBlocks    : number of consecutive blocks to write
 | 
						|
 * \param[in]  txBuf          : buffer where the request will be composed
 | 
						|
 * \param[in]  txBufLen       : length of txBuf
 | 
						|
 * \param[in]  blockLen       : number of bytes of a block
 | 
						|
 * \param[in]  wrData         : data to be written
 | 
						|
 * \param[in]  wrDataLen      : length of the data do be written. Must be
 | 
						|
 *                              aligned with number of blocks to write and
 | 
						|
 *                              the size of a block
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerWriteMultipleBlocks(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint8_t firstBlockNum,
 | 
						|
    uint8_t numOfBlocks,
 | 
						|
    uint8_t* txBuf,
 | 
						|
    uint16_t txBufLen,
 | 
						|
    uint8_t blockLen,
 | 
						|
    const uint8_t* wrData,
 | 
						|
    uint16_t wrDataLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Extended Lock Single Block
 | 
						|
 *  
 | 
						|
 * Blocks a Single Block from a device (VICC) supporting extended commands
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device
 | 
						|
 *                             if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  blockNum     : Number of the block to be locked
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerLockBlock(uint8_t flags, const uint8_t* uid, uint8_t blockNum);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Extended Lock Single Block
 | 
						|
 *  
 | 
						|
 * Blocks a Single Block from a device (VICC) supporting extended commands
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device
 | 
						|
 *                             if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  blockNum     : Number of the block to be locked (16 bits)
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode
 | 
						|
    rfalNfcvPollerExtendedLockSingleBlock(uint8_t flags, const uint8_t* uid, uint16_t blockNum);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Extended Read Single Block
 | 
						|
 *  
 | 
						|
 * Reads a Single Block from a device (VICC) supporting extended commands
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device to be put to be read
 | 
						|
 *                             if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  blockNum     : Number of the block to read (16 bits)
 | 
						|
 * \param[out] rxBuf        : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen     : length of rxBuf
 | 
						|
 * \param[out] rcvLen       : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerExtendedReadSingleBlock(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint16_t blockNum,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Extended Write Single Block
 | 
						|
 *  
 | 
						|
 * Writes a Single Block from a device (VICC) supporting extended commands
 | 
						|
 *
 | 
						|
 * \param[in]  flags        : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                            for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid          : UID of the device
 | 
						|
 *                             if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  blockNum     : Number of the block to write (16 bits)
 | 
						|
 * \param[in]  wrData       : data to be written on the given block
 | 
						|
 * \param[in]  blockLen     : number of bytes of a block
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE  : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM        : Invalid parameters
 | 
						|
 * \return ERR_IO           : Generic internal error 
 | 
						|
 * \return ERR_CRC          : CRC error detected
 | 
						|
 * \return ERR_FRAMING      : Framing error detected
 | 
						|
 * \return ERR_PROTO        : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT      : Timeout error
 | 
						|
 * \return ERR_NONE         : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerExtendedWriteSingleBlock(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint16_t blockNum,
 | 
						|
    const uint8_t* wrData,
 | 
						|
    uint8_t blockLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Extended Read Multiple Blocks
 | 
						|
 *  
 | 
						|
 * Reads Multiple Blocks from a device (VICC) supporting extended commands  
 | 
						|
 *
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  firstBlockNum  : first block to be read (16 bits)
 | 
						|
 * \param[in]  numOfBlocks    : number of consecutive blocks to read (16 bits)
 | 
						|
 * \param[out] rxBuf          : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen       : length of rxBuf
 | 
						|
 * \param[out] rcvLen         : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerExtendedReadMultipleBlocks(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint16_t firstBlockNum,
 | 
						|
    uint16_t numOfBlocks,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Poller Extended Write Multiple Blocks
 | 
						|
 *  
 | 
						|
 * Writes Multiple Blocks from a device (VICC) supporting extended commands 
 | 
						|
 * In order to not limit the length of the Write multiple command, a buffer
 | 
						|
 * must be provided where the request will be composed and then sent.
 | 
						|
 *
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  firstBlockNum  : first block to be write (16 bits)
 | 
						|
 * \param[in]  numOfBlocks    : number of consecutive blocks to write (16 bits)
 | 
						|
 * \param[in]  txBuf          : buffer where the request will be composed
 | 
						|
 * \param[in]  txBufLen       : length of txBuf
 | 
						|
 * \param[in]  blockLen       : number of bytes of a block
 | 
						|
 * \param[in]  wrData         : data to be written
 | 
						|
 * \param[in]  wrDataLen      : length of the data do be written. Must be
 | 
						|
 *                              aligned with number of blocks to write and
 | 
						|
 *                              the size of a block
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerExtendedWriteMultipleBlocks(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint16_t firstBlockNum,
 | 
						|
    uint16_t numOfBlocks,
 | 
						|
    uint8_t* txBuf,
 | 
						|
    uint16_t txBufLen,
 | 
						|
    uint8_t blockLen,
 | 
						|
    const uint8_t* wrData,
 | 
						|
    uint16_t wrDataLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Get System Information
 | 
						|
 *  
 | 
						|
 * Sends Get System Information command  
 | 
						|
 *
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[out] rxBuf          : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen       : length of rxBuf
 | 
						|
 * \param[out] rcvLen         : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerGetSystemInformation(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Extended Get System Information
 | 
						|
 *  
 | 
						|
 * Sends Extended Get System Information command  
 | 
						|
 *
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  requestField   : Get System info parameter request field
 | 
						|
 * \param[out] rxBuf          : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen       : length of rxBuf
 | 
						|
 * \param[out] rcvLen         : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerExtendedGetSystemInformation(
 | 
						|
    uint8_t flags,
 | 
						|
    const uint8_t* uid,
 | 
						|
    uint8_t requestField,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
/*! 
 | 
						|
 *****************************************************************************
 | 
						|
 * \brief  NFC-V Transceive Request
 | 
						|
 *  
 | 
						|
 * Performs a generic transceive with an ISO15693 tag
 | 
						|
 *
 | 
						|
 * \param[in]  cmd            : NFC-V command
 | 
						|
 * \param[in]  flags          : Flags to be used: Sub-carrier; Data_rate; Option
 | 
						|
 *                              for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT
 | 
						|
 * \param[in]  param          : Prepend parameter on certain proprietary requests
 | 
						|
 *                              For default commands skip: RFAL_NFCV_PARAM_SKIP
 | 
						|
 * \param[in]  uid            : UID of the device to be put to be read
 | 
						|
 *                               if UID is provided Addressed mode will be used
 | 
						|
 * \param[in]  data           : command parameters append after UID
 | 
						|
 * \param[in]  dataLen        : command parameters Len
 | 
						|
 * \param[out] rxBuf          : buffer to store response (also with RES_FLAGS)
 | 
						|
 * \param[in]  rxBufLen       : length of rxBuf
 | 
						|
 * \param[out] rcvLen         : number of bytes received
 | 
						|
 *  
 | 
						|
 * \return ERR_WRONG_STATE    : RFAL not initialized or incorrect mode
 | 
						|
 * \return ERR_PARAM          : Invalid parameters
 | 
						|
 * \return ERR_IO             : Generic internal error 
 | 
						|
 * \return ERR_CRC            : CRC error detected
 | 
						|
 * \return ERR_FRAMING        : Framing error detected
 | 
						|
 * \return ERR_PROTO          : Protocol error detected
 | 
						|
 * \return ERR_TIMEOUT        : Timeout error
 | 
						|
 * \return ERR_NONE           : No error
 | 
						|
 *****************************************************************************
 | 
						|
 */
 | 
						|
ReturnCode rfalNfcvPollerTransceiveReq(
 | 
						|
    uint8_t cmd,
 | 
						|
    uint8_t flags,
 | 
						|
    uint8_t param,
 | 
						|
    const uint8_t* uid,
 | 
						|
    const uint8_t* data,
 | 
						|
    uint16_t dataLen,
 | 
						|
    uint8_t* rxBuf,
 | 
						|
    uint16_t rxBufLen,
 | 
						|
    uint16_t* rcvLen);
 | 
						|
 | 
						|
#endif /* RFAL_NFCV_H */
 | 
						|
 | 
						|
/**
 | 
						|
  * @}
 | 
						|
  *
 | 
						|
  * @}
 | 
						|
  *
 | 
						|
  * @}
 | 
						|
  */
 |