Firmware library for the X-NUCLEO-NFC01A1 Dynamic NFC Tag board.

Dependencies:   M24SR

Dependents:   NFC M2M_2016_STM32 MyongjiElec_capstone1 IDW01M1_Cloud_IBM ... more

Fork of X_NUCLEO_NFC01A1 by ST Expansion SW Team

X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board Firmware Package

Introduction

This firmware package includes Components Device Drivers, Board Support Package and example applications for STMicroelectronics X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board based on M24SR.

Firmware Library

Class X_NUCLEO_NFC01A1 is intended to represent the Dynamic NFC Tag Expansion Board with the same name.
It provides an API to access to the M24SR component and to the three onboard LEDs.
It is intentionally implemented as a singleton because only one X_NUCLEO_NFC01A1 at a time might be deployed in a HW component stack.
The library also provides an implementation of the NDEF library API for M24SR, providing an simple way to read/write NDEF formatted messages from/to the M24SR dynamic NFC tag.

Example applications

1. Hello World
2. Asynchronous Hello World

Committer:
giovannivisentini
Date:
Fri Apr 28 12:14:12 2017 +0000
Revision:
29:7a2dfd06cb29
Aligned to ARM mbed coding style.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 29:7a2dfd06cb29 1 /**
giovannivisentini 29:7a2dfd06cb29 2 ******************************************************************************
giovannivisentini 29:7a2dfd06cb29 3 * @file m24sr.h
giovannivisentini 29:7a2dfd06cb29 4 * @author MMY Application Team
giovannivisentini 29:7a2dfd06cb29 5 * @version V2.0.0
giovannivisentini 29:7a2dfd06cb29 6 * @date 28 Apr 2017
giovannivisentini 29:7a2dfd06cb29 7 * @brief This file provides a set of functions needed to manage M24SR
giovannivisentini 29:7a2dfd06cb29 8 ******************************************************************************
giovannivisentini 29:7a2dfd06cb29 9 * @attention
giovannivisentini 29:7a2dfd06cb29 10 *
giovannivisentini 29:7a2dfd06cb29 11 * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
giovannivisentini 29:7a2dfd06cb29 12 *
giovannivisentini 29:7a2dfd06cb29 13 * Licensed under MMY-ST Liberty SW License Agreement V2, (the "License");
giovannivisentini 29:7a2dfd06cb29 14 * You may not use this file except in compliance with the License.
giovannivisentini 29:7a2dfd06cb29 15 * You may obtain a copy of the License at:
giovannivisentini 29:7a2dfd06cb29 16 *
giovannivisentini 29:7a2dfd06cb29 17 * http://www.st.com/software_license_agreement_liberty_v2
giovannivisentini 29:7a2dfd06cb29 18 *
giovannivisentini 29:7a2dfd06cb29 19 * Unless required by applicable law or agreed to in writing, software
giovannivisentini 29:7a2dfd06cb29 20 * distributed under the License is distributed on an "AS IS" BASIS,
giovannivisentini 29:7a2dfd06cb29 21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
giovannivisentini 29:7a2dfd06cb29 22 * See the License for the specific language governing permissions and
giovannivisentini 29:7a2dfd06cb29 23 * limitations under the License.
giovannivisentini 29:7a2dfd06cb29 24 *
giovannivisentini 29:7a2dfd06cb29 25 ******************************************************************************
giovannivisentini 29:7a2dfd06cb29 26 */
giovannivisentini 29:7a2dfd06cb29 27
giovannivisentini 29:7a2dfd06cb29 28 /* Define to prevent recursive inclusion -------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 29 #ifndef __DRV_M24SR_H
giovannivisentini 29:7a2dfd06cb29 30 #define __DRV_M24SR_H
giovannivisentini 29:7a2dfd06cb29 31
giovannivisentini 29:7a2dfd06cb29 32 /* Includes ------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 33 #include "Nfc.h"
giovannivisentini 29:7a2dfd06cb29 34
giovannivisentini 29:7a2dfd06cb29 35 #ifdef __cplusplus
giovannivisentini 29:7a2dfd06cb29 36 extern "C" {
giovannivisentini 29:7a2dfd06cb29 37 #endif
giovannivisentini 29:7a2dfd06cb29 38
giovannivisentini 29:7a2dfd06cb29 39 /** @addtogroup M24SR_Driver
giovannivisentini 29:7a2dfd06cb29 40 * @{
giovannivisentini 29:7a2dfd06cb29 41 */
giovannivisentini 29:7a2dfd06cb29 42
giovannivisentini 29:7a2dfd06cb29 43 /** @addtogroup drv_M24SR
giovannivisentini 29:7a2dfd06cb29 44 * @{
giovannivisentini 29:7a2dfd06cb29 45 */
giovannivisentini 29:7a2dfd06cb29 46
giovannivisentini 29:7a2dfd06cb29 47 /* Exported types ------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 48
giovannivisentini 29:7a2dfd06cb29 49 /**
giovannivisentini 29:7a2dfd06cb29 50 * @brief APDU-Header command structure
giovannivisentini 29:7a2dfd06cb29 51 */
giovannivisentini 29:7a2dfd06cb29 52 typedef struct {
giovannivisentini 29:7a2dfd06cb29 53 uint8_t CLA; /* Command class */
giovannivisentini 29:7a2dfd06cb29 54 uint8_t INS; /* Operation code */
giovannivisentini 29:7a2dfd06cb29 55 uint8_t P1; /* Selection Mode */
giovannivisentini 29:7a2dfd06cb29 56 uint8_t P2; /* Selection Option */
giovannivisentini 29:7a2dfd06cb29 57 } C_APDU_Header;
giovannivisentini 29:7a2dfd06cb29 58
giovannivisentini 29:7a2dfd06cb29 59 /**
giovannivisentini 29:7a2dfd06cb29 60 * @brief APDU-Body command structure
giovannivisentini 29:7a2dfd06cb29 61 */
giovannivisentini 29:7a2dfd06cb29 62 typedef struct {
giovannivisentini 29:7a2dfd06cb29 63 uint8_t LC; /* Data field length */
giovannivisentini 29:7a2dfd06cb29 64 const uint8_t *pData; /* Command parameters */
giovannivisentini 29:7a2dfd06cb29 65 uint8_t LE; /* Expected length of data to be returned */
giovannivisentini 29:7a2dfd06cb29 66 } C_APDU_Body;
giovannivisentini 29:7a2dfd06cb29 67
giovannivisentini 29:7a2dfd06cb29 68 /**
giovannivisentini 29:7a2dfd06cb29 69 * @brief APDU Command structure
giovannivisentini 29:7a2dfd06cb29 70 */
giovannivisentini 29:7a2dfd06cb29 71 typedef struct {
giovannivisentini 29:7a2dfd06cb29 72 C_APDU_Header Header;
giovannivisentini 29:7a2dfd06cb29 73 C_APDU_Body Body;
giovannivisentini 29:7a2dfd06cb29 74 } C_APDU;
giovannivisentini 29:7a2dfd06cb29 75
giovannivisentini 29:7a2dfd06cb29 76 /**
giovannivisentini 29:7a2dfd06cb29 77 * @brief SC response structure
giovannivisentini 29:7a2dfd06cb29 78 */
giovannivisentini 29:7a2dfd06cb29 79 typedef struct {
giovannivisentini 29:7a2dfd06cb29 80 uint8_t *pData; /* Data returned from the card */ // pointer on the transceiver buffer = ReaderRecBuf[CR95HF_DATA_OFFSET ];
giovannivisentini 29:7a2dfd06cb29 81 uint8_t SW1; /* Command Processing status */
giovannivisentini 29:7a2dfd06cb29 82 uint8_t SW2; /* Command Processing qualification */
giovannivisentini 29:7a2dfd06cb29 83 } R_APDU;
giovannivisentini 29:7a2dfd06cb29 84
giovannivisentini 29:7a2dfd06cb29 85 /**
giovannivisentini 29:7a2dfd06cb29 86 * @brief GPO mode structure
giovannivisentini 29:7a2dfd06cb29 87 */
giovannivisentini 29:7a2dfd06cb29 88 typedef enum {
giovannivisentini 29:7a2dfd06cb29 89 RF_GPO = 0, I2C_GPO = 1
giovannivisentini 29:7a2dfd06cb29 90 } M24SR_GPO_MODE;
giovannivisentini 29:7a2dfd06cb29 91
giovannivisentini 29:7a2dfd06cb29 92 typedef enum {
giovannivisentini 29:7a2dfd06cb29 93 M24SR_WAITINGTIME_POLLING,
giovannivisentini 29:7a2dfd06cb29 94 M24SR_INTERRUPT_GPO
giovannivisentini 29:7a2dfd06cb29 95 } M24SR_WAITINGTIME_MGMT;
giovannivisentini 29:7a2dfd06cb29 96
giovannivisentini 29:7a2dfd06cb29 97 /* Exported constants --------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 98
giovannivisentini 29:7a2dfd06cb29 99 /** @defgroup lib_M24SR_Exported_Constants
giovannivisentini 29:7a2dfd06cb29 100 * @{
giovannivisentini 29:7a2dfd06cb29 101 */
giovannivisentini 29:7a2dfd06cb29 102
giovannivisentini 29:7a2dfd06cb29 103 /* ---------------------- status code ----------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 104 #define UB_STATUS_OFFSET 4
giovannivisentini 29:7a2dfd06cb29 105 #define LB_STATUS_OFFSET 3
giovannivisentini 29:7a2dfd06cb29 106 #define I_AM_M24SR ((uint8_t)0xB4)
giovannivisentini 29:7a2dfd06cb29 107 #define I_AM_M24SR_AUTOMOTIVE ((uint8_t)0xBC)
giovannivisentini 29:7a2dfd06cb29 108
giovannivisentini 29:7a2dfd06cb29 109 #define M24SR_NBBYTE_INVALID 0xFFFE
giovannivisentini 29:7a2dfd06cb29 110
giovannivisentini 29:7a2dfd06cb29 111 /** @defgroup drv_M24SR_File_Identifier
giovannivisentini 29:7a2dfd06cb29 112 * @{
giovannivisentini 29:7a2dfd06cb29 113 */
giovannivisentini 29:7a2dfd06cb29 114 #define SYSTEM_FILE_ID_BYTES {0xE1,0x01}
giovannivisentini 29:7a2dfd06cb29 115 #define CC_FILE_ID_BYTES {0xE1,0x03}
giovannivisentini 29:7a2dfd06cb29 116 #define NDEF_FILE_ID 0x0001
giovannivisentini 29:7a2dfd06cb29 117 /**
giovannivisentini 29:7a2dfd06cb29 118 * @}
giovannivisentini 29:7a2dfd06cb29 119 */
giovannivisentini 29:7a2dfd06cb29 120
giovannivisentini 29:7a2dfd06cb29 121 /** @defgroup drv_M24SR_Password_Management
giovannivisentini 29:7a2dfd06cb29 122 * @{
giovannivisentini 29:7a2dfd06cb29 123 */
giovannivisentini 29:7a2dfd06cb29 124 #define READ_PWD 0x0001
giovannivisentini 29:7a2dfd06cb29 125 #define WRITE_PWD 0x0002
giovannivisentini 29:7a2dfd06cb29 126 #define I2C_PWD 0x0003
giovannivisentini 29:7a2dfd06cb29 127
giovannivisentini 29:7a2dfd06cb29 128 /*-------------------------- Verify command answer ----------------------------*/
giovannivisentini 29:7a2dfd06cb29 129 /**
giovannivisentini 29:7a2dfd06cb29 130 * @}
giovannivisentini 29:7a2dfd06cb29 131 */
giovannivisentini 29:7a2dfd06cb29 132
giovannivisentini 29:7a2dfd06cb29 133 /** @defgroup drv_M24SR_Command_Management
giovannivisentini 29:7a2dfd06cb29 134 * @{
giovannivisentini 29:7a2dfd06cb29 135 */
giovannivisentini 29:7a2dfd06cb29 136
giovannivisentini 29:7a2dfd06cb29 137 /* special M24SR command ----------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 138 #define M24SR_OPENSESSION_COMMAND {0x26}
giovannivisentini 29:7a2dfd06cb29 139 #define M24SR_KILLSESSION_COMMAND {0x52}
giovannivisentini 29:7a2dfd06cb29 140
giovannivisentini 29:7a2dfd06cb29 141 /* APDU Command: class list -------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 142 #define C_APDU_CLA_DEFAULT 0x00
giovannivisentini 29:7a2dfd06cb29 143 #define C_APDU_CLA_ST 0xA2
giovannivisentini 29:7a2dfd06cb29 144
giovannivisentini 29:7a2dfd06cb29 145 /*------------------------ Data Area Management Commands ---------------------*/
giovannivisentini 29:7a2dfd06cb29 146 #define C_APDU_SELECT_FILE 0xA4
giovannivisentini 29:7a2dfd06cb29 147 #define C_APDU_GET_RESPONCE 0xC0
giovannivisentini 29:7a2dfd06cb29 148 #define C_APDU_STATUS 0xF2
giovannivisentini 29:7a2dfd06cb29 149 #define C_APDU_UPDATE_BINARY 0xD6
giovannivisentini 29:7a2dfd06cb29 150 #define C_APDU_READ_BINARY 0xB0
giovannivisentini 29:7a2dfd06cb29 151 #define C_APDU_WRITE_BINARY 0xD0
giovannivisentini 29:7a2dfd06cb29 152 #define C_APDU_UPDATE_RECORD 0xDC
giovannivisentini 29:7a2dfd06cb29 153 #define C_APDU_READ_RECORD 0xB2
giovannivisentini 29:7a2dfd06cb29 154
giovannivisentini 29:7a2dfd06cb29 155 /*-------------------------- Safety Management Commands ----------------------*/
giovannivisentini 29:7a2dfd06cb29 156 #define C_APDU_VERIFY 0x20
giovannivisentini 29:7a2dfd06cb29 157 #define C_APDU_CHANGE 0x24
giovannivisentini 29:7a2dfd06cb29 158 #define C_APDU_DISABLE 0x26
giovannivisentini 29:7a2dfd06cb29 159 #define C_APDU_ENABLE 0x28
giovannivisentini 29:7a2dfd06cb29 160
giovannivisentini 29:7a2dfd06cb29 161 /*-------------------------- Gpio Management Commands ------------------------*/
giovannivisentini 29:7a2dfd06cb29 162 #define C_APDU_INTERRUPT 0xD6
giovannivisentini 29:7a2dfd06cb29 163
giovannivisentini 29:7a2dfd06cb29 164 /* Length ----------------------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 165 #define M24SR_STATUS_NBBYTE 2
giovannivisentini 29:7a2dfd06cb29 166 #define M24SR_CRC_NBBYTE 2
giovannivisentini 29:7a2dfd06cb29 167 #define M24SR_STATUSRESPONSE_NBBYTE 5
giovannivisentini 29:7a2dfd06cb29 168 #define M24SR_DESELECTREQUEST_COMMAND {0xC2,0xE0,0xB4}
giovannivisentini 29:7a2dfd06cb29 169 #define M24SR_DESELECTRESPONSE_NBBYTE 3
giovannivisentini 29:7a2dfd06cb29 170 #define M24SR_WATINGTIMEEXTRESPONSE_NBBYTE 4
giovannivisentini 29:7a2dfd06cb29 171 #define M24SR_PASSWORD_NBBYTE 0x10
giovannivisentini 29:7a2dfd06cb29 172 #define M24SR_SELECTAPPLICATION_COMMAND {0xD2,0x76,0x00,0x00,0x85,0x01,0x01}
giovannivisentini 29:7a2dfd06cb29 173 /* Command structure ------------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 174 #define M24SR_CMDSTRUCT_SELECTAPPLICATION 0x01FF
giovannivisentini 29:7a2dfd06cb29 175 #define M24SR_CMDSTRUCT_SELECTCCFILE 0x017F
giovannivisentini 29:7a2dfd06cb29 176 #define M24SR_CMDSTRUCT_SELECTNDEFFILE 0x017F
giovannivisentini 29:7a2dfd06cb29 177 #define M24SR_CMDSTRUCT_READBINARY 0x019F
giovannivisentini 29:7a2dfd06cb29 178 #define M24SR_CMDSTRUCT_UPDATEBINARY 0x017F
giovannivisentini 29:7a2dfd06cb29 179 #define M24SR_CMDSTRUCT_VERIFYBINARYWOPWD 0x013F
giovannivisentini 29:7a2dfd06cb29 180 #define M24SR_CMDSTRUCT_VERIFYBINARYWITHPWD 0x017F
giovannivisentini 29:7a2dfd06cb29 181 #define M24SR_CMDSTRUCT_CHANGEREFDATA 0x017F
giovannivisentini 29:7a2dfd06cb29 182 #define M24SR_CMDSTRUCT_ENABLEVERIFREQ 0x011F
giovannivisentini 29:7a2dfd06cb29 183 #define M24SR_CMDSTRUCT_DISABLEVERIFREQ 0x011F
giovannivisentini 29:7a2dfd06cb29 184 #define M24SR_CMDSTRUCT_SENDINTERRUPT 0x013F
giovannivisentini 29:7a2dfd06cb29 185 #define M24SR_CMDSTRUCT_GPOSTATE 0x017F
giovannivisentini 29:7a2dfd06cb29 186
giovannivisentini 29:7a2dfd06cb29 187 /* Command structure Mask -------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 188 #define M24SR_PCB_NEEDED 0x0001 /* PCB byte present or not */
giovannivisentini 29:7a2dfd06cb29 189 #define M24SR_CLA_NEEDED 0x0002 /* CLA byte present or not */
giovannivisentini 29:7a2dfd06cb29 190 #define M24SR_INS_NEEDED 0x0004 /* Operation code present or not*/
giovannivisentini 29:7a2dfd06cb29 191 #define M24SR_P1_NEEDED 0x0008 /* Selection Mode present or not*/
giovannivisentini 29:7a2dfd06cb29 192 #define M24SR_P2_NEEDED 0x0010 /* Selection Option present or not*/
giovannivisentini 29:7a2dfd06cb29 193 #define M24SR_LC_NEEDED 0x0020 /* Data field length byte present or not */
giovannivisentini 29:7a2dfd06cb29 194 #define M24SR_DATA_NEEDED 0x0040 /* Data present or not */
giovannivisentini 29:7a2dfd06cb29 195 #define M24SR_LE_NEEDED 0x0080 /* Expected length present or not */
giovannivisentini 29:7a2dfd06cb29 196 #define M24SR_CRC_NEEDED 0x0100 /* 2 CRC bytes present or not */
giovannivisentini 29:7a2dfd06cb29 197
giovannivisentini 29:7a2dfd06cb29 198 #define M24SR_DID_NEEDED 0x08 /* DID byte present or not */
giovannivisentini 29:7a2dfd06cb29 199
giovannivisentini 29:7a2dfd06cb29 200 /**
giovannivisentini 29:7a2dfd06cb29 201 * @}
giovannivisentini 29:7a2dfd06cb29 202 */
giovannivisentini 29:7a2dfd06cb29 203
giovannivisentini 29:7a2dfd06cb29 204 /* Offset ----------------------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 205 #define M24SR_OFFSET_PCB 0
giovannivisentini 29:7a2dfd06cb29 206 #define M24SR_OFFSET_CLASS 1
giovannivisentini 29:7a2dfd06cb29 207 #define M24SR_OFFSET_INS 2
giovannivisentini 29:7a2dfd06cb29 208 #define M24SR_OFFSET_P1 3
giovannivisentini 29:7a2dfd06cb29 209
giovannivisentini 29:7a2dfd06cb29 210 /* mask ------------------------------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 211 #define M24SR_MASK_BLOCK 0xC0
giovannivisentini 29:7a2dfd06cb29 212 #define M24SR_MASK_IBLOCK 0x00
giovannivisentini 29:7a2dfd06cb29 213 #define M24SR_MASK_RBLOCK 0x80
giovannivisentini 29:7a2dfd06cb29 214 #define M24SR_MASK_SBLOCK 0xC0
giovannivisentini 29:7a2dfd06cb29 215
giovannivisentini 29:7a2dfd06cb29 216 /**
giovannivisentini 29:7a2dfd06cb29 217 * @}
giovannivisentini 29:7a2dfd06cb29 218 */
giovannivisentini 29:7a2dfd06cb29 219
giovannivisentini 29:7a2dfd06cb29 220 /**
giovannivisentini 29:7a2dfd06cb29 221 * @}
giovannivisentini 29:7a2dfd06cb29 222 */
giovannivisentini 29:7a2dfd06cb29 223
giovannivisentini 29:7a2dfd06cb29 224 /* Exported macro ------------------------------------------------------------*/
giovannivisentini 29:7a2dfd06cb29 225
giovannivisentini 29:7a2dfd06cb29 226 /** @brief Get Most Significant Byte
giovannivisentini 29:7a2dfd06cb29 227 * @param val: number where MSB must be extracted
giovannivisentini 29:7a2dfd06cb29 228 * @retval MSB
giovannivisentini 29:7a2dfd06cb29 229 */
giovannivisentini 29:7a2dfd06cb29 230 #define GETMSB(val) ( (uint8_t) ((val & 0xFF00 )>>8) )
giovannivisentini 29:7a2dfd06cb29 231
giovannivisentini 29:7a2dfd06cb29 232 /** @brief Get Least Significant Byte
giovannivisentini 29:7a2dfd06cb29 233 * @param val: number where LSB must be extracted
giovannivisentini 29:7a2dfd06cb29 234 * @retval LSB
giovannivisentini 29:7a2dfd06cb29 235 */
giovannivisentini 29:7a2dfd06cb29 236 #define GETLSB(val) ( (uint8_t) (val & 0x00FF ))
giovannivisentini 29:7a2dfd06cb29 237
giovannivisentini 29:7a2dfd06cb29 238 /** @brief Used to toggle the block number by adding 0 or 1 to default block number value
giovannivisentini 29:7a2dfd06cb29 239 * @param val: number to know if incrementation is needed
giovannivisentini 29:7a2dfd06cb29 240 * @retval 0 or 1 if incrementation needed
giovannivisentini 29:7a2dfd06cb29 241 */
giovannivisentini 29:7a2dfd06cb29 242 #define TOGGLE(val) ((val != 0x00)? 0x00 : 0x01)
giovannivisentini 29:7a2dfd06cb29 243
giovannivisentini 29:7a2dfd06cb29 244 typedef struct {
giovannivisentini 29:7a2dfd06cb29 245 C_APDU command;
giovannivisentini 29:7a2dfd06cb29 246 //static R_APDU Response;
giovannivisentini 29:7a2dfd06cb29 247 uint8_t dataBuffer[0xFF];
giovannivisentini 29:7a2dfd06cb29 248 uint8_t uM24SRbuffer[0xFF];
giovannivisentini 29:7a2dfd06cb29 249 uint8_t uDIDbyte;
giovannivisentini 29:7a2dfd06cb29 250 } M24SR_DrvDataTypeDef;
giovannivisentini 29:7a2dfd06cb29 251
giovannivisentini 29:7a2dfd06cb29 252 typedef void* M24SR_InitTypeDef;
giovannivisentini 29:7a2dfd06cb29 253
giovannivisentini 29:7a2dfd06cb29 254 extern NFC_t M24SR_IO_Init(void *handle);
giovannivisentini 29:7a2dfd06cb29 255 extern NFC_t M24SR_IO_IsAnswerReady(void *handle);
giovannivisentini 29:7a2dfd06cb29 256 extern NFC_t M24SR_IO_SendI2Ccommand(void *handle, uint8_t NbByte,
giovannivisentini 29:7a2dfd06cb29 257 uint8_t *pBuffer);
giovannivisentini 29:7a2dfd06cb29 258 extern NFC_t M24SR_IO_ReceiveI2Cresponse(void *handle,
giovannivisentini 29:7a2dfd06cb29 259 uint8_t NbByte, uint8_t *pBuffer);
giovannivisentini 29:7a2dfd06cb29 260 extern NFC_t M24SR_IO_PollI2C(void *handle);
giovannivisentini 29:7a2dfd06cb29 261 //extern void M24SR_IO_GPO_ReadPin(void *handle, GPIO_PinState *pPinState);
giovannivisentini 29:7a2dfd06cb29 262 //extern void M24SR_IO_RFDIS_WritePin(void *handle, GPIO_PinState PinState);
giovannivisentini 29:7a2dfd06cb29 263 extern void M24SR_IO_GPO_ReadPin(void *handle, uint8_t *pPinState);
giovannivisentini 29:7a2dfd06cb29 264 extern void M24SR_IO_RFDIS_WritePin(void *handle, uint8_t PinState);
giovannivisentini 29:7a2dfd06cb29 265 //extern void M24SR_IO_SetI2CSynchroMode(void *handle,
giovannivisentini 29:7a2dfd06cb29 266 // M24SR_WAITINGTIME_MGMT mode);
giovannivisentini 29:7a2dfd06cb29 267
giovannivisentini 29:7a2dfd06cb29 268 /**
giovannivisentini 29:7a2dfd06cb29 269 * @}
giovannivisentini 29:7a2dfd06cb29 270 */
giovannivisentini 29:7a2dfd06cb29 271
giovannivisentini 29:7a2dfd06cb29 272 /**
giovannivisentini 29:7a2dfd06cb29 273 * @}
giovannivisentini 29:7a2dfd06cb29 274 */
giovannivisentini 29:7a2dfd06cb29 275
giovannivisentini 29:7a2dfd06cb29 276 #ifdef __cplusplus
giovannivisentini 29:7a2dfd06cb29 277 }
giovannivisentini 29:7a2dfd06cb29 278 #endif
giovannivisentini 29:7a2dfd06cb29 279
giovannivisentini 29:7a2dfd06cb29 280 #endif /* __DRV_M24SR_H */
giovannivisentini 29:7a2dfd06cb29 281
giovannivisentini 29:7a2dfd06cb29 282 /******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/