![](/media/cache/group/ST_logo_2020_blue_V_cmyk.jpg.50x50_q85.jpg)
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 .
Samples/SampleAsync_lockWriteTag.cpp@20:ba95e0dc5975, 2017-08-21 (annotated)
- Committer:
- giovannivisentini
- Date:
- Mon Aug 21 12:12:30 2017 +0000
- Revision:
- 20:ba95e0dc5975
- Parent:
- 18:d596eb3f575f
update NDefLib and mbed libs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Davidroid | 18:d596eb3f575f | 1 | /** |
Davidroid | 18:d596eb3f575f | 2 | ****************************************************************************** |
Davidroid | 18:d596eb3f575f | 3 | * @file SampleAsync_lockWriteTag.cpp |
Davidroid | 18:d596eb3f575f | 4 | * @author ST / Central Labs |
Davidroid | 18:d596eb3f575f | 5 | * @date 03 Dic 2015 |
Davidroid | 18:d596eb3f575f | 6 | * @brief This demo define a lock/unlock the tag content when the user press |
Davidroid | 18:d596eb3f575f | 7 | * the user button |
Davidroid | 18:d596eb3f575f | 8 | ****************************************************************************** |
Davidroid | 18:d596eb3f575f | 9 | * |
Davidroid | 18:d596eb3f575f | 10 | * COPYRIGHT(c) 2015 STMicroelectronics |
Davidroid | 18:d596eb3f575f | 11 | * |
Davidroid | 18:d596eb3f575f | 12 | * Redistribution and use in source and binary forms, with or without modification, |
Davidroid | 18:d596eb3f575f | 13 | * are permitted provided that the following conditions are met: |
Davidroid | 18:d596eb3f575f | 14 | * 1. Redistributions of source code must retain the above copyright notice, |
Davidroid | 18:d596eb3f575f | 15 | * this list of conditions and the following disclaimer. |
Davidroid | 18:d596eb3f575f | 16 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
Davidroid | 18:d596eb3f575f | 17 | * this list of conditions and the following disclaimer in the documentation |
Davidroid | 18:d596eb3f575f | 18 | * and/or other materials provided with the distribution. |
Davidroid | 18:d596eb3f575f | 19 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
Davidroid | 18:d596eb3f575f | 20 | * may be used to endorse or promote products derived from this software |
Davidroid | 18:d596eb3f575f | 21 | * without specific prior written permission. |
Davidroid | 18:d596eb3f575f | 22 | * |
Davidroid | 18:d596eb3f575f | 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
Davidroid | 18:d596eb3f575f | 24 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
Davidroid | 18:d596eb3f575f | 25 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
Davidroid | 18:d596eb3f575f | 26 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
Davidroid | 18:d596eb3f575f | 27 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
Davidroid | 18:d596eb3f575f | 28 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
Davidroid | 18:d596eb3f575f | 29 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
Davidroid | 18:d596eb3f575f | 30 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
Davidroid | 18:d596eb3f575f | 31 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
Davidroid | 18:d596eb3f575f | 32 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Davidroid | 18:d596eb3f575f | 33 | * |
Davidroid | 18:d596eb3f575f | 34 | ****************************************************************************** |
Davidroid | 18:d596eb3f575f | 35 | */ |
Davidroid | 18:d596eb3f575f | 36 | |
Davidroid | 18:d596eb3f575f | 37 | #include "mbed.h" |
Davidroid | 18:d596eb3f575f | 38 | |
Davidroid | 18:d596eb3f575f | 39 | #include "XNucleoNFC01A1.h" |
Davidroid | 18:d596eb3f575f | 40 | |
Davidroid | 18:d596eb3f575f | 41 | static volatile bool buttonPress=false; /// true when the user press the message |
Davidroid | 18:d596eb3f575f | 42 | static volatile bool nfcEvent=false; /// true when the user press the message |
Davidroid | 18:d596eb3f575f | 43 | |
Davidroid | 18:d596eb3f575f | 44 | static void set_nfc_event_callback(){ |
Davidroid | 18:d596eb3f575f | 45 | nfcEvent=true; |
Davidroid | 18:d596eb3f575f | 46 | }//if buttonPress |
Davidroid | 18:d596eb3f575f | 47 | |
Davidroid | 18:d596eb3f575f | 48 | /** |
Davidroid | 18:d596eb3f575f | 49 | * Call back called when the user press the button. |
Davidroid | 18:d596eb3f575f | 50 | */ |
Davidroid | 18:d596eb3f575f | 51 | static void set_button_press(){ |
Davidroid | 18:d596eb3f575f | 52 | buttonPress=true; |
Davidroid | 18:d596eb3f575f | 53 | }//if buttonPress |
Davidroid | 18:d596eb3f575f | 54 | |
Davidroid | 18:d596eb3f575f | 55 | /** |
Davidroid | 18:d596eb3f575f | 56 | * Class with the command chain needed to remove all the read/write password |
Davidroid | 18:d596eb3f575f | 57 | */ |
Davidroid | 18:d596eb3f575f | 58 | class RemoveAllPasswordStatusCallback : public M24SR::Callbacks { |
Davidroid | 18:d596eb3f575f | 59 | |
Davidroid | 18:d596eb3f575f | 60 | public: |
Davidroid | 18:d596eb3f575f | 61 | |
Davidroid | 18:d596eb3f575f | 62 | RemoveAllPasswordStatusCallback():mIsComamndRunning(false){} |
Davidroid | 18:d596eb3f575f | 63 | |
Davidroid | 18:d596eb3f575f | 64 | /** |
Davidroid | 18:d596eb3f575f | 65 | * True when the command chain finish, and the tag can now be read and write |
Davidroid | 18:d596eb3f575f | 66 | * @return true if the command chain finish |
Davidroid | 18:d596eb3f575f | 67 | */ |
Davidroid | 18:d596eb3f575f | 68 | bool is_finish(){ |
Davidroid | 18:d596eb3f575f | 69 | return !mIsComamndRunning; |
Davidroid | 18:d596eb3f575f | 70 | } |
Davidroid | 18:d596eb3f575f | 71 | |
Davidroid | 18:d596eb3f575f | 72 | |
Davidroid | 18:d596eb3f575f | 73 | private: |
Davidroid | 18:d596eb3f575f | 74 | bool mIsComamndRunning; /// false when the command chain finish |
Davidroid | 18:d596eb3f575f | 75 | |
Davidroid | 18:d596eb3f575f | 76 | /** |
Davidroid | 18:d596eb3f575f | 77 | * end the command chain and print an error message |
Davidroid | 18:d596eb3f575f | 78 | * @param status error code of the last command |
Davidroid | 18:d596eb3f575f | 79 | */ |
Davidroid | 18:d596eb3f575f | 80 | void on_error(const M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 81 | mIsComamndRunning=false; |
Davidroid | 18:d596eb3f575f | 82 | printf("Error Code: %X \r\n",status); |
Davidroid | 18:d596eb3f575f | 83 | } |
Davidroid | 18:d596eb3f575f | 84 | |
Davidroid | 18:d596eb3f575f | 85 | virtual void on_session_open(M24SR *tag,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 86 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 87 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 88 | } |
Davidroid | 18:d596eb3f575f | 89 | mIsComamndRunning=true; |
Davidroid | 18:d596eb3f575f | 90 | printf("Session Opened\r\n"); |
Davidroid | 18:d596eb3f575f | 91 | tag->select_application(); |
Davidroid | 18:d596eb3f575f | 92 | } |
Davidroid | 18:d596eb3f575f | 93 | |
Davidroid | 18:d596eb3f575f | 94 | virtual void on_selected_application(M24SR *tag,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 95 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 96 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 97 | } |
Davidroid | 18:d596eb3f575f | 98 | |
Davidroid | 18:d596eb3f575f | 99 | printf("Select application\r\n"); |
Davidroid | 18:d596eb3f575f | 100 | tag->select_NDEF_file(0x0001); |
Davidroid | 18:d596eb3f575f | 101 | } |
Davidroid | 18:d596eb3f575f | 102 | |
Davidroid | 18:d596eb3f575f | 103 | virtual void on_selected_NDEF_file(M24SR *tag,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 104 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 105 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 106 | } |
Davidroid | 18:d596eb3f575f | 107 | |
Davidroid | 18:d596eb3f575f | 108 | printf("Select NDef\r\n"); |
Davidroid | 18:d596eb3f575f | 109 | tag->disable_all_password(M24SR::DEFAULT_PASSWORD); |
Davidroid | 18:d596eb3f575f | 110 | } |
Davidroid | 18:d596eb3f575f | 111 | |
Davidroid | 18:d596eb3f575f | 112 | virtual void on_disable_all_password(M24SR *tag, M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 113 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 114 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 115 | } |
Davidroid | 18:d596eb3f575f | 116 | |
Davidroid | 18:d596eb3f575f | 117 | printf("Disable all Password\r\n"); |
Davidroid | 18:d596eb3f575f | 118 | tag->deselect(); |
Davidroid | 18:d596eb3f575f | 119 | } |
Davidroid | 18:d596eb3f575f | 120 | |
Davidroid | 18:d596eb3f575f | 121 | virtual void on_deselect(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 122 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 123 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 124 | } |
Davidroid | 18:d596eb3f575f | 125 | |
Davidroid | 18:d596eb3f575f | 126 | printf("Close Application\r\n"); |
Davidroid | 18:d596eb3f575f | 127 | mIsComamndRunning=false; |
Davidroid | 18:d596eb3f575f | 128 | } |
Davidroid | 18:d596eb3f575f | 129 | |
Davidroid | 18:d596eb3f575f | 130 | }; |
Davidroid | 18:d596eb3f575f | 131 | |
Davidroid | 18:d596eb3f575f | 132 | /** |
Davidroid | 18:d596eb3f575f | 133 | * Chain of call needed to change the tag status between read only and write/read |
Davidroid | 18:d596eb3f575f | 134 | */ |
Davidroid | 18:d596eb3f575f | 135 | class ChangeTagStatusCallback : public M24SR::Callbacks { |
Davidroid | 18:d596eb3f575f | 136 | |
Davidroid | 18:d596eb3f575f | 137 | M24SR &mNfcTag; /// object to change |
Davidroid | 18:d596eb3f575f | 138 | DigitalOut& mReadOnlyLed; /// led to switch on when it is in read only mode |
Davidroid | 18:d596eb3f575f | 139 | DigitalOut& mReadWriteWriteLed; /// led to switch on when is in read/write mode |
Davidroid | 18:d596eb3f575f | 140 | |
Davidroid | 18:d596eb3f575f | 141 | bool mIsReadOnly; /// current tag status |
Davidroid | 18:d596eb3f575f | 142 | bool mIsComamndRunning; /// true if the chain is running |
Davidroid | 18:d596eb3f575f | 143 | |
Davidroid | 18:d596eb3f575f | 144 | public: |
Davidroid | 18:d596eb3f575f | 145 | |
Davidroid | 18:d596eb3f575f | 146 | /** |
Davidroid | 18:d596eb3f575f | 147 | * Build a chain of callback needed to change the tag status. |
Davidroid | 18:d596eb3f575f | 148 | * @param nfcTag Tag to change. |
Davidroid | 18:d596eb3f575f | 149 | * @param readLed Led to switch on when in read only mode. |
Davidroid | 18:d596eb3f575f | 150 | * @param writeLed Led to switch on when in read/write mode. |
Davidroid | 18:d596eb3f575f | 151 | */ |
Davidroid | 18:d596eb3f575f | 152 | ChangeTagStatusCallback(M24SR &nfcTag, DigitalOut& readLed, DigitalOut& writeLed): |
Davidroid | 18:d596eb3f575f | 153 | mNfcTag(nfcTag),mReadOnlyLed(readLed),mReadWriteWriteLed(writeLed),mIsReadOnly(false), |
Davidroid | 18:d596eb3f575f | 154 | mIsComamndRunning(false){ |
Davidroid | 18:d596eb3f575f | 155 | mReadOnlyLed=false; |
Davidroid | 18:d596eb3f575f | 156 | mReadWriteWriteLed=true; |
Davidroid | 18:d596eb3f575f | 157 | } |
Davidroid | 18:d596eb3f575f | 158 | |
Davidroid | 18:d596eb3f575f | 159 | /** |
Davidroid | 18:d596eb3f575f | 160 | * Change the tag status |
Davidroid | 18:d596eb3f575f | 161 | */ |
Davidroid | 18:d596eb3f575f | 162 | void change_status(){ |
Davidroid | 18:d596eb3f575f | 163 | mIsReadOnly=!mIsReadOnly; |
Davidroid | 18:d596eb3f575f | 164 | //if it is not running a previous command |
Davidroid | 18:d596eb3f575f | 165 | if(!mIsComamndRunning){ |
Davidroid | 18:d596eb3f575f | 166 | mNfcTag.get_session(); |
Davidroid | 18:d596eb3f575f | 167 | }//if |
Davidroid | 18:d596eb3f575f | 168 | }//changeStatus; |
Davidroid | 18:d596eb3f575f | 169 | |
Davidroid | 18:d596eb3f575f | 170 | private: |
Davidroid | 18:d596eb3f575f | 171 | |
Davidroid | 18:d596eb3f575f | 172 | /** |
Davidroid | 18:d596eb3f575f | 173 | * When an error happen switch on both the led and print the error code. |
Davidroid | 18:d596eb3f575f | 174 | * @param status Error code. |
Davidroid | 18:d596eb3f575f | 175 | */ |
Davidroid | 18:d596eb3f575f | 176 | void on_error(const M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 177 | mIsComamndRunning=false; |
Davidroid | 18:d596eb3f575f | 178 | mReadOnlyLed=true; |
Davidroid | 18:d596eb3f575f | 179 | mReadWriteWriteLed=true; |
Davidroid | 18:d596eb3f575f | 180 | printf("Error %X changing the status\r\n",status); |
Davidroid | 18:d596eb3f575f | 181 | } |
Davidroid | 18:d596eb3f575f | 182 | |
Davidroid | 18:d596eb3f575f | 183 | virtual void on_session_open(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 184 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 185 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 186 | } |
Davidroid | 18:d596eb3f575f | 187 | printf("Session Open\r\n"); |
Davidroid | 18:d596eb3f575f | 188 | mNfcTag.select_application(); |
Davidroid | 18:d596eb3f575f | 189 | } |
Davidroid | 18:d596eb3f575f | 190 | |
Davidroid | 18:d596eb3f575f | 191 | virtual void on_selected_application(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 192 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 193 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 194 | } |
Davidroid | 18:d596eb3f575f | 195 | |
Davidroid | 18:d596eb3f575f | 196 | printf("Select Application\r\n"); |
Davidroid | 18:d596eb3f575f | 197 | mNfcTag.select_NDEF_file(0x0001); |
Davidroid | 18:d596eb3f575f | 198 | } |
Davidroid | 18:d596eb3f575f | 199 | |
Davidroid | 18:d596eb3f575f | 200 | virtual void on_selected_NDEF_file(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 201 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 202 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 203 | } |
Davidroid | 18:d596eb3f575f | 204 | printf("Select NDef file\r\n"); |
Davidroid | 18:d596eb3f575f | 205 | if(mIsReadOnly){ |
Davidroid | 18:d596eb3f575f | 206 | mNfcTag.enable_read_only(M24SR::DEFAULT_PASSWORD); |
Davidroid | 18:d596eb3f575f | 207 | }else{ |
Davidroid | 18:d596eb3f575f | 208 | mNfcTag.disable_read_only(M24SR::DEFAULT_PASSWORD); |
Davidroid | 18:d596eb3f575f | 209 | } |
Davidroid | 18:d596eb3f575f | 210 | } |
Davidroid | 18:d596eb3f575f | 211 | |
Davidroid | 18:d596eb3f575f | 212 | |
Davidroid | 18:d596eb3f575f | 213 | virtual void on_enable_read_only(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 214 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 215 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 216 | } |
Davidroid | 18:d596eb3f575f | 217 | printf("Ready only Enabled\r\n"); |
Davidroid | 18:d596eb3f575f | 218 | if(!mIsReadOnly) {//if in the meantime the status change |
Davidroid | 18:d596eb3f575f | 219 | mNfcTag.disable_read_only(M24SR::DEFAULT_PASSWORD); |
Davidroid | 18:d596eb3f575f | 220 | } else { |
Davidroid | 18:d596eb3f575f | 221 | mReadOnlyLed=true; |
Davidroid | 18:d596eb3f575f | 222 | mReadWriteWriteLed=false; |
Davidroid | 18:d596eb3f575f | 223 | mNfcTag.deselect(); |
Davidroid | 18:d596eb3f575f | 224 | } |
Davidroid | 18:d596eb3f575f | 225 | } |
Davidroid | 18:d596eb3f575f | 226 | |
Davidroid | 18:d596eb3f575f | 227 | virtual void on_disable_read_only(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 228 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 229 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 230 | } |
Davidroid | 18:d596eb3f575f | 231 | printf("Ready only Disabled\r\n"); |
Davidroid | 18:d596eb3f575f | 232 | if(mIsReadOnly) {//if in the meantime the status change |
Davidroid | 18:d596eb3f575f | 233 | mNfcTag.enable_read_only(M24SR::DEFAULT_PASSWORD); |
Davidroid | 18:d596eb3f575f | 234 | } else { |
Davidroid | 18:d596eb3f575f | 235 | mReadOnlyLed=false; |
Davidroid | 18:d596eb3f575f | 236 | mReadWriteWriteLed=true; |
Davidroid | 18:d596eb3f575f | 237 | mNfcTag.deselect(); |
Davidroid | 18:d596eb3f575f | 238 | } |
Davidroid | 18:d596eb3f575f | 239 | } |
Davidroid | 18:d596eb3f575f | 240 | |
Davidroid | 18:d596eb3f575f | 241 | virtual void on_deselect(M24SR *,M24SR::StatusTypeDef status){ |
Davidroid | 18:d596eb3f575f | 242 | if(status!=M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 243 | return on_error(status); |
Davidroid | 18:d596eb3f575f | 244 | } |
Davidroid | 18:d596eb3f575f | 245 | printf("Close Application\r\n"); |
Davidroid | 18:d596eb3f575f | 246 | mIsComamndRunning=false; |
Davidroid | 18:d596eb3f575f | 247 | } |
Davidroid | 18:d596eb3f575f | 248 | }; |
Davidroid | 18:d596eb3f575f | 249 | |
Davidroid | 18:d596eb3f575f | 250 | /** |
Davidroid | 18:d596eb3f575f | 251 | * When the user press the button enable/disable the tag write protection. |
Davidroid | 18:d596eb3f575f | 252 | */ |
Davidroid | 18:d596eb3f575f | 253 | void sampleAsync_lockTagContent() { |
Davidroid | 18:d596eb3f575f | 254 | |
Davidroid | 18:d596eb3f575f | 255 | //instance the board with the default parameters |
Davidroid | 18:d596eb3f575f | 256 | I2C i2cChannel(XNucleoNFC01A1::DEFAULT_SDA_PIN,XNucleoNFC01A1::DEFAULT_SDL_PIN); |
Davidroid | 18:d596eb3f575f | 257 | XNucleoNFC01A1 *nfcNucleo = XNucleoNFC01A1::instance(i2cChannel,&set_nfc_event_callback); |
Davidroid | 18:d596eb3f575f | 258 | |
Davidroid | 18:d596eb3f575f | 259 | //when the user press the button set buttonPress to true |
Davidroid | 18:d596eb3f575f | 260 | #if defined(TARGET_STM) |
Davidroid | 18:d596eb3f575f | 261 | InterruptIn userButton(USER_BUTTON); |
Davidroid | 18:d596eb3f575f | 262 | #else |
Davidroid | 18:d596eb3f575f | 263 | InterruptIn userButton(SW2); |
Davidroid | 18:d596eb3f575f | 264 | #endif |
Davidroid | 18:d596eb3f575f | 265 | userButton.fall(set_button_press); |
Davidroid | 18:d596eb3f575f | 266 | |
Davidroid | 18:d596eb3f575f | 267 | M24SR &nfcTag =nfcNucleo->get_M24SR(); |
Davidroid | 18:d596eb3f575f | 268 | |
Davidroid | 18:d596eb3f575f | 269 | //set async mode |
Davidroid | 18:d596eb3f575f | 270 | if(nfcTag.get_session()==M24SR::M24SR_SUCCESS) { |
Davidroid | 18:d596eb3f575f | 271 | nfcTag.manage_I2C_GPO(M24SR::I2C_ANSWER_READY); |
Davidroid | 18:d596eb3f575f | 272 | } |
Davidroid | 18:d596eb3f575f | 273 | |
Davidroid | 18:d596eb3f575f | 274 | |
Davidroid | 18:d596eb3f575f | 275 | ChangeTagStatusCallback changeTagStatus(nfcTag,nfcNucleo->get_led2(),nfcNucleo->get_led3()); |
Davidroid | 18:d596eb3f575f | 276 | RemoveAllPasswordStatusCallback removeAllPasswordStatusCallback; |
Davidroid | 18:d596eb3f575f | 277 | |
Davidroid | 18:d596eb3f575f | 278 | nfcTag.set_callback(&removeAllPasswordStatusCallback); |
Davidroid | 18:d596eb3f575f | 279 | nfcTag.get_session(); |
Davidroid | 18:d596eb3f575f | 280 | nfcNucleo->get_led1()=true; |
Davidroid | 18:d596eb3f575f | 281 | |
Davidroid | 18:d596eb3f575f | 282 | while(true){ |
Davidroid | 18:d596eb3f575f | 283 | |
Davidroid | 18:d596eb3f575f | 284 | if(buttonPress && removeAllPasswordStatusCallback.is_finish()){ |
Davidroid | 18:d596eb3f575f | 285 | buttonPress=false; |
Davidroid | 18:d596eb3f575f | 286 | nfcTag.set_callback(&changeTagStatus); |
Davidroid | 18:d596eb3f575f | 287 | changeTagStatus.change_status(); |
Davidroid | 18:d596eb3f575f | 288 | }//if |
Davidroid | 18:d596eb3f575f | 289 | if(nfcEvent){ |
Davidroid | 18:d596eb3f575f | 290 | nfcEvent=false; |
Davidroid | 18:d596eb3f575f | 291 | nfcTag.manage_event(); |
Davidroid | 18:d596eb3f575f | 292 | } |
Davidroid | 18:d596eb3f575f | 293 | //wait next event |
Davidroid | 18:d596eb3f575f | 294 | __WFE(); |
Davidroid | 18:d596eb3f575f | 295 | }//while |
Davidroid | 18:d596eb3f575f | 296 | |
Davidroid | 18:d596eb3f575f | 297 | }//sampleAsync_lockTagContent |