This is a driver needed by NFCEEPROOM constructor for the ST ST25DV NFC chip.

Dependents:   mbed-os-example-nfc-EEPROM

Committer:
apalmieri
Date:
Tue Jan 28 15:54:19 2020 +0000
Revision:
0:dd89565c6276
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
apalmieri 0:dd89565c6276 1 /**
apalmieri 0:dd89565c6276 2 ******************************************************************************
apalmieri 0:dd89565c6276 3 * @file st25dv_driver.h
apalmieri 0:dd89565c6276 4 * @author ST Central Labs
apalmieri 0:dd89565c6276 5 * @brief This file provides a set of functions to interface with the ST25DV
apalmieri 0:dd89565c6276 6 * device.
apalmieri 0:dd89565c6276 7 ******************************************************************************
apalmieri 0:dd89565c6276 8 * @attention
apalmieri 0:dd89565c6276 9 *
apalmieri 0:dd89565c6276 10 * <h2><center>&copy; COPYRIGHT(c) 2020 STMicroelectronics</center></h2>
apalmieri 0:dd89565c6276 11 *
apalmieri 0:dd89565c6276 12 * Redistribution and use in source and binary forms, with or without modification,
apalmieri 0:dd89565c6276 13 * are permitted provided that the following conditions are met:
apalmieri 0:dd89565c6276 14 * 1. Redistributions of source code must retain the above copyright notice,
apalmieri 0:dd89565c6276 15 * this list of conditions and the following disclaimer.
apalmieri 0:dd89565c6276 16 * 2. Redistributions in binary form must reproduce the above copyright notice,
apalmieri 0:dd89565c6276 17 * this list of conditions and the following disclaimer in the documentation
apalmieri 0:dd89565c6276 18 * and/or other materials provided with the distribution.
apalmieri 0:dd89565c6276 19 * 3. Neither the name of STMicroelectronics nor the names of its contributors
apalmieri 0:dd89565c6276 20 * may be used to endorse or promote products derived from this software
apalmieri 0:dd89565c6276 21 * without specific prior written permission.
apalmieri 0:dd89565c6276 22 *
apalmieri 0:dd89565c6276 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
apalmieri 0:dd89565c6276 24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
apalmieri 0:dd89565c6276 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
apalmieri 0:dd89565c6276 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
apalmieri 0:dd89565c6276 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
apalmieri 0:dd89565c6276 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
apalmieri 0:dd89565c6276 29 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
apalmieri 0:dd89565c6276 30 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
apalmieri 0:dd89565c6276 31 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
apalmieri 0:dd89565c6276 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
apalmieri 0:dd89565c6276 33 *
apalmieri 0:dd89565c6276 34 ******************************************************************************
apalmieri 0:dd89565c6276 35 */
apalmieri 0:dd89565c6276 36
apalmieri 0:dd89565c6276 37 #ifndef ST25DV_H
apalmieri 0:dd89565c6276 38 #define ST25DV_H
apalmieri 0:dd89565c6276 39
apalmieri 0:dd89565c6276 40 #include <stdint.h>
apalmieri 0:dd89565c6276 41 #include <mbed.h>
apalmieri 0:dd89565c6276 42 #include "I2C.h"
apalmieri 0:dd89565c6276 43 #include "NFCEEPROMDriver.h"
apalmieri 0:dd89565c6276 44 #include "EventQueue.h"
apalmieri 0:dd89565c6276 45 #include "st25dv.h"
apalmieri 0:dd89565c6276 46
apalmieri 0:dd89565c6276 47 #if defined MBED_CONF_X_NUCLEO_NFC04A1
apalmieri 0:dd89565c6276 48
apalmieri 0:dd89565c6276 49 #define ST25DV_I2C_SDA_PIN D14
apalmieri 0:dd89565c6276 50 #define ST25DV_I2C_SCL_PIN D15
apalmieri 0:dd89565c6276 51 #define ST25DV_LPD_PIN D7
apalmieri 0:dd89565c6276 52 #define ST25DV_GPO_PIN D12
apalmieri 0:dd89565c6276 53 #define ST25DV_LED1_PIN D5
apalmieri 0:dd89565c6276 54 #define ST25DV_LED2_PIN D4
apalmieri 0:dd89565c6276 55 #define ST25DV_LED3_PIN D2
apalmieri 0:dd89565c6276 56
apalmieri 0:dd89565c6276 57 #else
apalmieri 0:dd89565c6276 58
apalmieri 0:dd89565c6276 59 #define ST25DV_I2C_SDA_PIN NC
apalmieri 0:dd89565c6276 60 #define ST25DV_I2C_SCL_PIN NC
apalmieri 0:dd89565c6276 61 #define ST25DV_LPD_PIN NC
apalmieri 0:dd89565c6276 62 #define ST25DV_GPO_PIN NC
apalmieri 0:dd89565c6276 63 #define ST25DV_LED1_PIN NC
apalmieri 0:dd89565c6276 64 #define ST25DV_LED2_PIN NC
apalmieri 0:dd89565c6276 65 #define ST25DV_LED3_PIN NC
apalmieri 0:dd89565c6276 66
apalmieri 0:dd89565c6276 67 #endif
apalmieri 0:dd89565c6276 68
apalmieri 0:dd89565c6276 69 namespace mbed {
apalmieri 0:dd89565c6276 70 namespace nfc {
apalmieri 0:dd89565c6276 71 namespace vendor {
apalmieri 0:dd89565c6276 72 namespace ST {
apalmieri 0:dd89565c6276 73
apalmieri 0:dd89565c6276 74 #ifndef MIN
apalmieri 0:dd89565c6276 75 #define MIN(x, y) (((x) < (y)) ? (x) : (y))
apalmieri 0:dd89565c6276 76 #endif
apalmieri 0:dd89565c6276 77
apalmieri 0:dd89565c6276 78 #define NFCTAG_4K_SIZE ((uint32_t) 0x200)
apalmieri 0:dd89565c6276 79 #define NFCTAG_16K_SIZE ((uint32_t) 0x800)
apalmieri 0:dd89565c6276 80 #define NFCTAG_64K_SIZE ((uint32_t) 0x2000)
apalmieri 0:dd89565c6276 81
apalmieri 0:dd89565c6276 82 #define MAX_NDEF_MEM 0x200
apalmieri 0:dd89565c6276 83 #define ST25DV_MAX_SIZE NFCTAG_4K_SIZE
apalmieri 0:dd89565c6276 84 #define ST25DV_NDEF_MAX_SIZE MIN(ST25DV_MAX_SIZE,MAX_NDEF_MEM)
apalmieri 0:dd89565c6276 85 #define NFC_DEVICE_MAX_NDEFMEMORY ST25DV_NDEF_MAX_SIZE
apalmieri 0:dd89565c6276 86
apalmieri 0:dd89565c6276 87 /* Error codes for Higher level */
apalmieri 0:dd89565c6276 88 #define NDEF_OK 0
apalmieri 0:dd89565c6276 89 #define NDEF_ERROR 1
apalmieri 0:dd89565c6276 90 #define NDEF_ERROR_MEMORY_TAG 2
apalmieri 0:dd89565c6276 91 #define NDEF_ERROR_MEMORY_INTERNAL 3
apalmieri 0:dd89565c6276 92 #define NDEF_ERROR_LOCKED 4
apalmieri 0:dd89565c6276 93 #define NDEF_ERROR_NOT_FORMATTED 5
apalmieri 0:dd89565c6276 94
apalmieri 0:dd89565c6276 95 #define NDEF_MAX_SIZE NFC_DEVICE_MAX_NDEFMEMORY
apalmieri 0:dd89565c6276 96 #define NDEF_RECORD_MAX_SIZE NFC_DEVICE_MAX_NDEFMEMORY
apalmieri 0:dd89565c6276 97
apalmieri 0:dd89565c6276 98 /** @brief Memory size value indicating that this is a 8-bytes Capability Container */
apalmieri 0:dd89565c6276 99 #define NFCT5_EXTENDED_CCFILE 0x00
apalmieri 0:dd89565c6276 100 /** @brief Capability container version 1.0 */
apalmieri 0:dd89565c6276 101 #define NFCT5_VERSION_V1_0 0x40
apalmieri 0:dd89565c6276 102 /** @brief Read access condition mask for the Capability Container byte1 */
apalmieri 0:dd89565c6276 103 #define NFCT5_READ_ACCESS 0x0C
apalmieri 0:dd89565c6276 104 /** @brief Write access condition mask for the Capability Container byte1 */
apalmieri 0:dd89565c6276 105 #define NFCT5_WRITE_ACCESS 0x03
apalmieri 0:dd89565c6276 106
apalmieri 0:dd89565c6276 107 /** @brief Type5 Tag NDEF message TLV-Type. */
apalmieri 0:dd89565c6276 108 #define NFCT5_NDEF_MSG_TLV ((uint8_t) 0x03)
apalmieri 0:dd89565c6276 109 /** @brief Type5 Tag Proprietary message TLV-Type. */
apalmieri 0:dd89565c6276 110 #define NFCT5_PROPRIETARY_TLV ((uint8_t) 0xFD)
apalmieri 0:dd89565c6276 111 /** @brief Type5 Tag Terminator TLV-Type. */
apalmieri 0:dd89565c6276 112 #define NFCT5_TERMINATOR_TLV ((uint8_t) 0xFE)
apalmieri 0:dd89565c6276 113 /** @brief TLV-Length indicating a 4-bytes TLV (Length coded on 2 bytes). */
apalmieri 0:dd89565c6276 114 #define NFCT5_3_BYTES_L_TLV ((uint8_t) 0xFF)
apalmieri 0:dd89565c6276 115
apalmieri 0:dd89565c6276 116 #define MAX_NDEF_SIZE NFC_DEVICE_MAX_NDEFMEMORY
apalmieri 0:dd89565c6276 117
apalmieri 0:dd89565c6276 118 typedef enum
apalmieri 0:dd89565c6276 119 {
apalmieri 0:dd89565c6276 120 TT5_NO_NDEF = 0, /**< No data detected in the tag. */
apalmieri 0:dd89565c6276 121 TT5_INITIALIZED, /**< Capability container detected. */
apalmieri 0:dd89565c6276 122 TT5_READ_WRITE, /**< Read-Write data detected. */
apalmieri 0:dd89565c6276 123 TT5_READ /**< Read-Only data message detected. */
apalmieri 0:dd89565c6276 124 } TT5_State;
apalmieri 0:dd89565c6276 125
apalmieri 0:dd89565c6276 126 /** @brief Type5 Tag Capability Container Magic numbers as defined by the NFC Forum. */
apalmieri 0:dd89565c6276 127 typedef enum {
apalmieri 0:dd89565c6276 128 NFCT5_MAGICNUMBER_E1_CCFILE = 0xE1, /**< Complete data area can be read by 1-byte block adrdess commands. */
apalmieri 0:dd89565c6276 129 NFCT5_MAGICNUMBER_E2_CCFILE = 0xE2 /**< Last part of the data area can be only read by 2-bytes block address commands.\n
apalmieri 0:dd89565c6276 130 The first 256 blocks can be read by 1-byte block address commands. */
apalmieri 0:dd89565c6276 131 } TT5_MagicNumber_t;
apalmieri 0:dd89565c6276 132
apalmieri 0:dd89565c6276 133 /**
apalmieri 0:dd89565c6276 134 * @brief Type5 Tag Capability Container structure.
apalmieri 0:dd89565c6276 135 */
apalmieri 0:dd89565c6276 136 typedef struct
apalmieri 0:dd89565c6276 137 {
apalmieri 0:dd89565c6276 138 TT5_MagicNumber_t MagicNumber; /**< CCfile[0]: Magic Number should be E1h or E2h (for extended API) */
apalmieri 0:dd89565c6276 139 uint8_t Version; /**< CCfile[1]: Capability container version (b7-b4) and access conditions (b3-b0) */
apalmieri 0:dd89565c6276 140 uint8_t MemorySize; /**< CCfile[2]: Memory size, expressed in 8 bytes blocks, set to 0 if tag size is greater than 16kbits. */
apalmieri 0:dd89565c6276 141 uint8_t TT5Tag; /**< CCfile[3]: Additionnal information on the Type5 Tag:\n
apalmieri 0:dd89565c6276 142 b0: supports `read multiple block` commands\n
apalmieri 0:dd89565c6276 143 b1: RFU\n
apalmieri 0:dd89565c6276 144 b2: RFU\n
apalmieri 0:dd89565c6276 145 b3: supports `lock block` commands\n
apalmieri 0:dd89565c6276 146 b4: requires the `special frame` format
apalmieri 0:dd89565c6276 147 */
apalmieri 0:dd89565c6276 148 uint8_t rsved1; /**< RFU */
apalmieri 0:dd89565c6276 149 uint8_t rsved2; /**< RFU */
apalmieri 0:dd89565c6276 150 uint16_t ExtMemorySize; /**< CCfile[6],CCfile[7]: Memory size, expressed in 8 bytes blocks, when tag size is greater than 16kbits. */
apalmieri 0:dd89565c6276 151 TT5_State State; /**< Indicates if a NDEF message is present. */
apalmieri 0:dd89565c6276 152 uint32_t NDEF_offset; /**< Indicates the address of a NDEF message in the tag. */
apalmieri 0:dd89565c6276 153 }sCCFileInfo;
apalmieri 0:dd89565c6276 154
apalmieri 0:dd89565c6276 155 /** @brief Type5 Tag Type-Length-Value structure as defined by the NFC Forum */
apalmieri 0:dd89565c6276 156 typedef struct
apalmieri 0:dd89565c6276 157 {
apalmieri 0:dd89565c6276 158 uint8_t Type; /**< NFC Forum message Type */
apalmieri 0:dd89565c6276 159 uint8_t Length; /**< Message length if lesser than 255 bytes */
apalmieri 0:dd89565c6276 160 uint16_t Length16; /**< Message length if greater than or equal to 255 bytes */
apalmieri 0:dd89565c6276 161 } TT5_TLV_t;
apalmieri 0:dd89565c6276 162
apalmieri 0:dd89565c6276 163 class ST25dvDriver : public NFCEEPROMDriver {
apalmieri 0:dd89565c6276 164
apalmieri 0:dd89565c6276 165 public:
apalmieri 0:dd89565c6276 166 /** Create the driver, default pin names will be used appropriate for the board.
apalmieri 0:dd89565c6276 167 * @param i2c_data_pin I2C data pin name.
apalmieri 0:dd89565c6276 168 * @param i2c_clock_pin I2C clock pin name.
apalmieri 0:dd89565c6276 169 * @param gpo_pin I2C GPO pin name.
apalmieri 0:dd89565c6276 170 * @param rf_disable_pin pin name for breaking the RF connection.
apalmieri 0:dd89565c6276 171 */
apalmieri 0:dd89565c6276 172 ST25dvDriver(PinName i2c_data_pin = ST25DV_I2C_SDA_PIN,
apalmieri 0:dd89565c6276 173 PinName i2c_clock_pin = ST25DV_I2C_SCL_PIN,
apalmieri 0:dd89565c6276 174 PinName led1_pin = ST25DV_LED1_PIN,
apalmieri 0:dd89565c6276 175 PinName led2_pin = ST25DV_LED2_PIN,
apalmieri 0:dd89565c6276 176 PinName led3_pin = ST25DV_LED3_PIN,
apalmieri 0:dd89565c6276 177 PinName lpd_pin = ST25DV_LPD_PIN,
apalmieri 0:dd89565c6276 178 PinName gpo_pin = ST25DV_GPO_PIN);
apalmieri 0:dd89565c6276 179
apalmieri 0:dd89565c6276 180 virtual ~ST25dvDriver() { }
apalmieri 0:dd89565c6276 181
apalmieri 0:dd89565c6276 182 /** @see NFCEEPROMDriver::reset
apalmieri 0:dd89565c6276 183 */
apalmieri 0:dd89565c6276 184 virtual void reset() {
apalmieri 0:dd89565c6276 185 printf("reset\r\n");
apalmieri 0:dd89565c6276 186 begin();
apalmieri 0:dd89565c6276 187 }
apalmieri 0:dd89565c6276 188
apalmieri 0:dd89565c6276 189 /** @see NFCEEPROMDriver::get_max_size
apalmieri 0:dd89565c6276 190 */
apalmieri 0:dd89565c6276 191 virtual size_t read_max_size() {
apalmieri 0:dd89565c6276 192 return MAX_NDEF_SIZE;
apalmieri 0:dd89565c6276 193 }
apalmieri 0:dd89565c6276 194
apalmieri 0:dd89565c6276 195 /** @see NFCEEPROMDriver::start_session
apalmieri 0:dd89565c6276 196 */
apalmieri 0:dd89565c6276 197 virtual void start_session(bool force = true) {
apalmieri 0:dd89565c6276 198 printf("start_session\r\n");
apalmieri 0:dd89565c6276 199 if(_is_device_inited) {
apalmieri 0:dd89565c6276 200 _is_session_started = true;
apalmieri 0:dd89565c6276 201 delegate()->on_session_started(true);
apalmieri 0:dd89565c6276 202 } else {
apalmieri 0:dd89565c6276 203 delegate()->on_session_started(false);
apalmieri 0:dd89565c6276 204 }
apalmieri 0:dd89565c6276 205 }
apalmieri 0:dd89565c6276 206
apalmieri 0:dd89565c6276 207 /** @see NFCEEPROMDriver::end_session
apalmieri 0:dd89565c6276 208 */
apalmieri 0:dd89565c6276 209 virtual void end_session() {
apalmieri 0:dd89565c6276 210 printf("end_session\r\n");
apalmieri 0:dd89565c6276 211 if(_is_session_started) {
apalmieri 0:dd89565c6276 212 _is_session_started = false;
apalmieri 0:dd89565c6276 213 delegate()->on_session_ended(true);
apalmieri 0:dd89565c6276 214 } else {
apalmieri 0:dd89565c6276 215 delegate()->on_session_ended(false);
apalmieri 0:dd89565c6276 216 }
apalmieri 0:dd89565c6276 217 }
apalmieri 0:dd89565c6276 218
apalmieri 0:dd89565c6276 219 /** @see NFCEEPROMDriver::read_bytes
apalmieri 0:dd89565c6276 220 */
apalmieri 0:dd89565c6276 221 virtual void read_bytes(uint32_t address, uint8_t* bytes, size_t count) {
apalmieri 0:dd89565c6276 222 int ret;
apalmieri 0:dd89565c6276 223 printf("read_bytes\r\n");
apalmieri 0:dd89565c6276 224
apalmieri 0:dd89565c6276 225 if (address > _ndef_size) {
apalmieri 0:dd89565c6276 226 delegate()->on_bytes_read(0);
apalmieri 0:dd89565c6276 227 return;
apalmieri 0:dd89565c6276 228 }
apalmieri 0:dd89565c6276 229
apalmieri 0:dd89565c6276 230 ret = read_data(address, bytes, count);
apalmieri 0:dd89565c6276 231 printf("read_bytes read_data ret =%d count=%d bytes=%s\r\n", ret, count, bytes);
apalmieri 0:dd89565c6276 232 if(ret != 0) {
apalmieri 0:dd89565c6276 233 delegate()->on_bytes_read(0);
apalmieri 0:dd89565c6276 234 } else {
apalmieri 0:dd89565c6276 235 delegate()->on_bytes_read(count);
apalmieri 0:dd89565c6276 236 }
apalmieri 0:dd89565c6276 237 }
apalmieri 0:dd89565c6276 238
apalmieri 0:dd89565c6276 239 /** @see NFCEEPROMDriver::write_bytes
apalmieri 0:dd89565c6276 240 */
apalmieri 0:dd89565c6276 241 virtual void write_bytes(uint32_t address, const uint8_t* bytes, size_t count) {
apalmieri 0:dd89565c6276 242 int ret;
apalmieri 0:dd89565c6276 243 printf("write_bytes\r\n");
apalmieri 0:dd89565c6276 244 if (address > _ndef_size) {
apalmieri 0:dd89565c6276 245 delegate()->on_bytes_written(0);
apalmieri 0:dd89565c6276 246 printf("write_bytes error (address > _ndef_size)\r\n");
apalmieri 0:dd89565c6276 247 return;
apalmieri 0:dd89565c6276 248 }
apalmieri 0:dd89565c6276 249
apalmieri 0:dd89565c6276 250 ret = write_data(address, bytes, count);
apalmieri 0:dd89565c6276 251 printf("write_bytes write_data ret =%d count=%d bytes=%s\r\n", ret, count, bytes);
apalmieri 0:dd89565c6276 252 if(ret != 0) {
apalmieri 0:dd89565c6276 253 delegate()->on_bytes_written(0);
apalmieri 0:dd89565c6276 254 } else {
apalmieri 0:dd89565c6276 255 delegate()->on_bytes_written(count);
apalmieri 0:dd89565c6276 256 }
apalmieri 0:dd89565c6276 257 }
apalmieri 0:dd89565c6276 258
apalmieri 0:dd89565c6276 259 /** @see NFCEEPROMDriver::write_size
apalmieri 0:dd89565c6276 260 */
apalmieri 0:dd89565c6276 261 virtual void write_size(size_t count) {
apalmieri 0:dd89565c6276 262 int ret;
apalmieri 0:dd89565c6276 263 printf("write_size (count=%d)\r\n", count);
apalmieri 0:dd89565c6276 264 if (!_is_session_started) {
apalmieri 0:dd89565c6276 265 delegate()->on_size_written(false);
apalmieri 0:dd89565c6276 266 return;
apalmieri 0:dd89565c6276 267 }
apalmieri 0:dd89565c6276 268 _ndef_size = count;
apalmieri 0:dd89565c6276 269
apalmieri 0:dd89565c6276 270 ret = set_size(count);
apalmieri 0:dd89565c6276 271 if(ret != 0) {
apalmieri 0:dd89565c6276 272 delegate()->on_size_written(false);
apalmieri 0:dd89565c6276 273 } else {
apalmieri 0:dd89565c6276 274 delegate()->on_size_written(true);
apalmieri 0:dd89565c6276 275 }
apalmieri 0:dd89565c6276 276 }
apalmieri 0:dd89565c6276 277
apalmieri 0:dd89565c6276 278 /** @see NFCEEPROMDriver::read_size
apalmieri 0:dd89565c6276 279 */
apalmieri 0:dd89565c6276 280 virtual void read_size() {
apalmieri 0:dd89565c6276 281 int ret;
apalmieri 0:dd89565c6276 282 printf("read_size\r\n");
apalmieri 0:dd89565c6276 283 if (!_is_session_started) {
apalmieri 0:dd89565c6276 284 delegate()->on_size_read(false, 0);
apalmieri 0:dd89565c6276 285 return;
apalmieri 0:dd89565c6276 286 }
apalmieri 0:dd89565c6276 287
apalmieri 0:dd89565c6276 288 ret = get_size();
apalmieri 0:dd89565c6276 289 if(ret != 0) {
apalmieri 0:dd89565c6276 290 delegate()->on_size_read(false, 0);
apalmieri 0:dd89565c6276 291 } else {
apalmieri 0:dd89565c6276 292 delegate()->on_size_read(true, _ndef_size);
apalmieri 0:dd89565c6276 293 }
apalmieri 0:dd89565c6276 294 printf("read_size _ndef_size=%d\r\n", _ndef_size);
apalmieri 0:dd89565c6276 295 }
apalmieri 0:dd89565c6276 296
apalmieri 0:dd89565c6276 297 /** @see NFCEEPROMDriver::erase_bytes
apalmieri 0:dd89565c6276 298 */
apalmieri 0:dd89565c6276 299 virtual void erase_bytes(uint32_t address, size_t size) {
apalmieri 0:dd89565c6276 300 printf("erase_bytes\r\n");
apalmieri 0:dd89565c6276 301 write_data(address, NULL, size);
apalmieri 0:dd89565c6276 302 }
apalmieri 0:dd89565c6276 303
apalmieri 0:dd89565c6276 304 private:
apalmieri 0:dd89565c6276 305 int begin();
apalmieri 0:dd89565c6276 306 int read_data(uint32_t address, uint8_t* bytes, size_t count);
apalmieri 0:dd89565c6276 307 int write_data(uint32_t address, const uint8_t* bytes, size_t count);
apalmieri 0:dd89565c6276 308 int get_size(void);
apalmieri 0:dd89565c6276 309 int set_size(size_t count);
apalmieri 0:dd89565c6276 310
apalmieri 0:dd89565c6276 311 NFCTAG_StatusTypeDef NFCTAG_Init(void);
apalmieri 0:dd89565c6276 312 NFCTAG_StatusTypeDef NFCTAG_ReadData(uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size);
apalmieri 0:dd89565c6276 313 NFCTAG_StatusTypeDef NFCTAG_WriteData(const uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size);
apalmieri 0:dd89565c6276 314 uint32_t NFCTAG_GetByteSize(void);
apalmieri 0:dd89565c6276 315 NFCTAG_ExtDrvTypeDef *NFCTAG_GetExtended_Drv(void);
apalmieri 0:dd89565c6276 316 uint16_t NfcType5_NDEFDetection(void);
apalmieri 0:dd89565c6276 317 uint16_t NfcType5_TT5Init(void);
apalmieri 0:dd89565c6276 318 uint16_t NfcType5_WriteCCFile( const uint8_t * const pCCBuffer );
apalmieri 0:dd89565c6276 319 uint16_t NfcType5_ReadCCFile( uint8_t * const pCCBuffer );
apalmieri 0:dd89565c6276 320 uint16_t NfcType5_ReadNDEF(uint8_t* pData);
apalmieri 0:dd89565c6276 321 uint16_t NfcType5_WriteNDEF(uint16_t Length, uint8_t* pData);
apalmieri 0:dd89565c6276 322 uint16_t NfcType5_GetLength(uint16_t* Length);
apalmieri 0:dd89565c6276 323 uint16_t NfcType5_SetLength(uint16_t Length);
apalmieri 0:dd89565c6276 324
apalmieri 0:dd89565c6276 325 void ledOn(DigitalOut led);
apalmieri 0:dd89565c6276 326 void ledOff(DigitalOut led);
apalmieri 0:dd89565c6276 327
apalmieri 0:dd89565c6276 328 I2C _i2c_channel;
apalmieri 0:dd89565c6276 329 NFCTAG_DrvTypeDef *Nfctag_Drv;
apalmieri 0:dd89565c6276 330 sCCFileInfo CCFileStruct;
apalmieri 0:dd89565c6276 331
apalmieri 0:dd89565c6276 332 DigitalOut _led1_pin;
apalmieri 0:dd89565c6276 333 DigitalOut _led2_pin;
apalmieri 0:dd89565c6276 334 DigitalOut _led3_pin;
apalmieri 0:dd89565c6276 335 DigitalOut _lpd_pin;
apalmieri 0:dd89565c6276 336 DigitalIn _gpo_pin;
apalmieri 0:dd89565c6276 337
apalmieri 0:dd89565c6276 338 uint16_t _ndef_size;
apalmieri 0:dd89565c6276 339
apalmieri 0:dd89565c6276 340 bool _is_device_inited;
apalmieri 0:dd89565c6276 341 bool _is_session_started;
apalmieri 0:dd89565c6276 342 };
apalmieri 0:dd89565c6276 343
apalmieri 0:dd89565c6276 344 } //ST
apalmieri 0:dd89565c6276 345 } //vendor
apalmieri 0:dd89565c6276 346 } //nfc
apalmieri 0:dd89565c6276 347 } //mbed
apalmieri 0:dd89565c6276 348
apalmieri 0:dd89565c6276 349 #endif // ST25DV_H
apalmieri 0:dd89565c6276 350
apalmieri 0:dd89565c6276 351 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/