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 Giovanni Visentini

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 .

Committer:
giovannivisentini
Date:
Mon Dec 21 09:50:51 2015 +0000
Revision:
7:ba6632daeea9
Parent:
5:3b300c8235b7
Child:
8:a9ecd7687de7
use the NDefLib_M24SR library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 5:3b300c8235b7 1 /**
giovannivisentini 5:3b300c8235b7 2 ******************************************************************************
giovannivisentini 5:3b300c8235b7 3 * @file Sample_writeAndChangeAll.cpp
giovannivisentini 5:3b300c8235b7 4 * @date 03/12/2015
giovannivisentini 5:3b300c8235b7 5 * @brief This demo write an ndef message different records, when the user press the buttun
giovannivisentini 5:3b300c8235b7 6 * read the tag, change some data and write it again
giovannivisentini 5:3b300c8235b7 7 ******************************************************************************
giovannivisentini 5:3b300c8235b7 8 *
giovannivisentini 5:3b300c8235b7 9 * COPYRIGHT(c) 2015 STMicroelectronics
giovannivisentini 5:3b300c8235b7 10 *
giovannivisentini 5:3b300c8235b7 11 * Redistribution and use in source and binary forms, with or without modification,
giovannivisentini 5:3b300c8235b7 12 * are permitted provided that the following conditions are met:
giovannivisentini 5:3b300c8235b7 13 * 1. Redistributions of source code must retain the above copyright notice,
giovannivisentini 5:3b300c8235b7 14 * this list of conditions and the following disclaimer.
giovannivisentini 5:3b300c8235b7 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
giovannivisentini 5:3b300c8235b7 16 * this list of conditions and the following disclaimer in the documentation
giovannivisentini 5:3b300c8235b7 17 * and/or other materials provided with the distribution.
giovannivisentini 5:3b300c8235b7 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
giovannivisentini 5:3b300c8235b7 19 * may be used to endorse or promote products derived from this software
giovannivisentini 5:3b300c8235b7 20 * without specific prior written permission.
giovannivisentini 5:3b300c8235b7 21 *
giovannivisentini 5:3b300c8235b7 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
giovannivisentini 5:3b300c8235b7 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
giovannivisentini 5:3b300c8235b7 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
giovannivisentini 5:3b300c8235b7 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
giovannivisentini 5:3b300c8235b7 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
giovannivisentini 5:3b300c8235b7 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
giovannivisentini 5:3b300c8235b7 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
giovannivisentini 5:3b300c8235b7 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
giovannivisentini 5:3b300c8235b7 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
giovannivisentini 5:3b300c8235b7 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
giovannivisentini 5:3b300c8235b7 32 *
giovannivisentini 5:3b300c8235b7 33 ******************************************************************************
giovannivisentini 5:3b300c8235b7 34 */
giovannivisentini 5:3b300c8235b7 35
giovannivisentini 4:f40b3505070c 36 #include "mbed.h"
giovannivisentini 4:f40b3505070c 37
giovannivisentini 7:ba6632daeea9 38 #include "Type4NfcTagM24SR.h"
giovannivisentini 4:f40b3505070c 39
giovannivisentini 4:f40b3505070c 40 #include "NDefLib/RecordType/RecordAAR.h"
giovannivisentini 4:f40b3505070c 41 #include "NDefLib/RecordType/RecordSMS.h"
giovannivisentini 4:f40b3505070c 42 #include "NDefLib/RecordType/RecordGeo.h"
giovannivisentini 4:f40b3505070c 43 #include "NDefLib/RecordType/RecordURI.h"
giovannivisentini 4:f40b3505070c 44 #include "NDefLib/RecordType/RecordMail.h"
giovannivisentini 4:f40b3505070c 45 #include "NDefLib/RecordType/RecordText.h"
giovannivisentini 4:f40b3505070c 46 #include "NDefLib/RecordType/RecordMimeType.h"
giovannivisentini 4:f40b3505070c 47 #include "NDefLib/RecordType/RecordVCard.h"
giovannivisentini 4:f40b3505070c 48
giovannivisentini 4:f40b3505070c 49 #include "X_NUCLEO_NFC01A1.h"
giovannivisentini 4:f40b3505070c 50
giovannivisentini 4:f40b3505070c 51 static Serial pc(SERIAL_TX, SERIAL_RX);
giovannivisentini 4:f40b3505070c 52
giovannivisentini 4:f40b3505070c 53 static void shiftLed(DigitalOut &led1,DigitalOut &led2,DigitalOut &led3){
giovannivisentini 4:f40b3505070c 54 const uint8_t prevLed1=led1;
giovannivisentini 4:f40b3505070c 55 const uint8_t prevLed2=led2;
giovannivisentini 4:f40b3505070c 56 const uint8_t prevLed3=led3;
giovannivisentini 4:f40b3505070c 57 led1=prevLed3;
giovannivisentini 4:f40b3505070c 58 led2=prevLed1;
giovannivisentini 4:f40b3505070c 59 led3=prevLed2;
giovannivisentini 4:f40b3505070c 60 }
giovannivisentini 4:f40b3505070c 61
giovannivisentini 4:f40b3505070c 62 static void setNFCTag(NDefLib::Type4NfcTag &tag){
giovannivisentini 4:f40b3505070c 63
giovannivisentini 4:f40b3505070c 64 bool writeStatus,closeStatus;
giovannivisentini 4:f40b3505070c 65 if(tag.openSession()){
giovannivisentini 4:f40b3505070c 66 NDefLib::Message msg;
giovannivisentini 4:f40b3505070c 67
giovannivisentini 4:f40b3505070c 68 NDefLib::RecordAAR rAAR("com.st.BlueMS");
giovannivisentini 4:f40b3505070c 69 msg.addRecord(&rAAR);
giovannivisentini 4:f40b3505070c 70
giovannivisentini 4:f40b3505070c 71 NDefLib::RecordSMS rSMS("123456789","st.com.BlueMS");
giovannivisentini 4:f40b3505070c 72 msg.addRecord(&rSMS);
giovannivisentini 4:f40b3505070c 73
giovannivisentini 4:f40b3505070c 74 NDefLib::RecordGeo rGeo(123.123,-456.789);
giovannivisentini 4:f40b3505070c 75 msg.addRecord(&rGeo);
giovannivisentini 4:f40b3505070c 76
giovannivisentini 4:f40b3505070c 77 NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"http://www.st.com");
giovannivisentini 4:f40b3505070c 78 msg.addRecord(&rUri);
giovannivisentini 4:f40b3505070c 79
giovannivisentini 4:f40b3505070c 80 NDefLib::RecordMail rMail("mail@st.com","ciao","da nfc tag");
giovannivisentini 4:f40b3505070c 81 msg.addRecord(&rMail);
giovannivisentini 4:f40b3505070c 82
giovannivisentini 4:f40b3505070c 83 NDefLib::RecordMimeType rText1("text/plain",(const uint8_t*)"ciao",4);
giovannivisentini 4:f40b3505070c 84 msg.addRecord(&rText1);
giovannivisentini 4:f40b3505070c 85
giovannivisentini 4:f40b3505070c 86 NDefLib::RecordText rText3(NDefLib::RecordText::UTF8,"it","ciao");
giovannivisentini 4:f40b3505070c 87 msg.addRecord(&rText3);
giovannivisentini 4:f40b3505070c 88
giovannivisentini 4:f40b3505070c 89 NDefLib::RecordVCard::VCardInfo_t cardInfo;
giovannivisentini 4:f40b3505070c 90 cardInfo[NDefLib::RecordVCard::FORMATTED_NAME]="prova prova1";
giovannivisentini 4:f40b3505070c 91 cardInfo[NDefLib::RecordVCard::ADDRESS_HOME]=";;1 Main St.;Springfield;IL;12345;USA";
giovannivisentini 4:f40b3505070c 92 cardInfo[NDefLib::RecordVCard::ADDRESS_WORK]=";;2 Main St.;Springfield;IL;12345;USA";
giovannivisentini 4:f40b3505070c 93 cardInfo[NDefLib::RecordVCard::EMAIL_WORK]="workmail@st.com";
giovannivisentini 4:f40b3505070c 94 cardInfo[NDefLib::RecordVCard::EMAIL_HOME]="homemail@st.com";
giovannivisentini 4:f40b3505070c 95 cardInfo[NDefLib::RecordVCard::GEO]="39.95;-75.1667";
giovannivisentini 4:f40b3505070c 96 cardInfo[NDefLib::RecordVCard::IMPP]="aim:johndoe@aol.com";
giovannivisentini 4:f40b3505070c 97 cardInfo[NDefLib::RecordVCard::NAME]="prova2;prova3";
giovannivisentini 4:f40b3505070c 98 cardInfo[NDefLib::RecordVCard::NICKNAME]="test";
giovannivisentini 4:f40b3505070c 99 cardInfo[NDefLib::RecordVCard::NOTE]="A good test";
giovannivisentini 4:f40b3505070c 100 cardInfo[NDefLib::RecordVCard::ORGANIZATION]="STM";
giovannivisentini 4:f40b3505070c 101 cardInfo[NDefLib::RecordVCard::TEL_HOME]="123";
giovannivisentini 4:f40b3505070c 102 cardInfo[NDefLib::RecordVCard::TEL_MOBILE]="456";
giovannivisentini 4:f40b3505070c 103 cardInfo[NDefLib::RecordVCard::TEL_WORK]="789";
giovannivisentini 4:f40b3505070c 104 cardInfo[NDefLib::RecordVCard::TITLE]="King";
giovannivisentini 4:f40b3505070c 105 cardInfo[NDefLib::RecordVCard::URL]="www.st.com";
giovannivisentini 4:f40b3505070c 106 cardInfo[NDefLib::RecordVCard::PHOTO_URI]="http://www.st.com/st-web-ui/static/active/en/fragment/multimedia/image/picture/customer_focus.jpg";
giovannivisentini 4:f40b3505070c 107 NDefLib::RecordVCard rVCard(cardInfo);
giovannivisentini 4:f40b3505070c 108 msg.addRecord(&rVCard);
giovannivisentini 4:f40b3505070c 109
giovannivisentini 4:f40b3505070c 110 writeStatus = tag.write(msg);
giovannivisentini 4:f40b3505070c 111
giovannivisentini 4:f40b3505070c 112 closeStatus = tag.closeSession();
giovannivisentini 4:f40b3505070c 113
giovannivisentini 4:f40b3505070c 114 }else
giovannivisentini 4:f40b3505070c 115 pc.printf("Error open Session\n\r");
giovannivisentini 4:f40b3505070c 116
giovannivisentini 4:f40b3505070c 117 if(writeStatus)
giovannivisentini 4:f40b3505070c 118 pc.printf("writeOk\n\r");
giovannivisentini 4:f40b3505070c 119 else
giovannivisentini 4:f40b3505070c 120 pc.printf("writeFail\n\r");
giovannivisentini 4:f40b3505070c 121
giovannivisentini 4:f40b3505070c 122 if(closeStatus)
giovannivisentini 4:f40b3505070c 123 pc.printf("closeOk\n\r");
giovannivisentini 4:f40b3505070c 124 else
giovannivisentini 4:f40b3505070c 125 pc.printf("CloseFail\n\r");
giovannivisentini 4:f40b3505070c 126 }
giovannivisentini 4:f40b3505070c 127
giovannivisentini 4:f40b3505070c 128 static void printRecord(NDefLib::Record *r){
giovannivisentini 4:f40b3505070c 129 using namespace NDefLib;
giovannivisentini 4:f40b3505070c 130 switch(r->getType()){
giovannivisentini 4:f40b3505070c 131 case Record::TYPE_TEXT: {
giovannivisentini 4:f40b3505070c 132 RecordText *temp = (RecordText*)r;
giovannivisentini 4:f40b3505070c 133 pc.printf("Read Text: %s\r\n",temp->getText().c_str());
giovannivisentini 4:f40b3505070c 134 break; }
giovannivisentini 4:f40b3505070c 135 case Record::TYPE_AAR:{
giovannivisentini 4:f40b3505070c 136 RecordAAR *temp = (RecordAAR*)r;
giovannivisentini 4:f40b3505070c 137 pc.printf("Read ARR: %s\r\n",temp->getPackage().c_str());
giovannivisentini 4:f40b3505070c 138 break; }
giovannivisentini 4:f40b3505070c 139 case Record::TYPE_MIME:{
giovannivisentini 4:f40b3505070c 140 RecordMimeType *temp = (RecordMimeType*)r;
giovannivisentini 4:f40b3505070c 141 pc.printf("Read mimeType: %s\r\n",temp->getMimeType().c_str());
giovannivisentini 4:f40b3505070c 142 pc.printf("Read mimeData: %s\r\n",
giovannivisentini 4:f40b3505070c 143 std::string((const char*)temp->getMimeData(),
giovannivisentini 4:f40b3505070c 144 temp->getMimeDataLenght()).c_str());
giovannivisentini 4:f40b3505070c 145 break;}
giovannivisentini 4:f40b3505070c 146 case Record::TYPE_URI:{
giovannivisentini 4:f40b3505070c 147 RecordURI *temp = (RecordURI*)r;
giovannivisentini 4:f40b3505070c 148 pc.printf("Read uriId: %d\r\n",temp->getUriId());
giovannivisentini 4:f40b3505070c 149 pc.printf("Read uriType: %s\r\n",temp->getUriType().c_str());
giovannivisentini 4:f40b3505070c 150 pc.printf("Read uriContent: %s\r\n",temp->getContent().c_str());
giovannivisentini 4:f40b3505070c 151 break;}
giovannivisentini 4:f40b3505070c 152 case Record::TYPE_URI_MAIL:{
giovannivisentini 4:f40b3505070c 153 RecordMail *temp = (RecordMail*)r;
giovannivisentini 4:f40b3505070c 154 pc.printf("Read Dest: %s\r\n",temp->getToAddress().c_str());
giovannivisentini 4:f40b3505070c 155 pc.printf("Read Subject: %s\r\n",temp->getSubject().c_str());
giovannivisentini 4:f40b3505070c 156 pc.printf("Read Body: %s\r\n",temp->getBody().c_str());
giovannivisentini 4:f40b3505070c 157 break;}
giovannivisentini 4:f40b3505070c 158 case Record::TYPE_URI_SMS:{
giovannivisentini 4:f40b3505070c 159 RecordSMS *temp = (RecordSMS*)r;
giovannivisentini 4:f40b3505070c 160 pc.printf("Read number: %s\r\n",temp->getNumber().c_str());
giovannivisentini 4:f40b3505070c 161 pc.printf("Read message: %s\r\n",temp->getMessagge().c_str());
giovannivisentini 4:f40b3505070c 162 break;}
giovannivisentini 4:f40b3505070c 163 case Record::TYPE_URI_GEOLOCATION:{
giovannivisentini 4:f40b3505070c 164 RecordGeo *temp = (RecordGeo*)r;
giovannivisentini 4:f40b3505070c 165 pc.printf("Read lat: %f\r\n",temp->getLatitude());
giovannivisentini 4:f40b3505070c 166 pc.printf("Read long: %f\r\n",temp->getLongitude());
giovannivisentini 4:f40b3505070c 167 break;}
giovannivisentini 4:f40b3505070c 168 case Record::TYPE_MIME_VCARD:{
giovannivisentini 4:f40b3505070c 169 const RecordVCard *temp = (RecordVCard*)r;
giovannivisentini 4:f40b3505070c 170 pc.printf("Read Name: %s\r\n",(*temp)[RecordVCard::NAME].c_str());
giovannivisentini 4:f40b3505070c 171 pc.printf("Read Mail: %s\r\n",(*temp)[RecordVCard::EMAIL_WORK].c_str());
giovannivisentini 4:f40b3505070c 172 pc.printf("Read ORG: %s\r\n",(*temp)[RecordVCard::ORGANIZATION].c_str());
giovannivisentini 4:f40b3505070c 173 break;}
giovannivisentini 4:f40b3505070c 174 case Record::TYPE_UNKNOWN:{
giovannivisentini 4:f40b3505070c 175 pc.printf("Unknown record\r\n");
giovannivisentini 4:f40b3505070c 176 break;}
giovannivisentini 4:f40b3505070c 177 }//switch
giovannivisentini 4:f40b3505070c 178 }
giovannivisentini 4:f40b3505070c 179
giovannivisentini 4:f40b3505070c 180 static void changeRecord(NDefLib::Record *r){
giovannivisentini 4:f40b3505070c 181 using namespace NDefLib;
giovannivisentini 4:f40b3505070c 182 switch(r->getType()){
giovannivisentini 4:f40b3505070c 183 case Record::TYPE_TEXT: {
giovannivisentini 4:f40b3505070c 184 RecordText *temp = (RecordText*)r;
giovannivisentini 4:f40b3505070c 185 temp->setText("CIAOCiao");
giovannivisentini 4:f40b3505070c 186 break; }
giovannivisentini 4:f40b3505070c 187 case Record::TYPE_AAR:{
giovannivisentini 4:f40b3505070c 188 RecordAAR *temp = (RecordAAR*)r;
giovannivisentini 4:f40b3505070c 189 temp->setPackage("set Package Ok");
giovannivisentini 4:f40b3505070c 190 break; }
giovannivisentini 4:f40b3505070c 191 case Record::TYPE_MIME:{
giovannivisentini 4:f40b3505070c 192 RecordMimeType *temp = (RecordMimeType*)r;
giovannivisentini 4:f40b3505070c 193 temp->copyMimeData((const uint8_t *)"String2",sizeof("String2"));
giovannivisentini 4:f40b3505070c 194 break;}
giovannivisentini 4:f40b3505070c 195 case Record::TYPE_URI:{
giovannivisentini 4:f40b3505070c 196 RecordURI *temp = (RecordURI*)r;
giovannivisentini 4:f40b3505070c 197 temp->setContent("google.it");
giovannivisentini 4:f40b3505070c 198 break;}
giovannivisentini 4:f40b3505070c 199 case Record::TYPE_URI_MAIL:{
giovannivisentini 4:f40b3505070c 200 RecordMail *temp = (RecordMail*)r;
giovannivisentini 4:f40b3505070c 201 temp->setToAddress("newMail@st.com");
giovannivisentini 4:f40b3505070c 202 temp->setSubject("tag change");
giovannivisentini 4:f40b3505070c 203 temp->setBody("read/change Works!");
giovannivisentini 4:f40b3505070c 204 break;}
giovannivisentini 4:f40b3505070c 205 case Record::TYPE_URI_SMS:{
giovannivisentini 4:f40b3505070c 206 RecordSMS *temp = (RecordSMS*)r;
giovannivisentini 4:f40b3505070c 207 temp->setMessage("Message Change");
giovannivisentini 4:f40b3505070c 208 temp->setNumber("0987654321");
giovannivisentini 4:f40b3505070c 209 break;}
giovannivisentini 4:f40b3505070c 210 case Record::TYPE_URI_GEOLOCATION:{
giovannivisentini 4:f40b3505070c 211 RecordGeo *temp = (RecordGeo*)r;
giovannivisentini 4:f40b3505070c 212 temp->setLatitude(-temp->getLatitude());
giovannivisentini 4:f40b3505070c 213 temp->setLongitude(-temp->getLongitude());
giovannivisentini 4:f40b3505070c 214 break;}
giovannivisentini 4:f40b3505070c 215 case Record::TYPE_MIME_VCARD:{
giovannivisentini 4:f40b3505070c 216 RecordVCard *temp = (RecordVCard*)r;
giovannivisentini 4:f40b3505070c 217 (*temp)[RecordVCard::NAME]="name change";
giovannivisentini 4:f40b3505070c 218 (*temp)[RecordVCard::NICKNAME]="nic change";
giovannivisentini 4:f40b3505070c 219 break;}
giovannivisentini 4:f40b3505070c 220 case Record::TYPE_UNKNOWN:{
giovannivisentini 4:f40b3505070c 221 pc.printf("Unknown record\r\n");
giovannivisentini 4:f40b3505070c 222 break;}
giovannivisentini 4:f40b3505070c 223 }//switch
giovannivisentini 4:f40b3505070c 224 }
giovannivisentini 4:f40b3505070c 225
giovannivisentini 4:f40b3505070c 226 static void readNfcTag(NDefLib::Type4NfcTag &tag){
giovannivisentini 4:f40b3505070c 227 using namespace NDefLib;
giovannivisentini 4:f40b3505070c 228
giovannivisentini 4:f40b3505070c 229 if(tag.openSession()){
giovannivisentini 4:f40b3505070c 230 NDefLib::Message readMsg;
giovannivisentini 4:f40b3505070c 231
giovannivisentini 4:f40b3505070c 232 tag.read(&readMsg);
giovannivisentini 4:f40b3505070c 233
giovannivisentini 4:f40b3505070c 234 if(readMsg.getNRecords()==0){
giovannivisentini 4:f40b3505070c 235 pc.printf("Error Read\r\n");
giovannivisentini 4:f40b3505070c 236 }else{
giovannivisentini 4:f40b3505070c 237 for(uint32_t i=0;i<readMsg.getNRecords();i++){
giovannivisentini 4:f40b3505070c 238 Record *r = readMsg[i];
giovannivisentini 4:f40b3505070c 239 printRecord(r);
giovannivisentini 4:f40b3505070c 240 delete r;
giovannivisentini 4:f40b3505070c 241 }//for
giovannivisentini 4:f40b3505070c 242 }//if-else
giovannivisentini 4:f40b3505070c 243
giovannivisentini 4:f40b3505070c 244 tag.closeSession();
giovannivisentini 4:f40b3505070c 245 }else{
giovannivisentini 4:f40b3505070c 246 pc.printf("Error open read Session\n\r");
giovannivisentini 4:f40b3505070c 247 }
giovannivisentini 4:f40b3505070c 248 }
giovannivisentini 4:f40b3505070c 249
giovannivisentini 4:f40b3505070c 250
giovannivisentini 4:f40b3505070c 251 static void changeNfcTag(NDefLib::Type4NfcTag &tag){
giovannivisentini 4:f40b3505070c 252 using namespace NDefLib;
giovannivisentini 4:f40b3505070c 253
giovannivisentini 4:f40b3505070c 254 if(tag.openSession()){
giovannivisentini 4:f40b3505070c 255 NDefLib::Message readMsg;
giovannivisentini 4:f40b3505070c 256
giovannivisentini 4:f40b3505070c 257 tag.read(&readMsg);
giovannivisentini 4:f40b3505070c 258
giovannivisentini 4:f40b3505070c 259 if(readMsg.getNRecords()==0){
giovannivisentini 4:f40b3505070c 260 pc.printf("Error Read\r\n");
giovannivisentini 4:f40b3505070c 261 }else{
giovannivisentini 4:f40b3505070c 262 for(uint32_t i=0;i<readMsg.getNRecords();i++){
giovannivisentini 4:f40b3505070c 263 Record *r = readMsg[i];
giovannivisentini 4:f40b3505070c 264 changeRecord(r);
giovannivisentini 4:f40b3505070c 265 }//for
giovannivisentini 4:f40b3505070c 266 tag.write(readMsg);
giovannivisentini 4:f40b3505070c 267 }//if-else
giovannivisentini 4:f40b3505070c 268
giovannivisentini 4:f40b3505070c 269 tag.closeSession();
giovannivisentini 4:f40b3505070c 270 }else{
giovannivisentini 4:f40b3505070c 271 pc.printf("Error open SessionChange\n\r");
giovannivisentini 4:f40b3505070c 272 }
giovannivisentini 4:f40b3505070c 273 }
giovannivisentini 4:f40b3505070c 274
giovannivisentini 4:f40b3505070c 275 static volatile bool buttonPress=false;
giovannivisentini 4:f40b3505070c 276
giovannivisentini 4:f40b3505070c 277 static void setButtonPress(){
giovannivisentini 4:f40b3505070c 278 buttonPress=true;
giovannivisentini 4:f40b3505070c 279 }
giovannivisentini 4:f40b3505070c 280
giovannivisentini 4:f40b3505070c 281 void sample_writeAndChangeAll() {
giovannivisentini 4:f40b3505070c 282 I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
giovannivisentini 4:f40b3505070c 283 i2cChannel.frequency(400000);
giovannivisentini 4:f40b3505070c 284 DigitalOut nucleoLed(LED1);
giovannivisentini 4:f40b3505070c 285
giovannivisentini 4:f40b3505070c 286 X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel);
giovannivisentini 7:ba6632daeea9 287 Type4NfcTagM24SR tag(nfcNucleo->getM24SR());
giovannivisentini 4:f40b3505070c 288 InterruptIn mybutton(USER_BUTTON);
giovannivisentini 4:f40b3505070c 289
giovannivisentini 4:f40b3505070c 290 nfcNucleo->getLed1()=1;
giovannivisentini 4:f40b3505070c 291 nfcNucleo->getLed2()=0;
giovannivisentini 4:f40b3505070c 292 nfcNucleo->getLed3()=0;
giovannivisentini 4:f40b3505070c 293
giovannivisentini 4:f40b3505070c 294 setNFCTag(tag);
giovannivisentini 4:f40b3505070c 295 readNfcTag(tag);
giovannivisentini 4:f40b3505070c 296
giovannivisentini 4:f40b3505070c 297 mybutton.fall(setButtonPress);
giovannivisentini 4:f40b3505070c 298
giovannivisentini 4:f40b3505070c 299 while(true) {
giovannivisentini 4:f40b3505070c 300 wait(1);
giovannivisentini 4:f40b3505070c 301 nucleoLed = !nucleoLed;
giovannivisentini 4:f40b3505070c 302 shiftLed(nfcNucleo->getLed1(),nfcNucleo->getLed2(),nfcNucleo->getLed3());
giovannivisentini 4:f40b3505070c 303 if(buttonPress){
giovannivisentini 4:f40b3505070c 304 changeNfcTag(tag);
giovannivisentini 4:f40b3505070c 305 readNfcTag(tag);
giovannivisentini 4:f40b3505070c 306 buttonPress=false;
giovannivisentini 4:f40b3505070c 307 }
giovannivisentini 4:f40b3505070c 308 }
giovannivisentini 4:f40b3505070c 309
giovannivisentini 4:f40b3505070c 310 }