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