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:
Tue Dec 01 08:30:54 2015 +0000
Revision:
2:0648c1561eb2
Parent:
1:6d202b62ed68
Child:
3:f7f818ee694e
change the tag content when the user press the button

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 0:674813bd5ec9 1 #include <cstring>
giovannivisentini 0:674813bd5ec9 2 #include "mbed.h"
giovannivisentini 0:674813bd5ec9 3
giovannivisentini 0:674813bd5ec9 4 #include "m24sr/m24sr_class.h"
giovannivisentini 0:674813bd5ec9 5 //#include "lib_NDEF/lib_TagType4.h"
giovannivisentini 0:674813bd5ec9 6
giovannivisentini 0:674813bd5ec9 7 #include "Type4NfcTagSTM24SR.h"
giovannivisentini 0:674813bd5ec9 8
giovannivisentini 0:674813bd5ec9 9 #include "NDefLib/RecordType/RecordAAR.h"
giovannivisentini 0:674813bd5ec9 10 #include "NDefLib/RecordType/RecordSMS.h"
giovannivisentini 0:674813bd5ec9 11 #include "NDefLib/RecordType/RecordGeo.h"
giovannivisentini 1:6d202b62ed68 12 #include "NDefLib/RecordType/RecordURI.h"
giovannivisentini 0:674813bd5ec9 13 #include "NDefLib/RecordType/RecordMail.h"
giovannivisentini 0:674813bd5ec9 14 #include "NDefLib/RecordType/RecordText.h"
giovannivisentini 0:674813bd5ec9 15 #include "NDefLib/RecordType/RecordMimeType.h"
giovannivisentini 1:6d202b62ed68 16 #include "NDefLib/RecordType/RecordVCard.h"
giovannivisentini 0:674813bd5ec9 17
giovannivisentini 0:674813bd5ec9 18 #include "X_NUCLEO_NFC01A1.h"
giovannivisentini 0:674813bd5ec9 19
giovannivisentini 0:674813bd5ec9 20 Serial pc(SERIAL_TX, SERIAL_RX);
giovannivisentini 0:674813bd5ec9 21
giovannivisentini 0:674813bd5ec9 22 DigitalOut myled(LED1);
giovannivisentini 0:674813bd5ec9 23
giovannivisentini 2:0648c1561eb2 24
giovannivisentini 0:674813bd5ec9 25 void shiftLed(DigitalOut &led1,DigitalOut &led2,DigitalOut &led3){
giovannivisentini 0:674813bd5ec9 26 const uint8_t prevLed1=led1;
giovannivisentini 0:674813bd5ec9 27 const uint8_t prevLed2=led2;
giovannivisentini 0:674813bd5ec9 28 const uint8_t prevLed3=led3;
giovannivisentini 0:674813bd5ec9 29 led1=prevLed3;
giovannivisentini 0:674813bd5ec9 30 led2=prevLed1;
giovannivisentini 0:674813bd5ec9 31 led3=prevLed2;
giovannivisentini 0:674813bd5ec9 32 }
giovannivisentini 0:674813bd5ec9 33
giovannivisentini 0:674813bd5ec9 34 static const PinName M24SR_SDA=D14;
giovannivisentini 0:674813bd5ec9 35 static const PinName M24SR_SDL=D15;
giovannivisentini 0:674813bd5ec9 36
giovannivisentini 1:6d202b62ed68 37 static const uint32_t MAX_WRITE_TRY=1;
giovannivisentini 0:674813bd5ec9 38
giovannivisentini 2:0648c1561eb2 39 void setNFCTag(NDefLib::Type4NfcTag &tag){
giovannivisentini 0:674813bd5ec9 40
giovannivisentini 0:674813bd5ec9 41 bool writeStatus,closeStatus;
giovannivisentini 0:674813bd5ec9 42 if(tag.openSession()){
giovannivisentini 0:674813bd5ec9 43 NDefLib::Message msg;
giovannivisentini 0:674813bd5ec9 44
giovannivisentini 0:674813bd5ec9 45 NDefLib::RecordAAR rAAR("com.st.BlueMS");
giovannivisentini 0:674813bd5ec9 46 msg.addRecord(&rAAR);
giovannivisentini 0:674813bd5ec9 47
giovannivisentini 0:674813bd5ec9 48 NDefLib::RecordSMS rSMS("123456789","st.com.BlueMS");
giovannivisentini 0:674813bd5ec9 49 msg.addRecord(&rSMS);
giovannivisentini 0:674813bd5ec9 50
giovannivisentini 2:0648c1561eb2 51 NDefLib::RecordGeo rGeo(123.123,-456.789);
giovannivisentini 0:674813bd5ec9 52 msg.addRecord(&rGeo);
giovannivisentini 0:674813bd5ec9 53
giovannivisentini 1:6d202b62ed68 54 NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"http://www.st.com");
giovannivisentini 0:674813bd5ec9 55 msg.addRecord(&rUri);
giovannivisentini 0:674813bd5ec9 56
giovannivisentini 0:674813bd5ec9 57 NDefLib::RecordMail rMail("mail@st.com","ciao","da nfc tag");
giovannivisentini 0:674813bd5ec9 58 msg.addRecord(&rMail);
giovannivisentini 0:674813bd5ec9 59
giovannivisentini 2:0648c1561eb2 60 NDefLib::RecordMimeType rText1("text/plain",(const uint8_t*)"ciao",4);
giovannivisentini 0:674813bd5ec9 61 msg.addRecord(&rText1);
giovannivisentini 0:674813bd5ec9 62
giovannivisentini 0:674813bd5ec9 63 NDefLib::RecordText rText3(NDefLib::RecordText::UTF8,"it","ciao");
giovannivisentini 0:674813bd5ec9 64 msg.addRecord(&rText3);
giovannivisentini 0:674813bd5ec9 65
giovannivisentini 1:6d202b62ed68 66 NDefLib::RecordVCard::VCardInfo_t cardInfo;
giovannivisentini 2:0648c1561eb2 67 cardInfo[NDefLib::RecordVCard::FORMATTED_NAME]="prova prova1";
giovannivisentini 1:6d202b62ed68 68 cardInfo[NDefLib::RecordVCard::ADDRESS_HOME]=";;1 Main St.;Springfield;IL;12345;USA";
giovannivisentini 1:6d202b62ed68 69 cardInfo[NDefLib::RecordVCard::ADDRESS_WORK]=";;2 Main St.;Springfield;IL;12345;USA";
giovannivisentini 1:6d202b62ed68 70 cardInfo[NDefLib::RecordVCard::EMAIL_WORK]="workmail@st.com";
giovannivisentini 1:6d202b62ed68 71 cardInfo[NDefLib::RecordVCard::EMAIL_HOME]="homemail@st.com";
giovannivisentini 1:6d202b62ed68 72 cardInfo[NDefLib::RecordVCard::GEO]="39.95;-75.1667";
giovannivisentini 1:6d202b62ed68 73 cardInfo[NDefLib::RecordVCard::IMPP]="aim:johndoe@aol.com";
giovannivisentini 2:0648c1561eb2 74 cardInfo[NDefLib::RecordVCard::NAME]="prova2;prova3";
giovannivisentini 1:6d202b62ed68 75 cardInfo[NDefLib::RecordVCard::NICKNAME]="test";
giovannivisentini 1:6d202b62ed68 76 cardInfo[NDefLib::RecordVCard::NOTE]="A good test";
giovannivisentini 1:6d202b62ed68 77 cardInfo[NDefLib::RecordVCard::ORGANIZATION]="STM";
giovannivisentini 1:6d202b62ed68 78 cardInfo[NDefLib::RecordVCard::TEL_HOME]="123";
giovannivisentini 1:6d202b62ed68 79 cardInfo[NDefLib::RecordVCard::TEL_MOBILE]="456";
giovannivisentini 1:6d202b62ed68 80 cardInfo[NDefLib::RecordVCard::TEL_WORK]="789";
giovannivisentini 1:6d202b62ed68 81 cardInfo[NDefLib::RecordVCard::TITLE]="King";
giovannivisentini 1:6d202b62ed68 82 cardInfo[NDefLib::RecordVCard::URL]="www.st.com";
giovannivisentini 1:6d202b62ed68 83 cardInfo[NDefLib::RecordVCard::PHOTO_URI]="http://www.st.com/st-web-ui/static/active/en/fragment/multimedia/image/picture/customer_focus.jpg";
giovannivisentini 1:6d202b62ed68 84 NDefLib::RecordVCard rVCard(cardInfo);
giovannivisentini 1:6d202b62ed68 85 msg.addRecord(&rVCard);
giovannivisentini 1:6d202b62ed68 86
giovannivisentini 0:674813bd5ec9 87 uint32_t writeTry=0;
giovannivisentini 0:674813bd5ec9 88 do{
giovannivisentini 0:674813bd5ec9 89 writeStatus = tag.write(msg);
giovannivisentini 0:674813bd5ec9 90 writeTry++;
giovannivisentini 0:674813bd5ec9 91 }while(!writeStatus && writeTry<MAX_WRITE_TRY);
giovannivisentini 0:674813bd5ec9 92
giovannivisentini 0:674813bd5ec9 93 closeStatus = tag.closeSession();
giovannivisentini 0:674813bd5ec9 94
giovannivisentini 0:674813bd5ec9 95 }else
giovannivisentini 0:674813bd5ec9 96 pc.printf("Error open Session\n\r");
giovannivisentini 0:674813bd5ec9 97
giovannivisentini 0:674813bd5ec9 98 if(writeStatus)
giovannivisentini 0:674813bd5ec9 99 pc.printf("writeOk\n\r");
giovannivisentini 0:674813bd5ec9 100 else
giovannivisentini 0:674813bd5ec9 101 pc.printf("writeFail\n\r");
giovannivisentini 0:674813bd5ec9 102
giovannivisentini 0:674813bd5ec9 103 if(closeStatus)
giovannivisentini 0:674813bd5ec9 104 pc.printf("closeOk\n\r");
giovannivisentini 0:674813bd5ec9 105 else
giovannivisentini 0:674813bd5ec9 106 pc.printf("CloseFail\n\r");
giovannivisentini 0:674813bd5ec9 107
giovannivisentini 0:674813bd5ec9 108 /*
giovannivisentini 0:674813bd5ec9 109 sURI_Info URI;
giovannivisentini 0:674813bd5ec9 110 sAARInfo aar;
giovannivisentini 0:674813bd5ec9 111 sSMSInfo sms;
giovannivisentini 0:674813bd5ec9 112 std::strcpy(sms.PhoneNumber,"123456789\0");
giovannivisentini 0:674813bd5ec9 113 std::strcpy(sms.Message,"st.com.BlueMS\0");
giovannivisentini 0:674813bd5ec9 114 std::strcpy(sms.Information,"\0");
giovannivisentini 0:674813bd5ec9 115
giovannivisentini 0:674813bd5ec9 116 std::strcpy(aar.PakageName,"st.com.BlueMS");
giovannivisentini 0:674813bd5ec9 117
giovannivisentini 0:674813bd5ec9 118 // Prepare URI NDEF message content
giovannivisentini 0:674813bd5ec9 119 std::strcpy(URI.protocol,URI_ID_0x01_STRING);
giovannivisentini 0:674813bd5ec9 120 std::strcpy(URI.URI_Message,"st3.com");
giovannivisentini 0:674813bd5ec9 121 std::strcpy(URI.Information,"\0");
giovannivisentini 0:674813bd5ec9 122
giovannivisentini 0:674813bd5ec9 123
giovannivisentini 0:674813bd5ec9 124 while (TT4_Init() != NFC_OK);
giovannivisentini 0:674813bd5ec9 125 // Prepare URI NDEF message content
giovannivisentini 0:674813bd5ec9 126 std::strcpy(URI.protocol,URI_ID_0x01_STRING);
giovannivisentini 0:674813bd5ec9 127 std::strcpy(URI.URI_Message,"st2.com");
giovannivisentini 0:674813bd5ec9 128 std::strcpy(URI.Information,"\0");
giovannivisentini 0:674813bd5ec9 129 //while (TT4_WriteURI(&URI) != NFC_OK);
giovannivisentini 0:674813bd5ec9 130 while (TT4_WriteSMS(&sms) != NFC_OK);
giovannivisentini 0:674813bd5ec9 131 //while (TT4_Write(&sms) != NFC_OK);
giovannivisentini 0:674813bd5ec9 132 */
giovannivisentini 0:674813bd5ec9 133 }
giovannivisentini 0:674813bd5ec9 134
giovannivisentini 1:6d202b62ed68 135 void printRecord(NDefLib::Record *r){
giovannivisentini 1:6d202b62ed68 136 using namespace NDefLib;
giovannivisentini 1:6d202b62ed68 137 switch(r->getType()){
giovannivisentini 1:6d202b62ed68 138 case Record::TYPE_TEXT: {
giovannivisentini 1:6d202b62ed68 139 RecordText *temp = (RecordText*)r;
giovannivisentini 1:6d202b62ed68 140 pc.printf("Read Text: %s\r\n",temp->getText().c_str());
giovannivisentini 1:6d202b62ed68 141 break; }
giovannivisentini 1:6d202b62ed68 142 case Record::TYPE_AAR:{
giovannivisentini 1:6d202b62ed68 143 RecordAAR *temp = (RecordAAR*)r;
giovannivisentini 1:6d202b62ed68 144 pc.printf("Read ARR: %s\r\n",temp->getPackage().c_str());
giovannivisentini 1:6d202b62ed68 145 break; }
giovannivisentini 1:6d202b62ed68 146 case Record::TYPE_MIME:{
giovannivisentini 1:6d202b62ed68 147 RecordMimeType *temp = (RecordMimeType*)r;
giovannivisentini 1:6d202b62ed68 148 pc.printf("Read mimeType: %s\r\n",temp->getMimeType().c_str());
giovannivisentini 1:6d202b62ed68 149 pc.printf("Read mimeData: %s\r\n",
giovannivisentini 1:6d202b62ed68 150 std::string((const char*)temp->getMimeData(),
giovannivisentini 1:6d202b62ed68 151 temp->getMimeDataLenght()).c_str());
giovannivisentini 1:6d202b62ed68 152 break;}
giovannivisentini 1:6d202b62ed68 153 case Record::TYPE_URI:{
giovannivisentini 1:6d202b62ed68 154 RecordURI *temp = (RecordURI*)r;
giovannivisentini 1:6d202b62ed68 155 pc.printf("Read uriId: %d\r\n",temp->getUriId());
giovannivisentini 1:6d202b62ed68 156 pc.printf("Read uriType: %s\r\n",temp->getUriType().c_str());
giovannivisentini 1:6d202b62ed68 157 pc.printf("Read uriContent: %s\r\n",temp->getContent().c_str());
giovannivisentini 1:6d202b62ed68 158 break;}
giovannivisentini 1:6d202b62ed68 159 case Record::TYPE_URI_MAIL:{
giovannivisentini 1:6d202b62ed68 160 RecordMail *temp = (RecordMail*)r;
giovannivisentini 2:0648c1561eb2 161 pc.printf("Read Dest: %s\r\n",temp->getToAddress().c_str());
giovannivisentini 1:6d202b62ed68 162 pc.printf("Read Subject: %s\r\n",temp->getSubject().c_str());
giovannivisentini 1:6d202b62ed68 163 pc.printf("Read Body: %s\r\n",temp->getBody().c_str());
giovannivisentini 1:6d202b62ed68 164 break;}
giovannivisentini 2:0648c1561eb2 165 case Record::TYPE_URI_SMS:{
giovannivisentini 1:6d202b62ed68 166 RecordSMS *temp = (RecordSMS*)r;
giovannivisentini 1:6d202b62ed68 167 pc.printf("Read number: %s\r\n",temp->getNumber().c_str());
giovannivisentini 1:6d202b62ed68 168 pc.printf("Read message: %s\r\n",temp->getMessagge().c_str());
giovannivisentini 1:6d202b62ed68 169 break;}
giovannivisentini 2:0648c1561eb2 170 case Record::TYPE_URI_GEOLOCATION:{
giovannivisentini 1:6d202b62ed68 171 RecordGeo *temp = (RecordGeo*)r;
giovannivisentini 2:0648c1561eb2 172 pc.printf("Read lat: %f\r\n",temp->getLatitude());
giovannivisentini 2:0648c1561eb2 173 pc.printf("Read long: %f\r\n",temp->getLongitude());
giovannivisentini 1:6d202b62ed68 174 break;}
giovannivisentini 1:6d202b62ed68 175 case Record::TYPE_MIME_VCARD:{
giovannivisentini 2:0648c1561eb2 176 const RecordVCard *temp = (RecordVCard*)r;
giovannivisentini 1:6d202b62ed68 177 pc.printf("Read Name: %s\r\n",(*temp)[RecordVCard::NAME].c_str());
giovannivisentini 1:6d202b62ed68 178 pc.printf("Read Mail: %s\r\n",(*temp)[RecordVCard::EMAIL_WORK].c_str());
giovannivisentini 2:0648c1561eb2 179 pc.printf("Read ORG: %s\r\n",(*temp)[RecordVCard::ORGANIZATION].c_str());
giovannivisentini 1:6d202b62ed68 180 break;}
giovannivisentini 1:6d202b62ed68 181 case Record::TYPE_UNKNOWN:{
giovannivisentini 1:6d202b62ed68 182 pc.printf("Unknown record\r\n");
giovannivisentini 1:6d202b62ed68 183 break;}
giovannivisentini 1:6d202b62ed68 184 }//switch
giovannivisentini 1:6d202b62ed68 185 }
giovannivisentini 1:6d202b62ed68 186
giovannivisentini 2:0648c1561eb2 187 void changeRecord(NDefLib::Record *r){
giovannivisentini 1:6d202b62ed68 188 using namespace NDefLib;
giovannivisentini 2:0648c1561eb2 189 switch(r->getType()){
giovannivisentini 2:0648c1561eb2 190 case Record::TYPE_TEXT: {
giovannivisentini 2:0648c1561eb2 191 RecordText *temp = (RecordText*)r;
giovannivisentini 2:0648c1561eb2 192 temp->setText("CIAOCiao");
giovannivisentini 2:0648c1561eb2 193 break; }
giovannivisentini 2:0648c1561eb2 194 case Record::TYPE_AAR:{
giovannivisentini 2:0648c1561eb2 195 RecordAAR *temp = (RecordAAR*)r;
giovannivisentini 2:0648c1561eb2 196 temp->setPackage("set Package Ok");
giovannivisentini 2:0648c1561eb2 197 break; }
giovannivisentini 2:0648c1561eb2 198 case Record::TYPE_MIME:{
giovannivisentini 2:0648c1561eb2 199 RecordMimeType *temp = (RecordMimeType*)r;
giovannivisentini 2:0648c1561eb2 200 temp->copyMimeData((const uint8_t *)"String2",sizeof("String2"));
giovannivisentini 2:0648c1561eb2 201 break;}
giovannivisentini 2:0648c1561eb2 202 case Record::TYPE_URI:{
giovannivisentini 2:0648c1561eb2 203 RecordURI *temp = (RecordURI*)r;
giovannivisentini 2:0648c1561eb2 204 temp->setContent("google.it");
giovannivisentini 2:0648c1561eb2 205 break;}
giovannivisentini 2:0648c1561eb2 206 case Record::TYPE_URI_MAIL:{
giovannivisentini 2:0648c1561eb2 207 RecordMail *temp = (RecordMail*)r;
giovannivisentini 2:0648c1561eb2 208 temp->setToAddress("newMail@st.com");
giovannivisentini 2:0648c1561eb2 209 temp->setSubject("tag change");
giovannivisentini 2:0648c1561eb2 210 temp->setBody("read/change Works!");
giovannivisentini 2:0648c1561eb2 211 break;}
giovannivisentini 2:0648c1561eb2 212 case Record::TYPE_URI_SMS:{
giovannivisentini 2:0648c1561eb2 213 RecordSMS *temp = (RecordSMS*)r;
giovannivisentini 2:0648c1561eb2 214 temp->setMessage("Message Change");
giovannivisentini 2:0648c1561eb2 215 temp->setNumber("0987654321");
giovannivisentini 2:0648c1561eb2 216 break;}
giovannivisentini 2:0648c1561eb2 217 case Record::TYPE_URI_GEOLOCATION:{
giovannivisentini 2:0648c1561eb2 218 RecordGeo *temp = (RecordGeo*)r;
giovannivisentini 2:0648c1561eb2 219 temp->setLatitude(-temp->getLatitude());
giovannivisentini 2:0648c1561eb2 220 temp->setLongitude(-temp->getLongitude());
giovannivisentini 2:0648c1561eb2 221 break;}
giovannivisentini 2:0648c1561eb2 222 case Record::TYPE_MIME_VCARD:{
giovannivisentini 2:0648c1561eb2 223 RecordVCard *temp = (RecordVCard*)r;
giovannivisentini 2:0648c1561eb2 224 (*temp)[RecordVCard::NAME]="name change";
giovannivisentini 2:0648c1561eb2 225 (*temp)[RecordVCard::NICKNAME]="nic change";
giovannivisentini 2:0648c1561eb2 226 break;}
giovannivisentini 2:0648c1561eb2 227 case Record::TYPE_UNKNOWN:{
giovannivisentini 2:0648c1561eb2 228 pc.printf("Unknown record\r\n");
giovannivisentini 2:0648c1561eb2 229 break;}
giovannivisentini 2:0648c1561eb2 230 }//switch
giovannivisentini 2:0648c1561eb2 231 }
giovannivisentini 2:0648c1561eb2 232
giovannivisentini 2:0648c1561eb2 233 void readNfcTag(NDefLib::Type4NfcTag &tag){
giovannivisentini 2:0648c1561eb2 234 using namespace NDefLib;
giovannivisentini 2:0648c1561eb2 235
giovannivisentini 1:6d202b62ed68 236 if(tag.openSession()){
giovannivisentini 1:6d202b62ed68 237 NDefLib::Message readMsg;
giovannivisentini 1:6d202b62ed68 238
giovannivisentini 1:6d202b62ed68 239 tag.read(&readMsg);
giovannivisentini 1:6d202b62ed68 240
giovannivisentini 1:6d202b62ed68 241 if(readMsg.getNRecords()==0){
giovannivisentini 1:6d202b62ed68 242 pc.printf("Error Read\r\n");
giovannivisentini 1:6d202b62ed68 243 }else{
giovannivisentini 1:6d202b62ed68 244 for(uint32_t i=0;i<readMsg.getNRecords();i++){
giovannivisentini 2:0648c1561eb2 245 Record *r = readMsg[i];
giovannivisentini 1:6d202b62ed68 246 printRecord(r);
giovannivisentini 1:6d202b62ed68 247 delete r;
giovannivisentini 1:6d202b62ed68 248 }//for
giovannivisentini 1:6d202b62ed68 249 }//if-else
giovannivisentini 1:6d202b62ed68 250
giovannivisentini 1:6d202b62ed68 251 tag.closeSession();
giovannivisentini 1:6d202b62ed68 252 }else{
giovannivisentini 1:6d202b62ed68 253 pc.printf("Error open Session2\n\r");
giovannivisentini 1:6d202b62ed68 254 }
giovannivisentini 1:6d202b62ed68 255 }
giovannivisentini 1:6d202b62ed68 256
giovannivisentini 2:0648c1561eb2 257
giovannivisentini 2:0648c1561eb2 258 void changeNfcTag(NDefLib::Type4NfcTag &tag){
giovannivisentini 2:0648c1561eb2 259 using namespace NDefLib;
giovannivisentini 2:0648c1561eb2 260
giovannivisentini 2:0648c1561eb2 261 if(tag.openSession()){
giovannivisentini 2:0648c1561eb2 262 NDefLib::Message readMsg;
giovannivisentini 2:0648c1561eb2 263
giovannivisentini 2:0648c1561eb2 264 tag.read(&readMsg);
giovannivisentini 2:0648c1561eb2 265
giovannivisentini 2:0648c1561eb2 266 if(readMsg.getNRecords()==0){
giovannivisentini 2:0648c1561eb2 267 pc.printf("Error Read\r\n");
giovannivisentini 2:0648c1561eb2 268 }else{
giovannivisentini 2:0648c1561eb2 269 for(uint32_t i=0;i<readMsg.getNRecords();i++){
giovannivisentini 2:0648c1561eb2 270 Record *r = readMsg[i];
giovannivisentini 2:0648c1561eb2 271 changeRecord(r);
giovannivisentini 2:0648c1561eb2 272 }//for
giovannivisentini 2:0648c1561eb2 273 tag.write(readMsg);
giovannivisentini 2:0648c1561eb2 274 }//if-else
giovannivisentini 2:0648c1561eb2 275
giovannivisentini 2:0648c1561eb2 276 tag.closeSession();
giovannivisentini 2:0648c1561eb2 277 }else{
giovannivisentini 2:0648c1561eb2 278 pc.printf("Error open SessionChange\n\r");
giovannivisentini 2:0648c1561eb2 279 }
giovannivisentini 2:0648c1561eb2 280 }
giovannivisentini 2:0648c1561eb2 281
giovannivisentini 2:0648c1561eb2 282 static bool buttonPress=false;
giovannivisentini 2:0648c1561eb2 283 void setButtonPress(){
giovannivisentini 2:0648c1561eb2 284 buttonPress=true;
giovannivisentini 2:0648c1561eb2 285 }
giovannivisentini 2:0648c1561eb2 286
giovannivisentini 0:674813bd5ec9 287 int main() {
giovannivisentini 2:0648c1561eb2 288 I2C i2cChannel(M24SR_SDA,M24SR_SDL);
giovannivisentini 0:674813bd5ec9 289 i2cChannel.frequency(400000);
giovannivisentini 0:674813bd5ec9 290 X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel);
giovannivisentini 2:0648c1561eb2 291 Type4NfcTagSTM24SR tag(nfcNucleo->getM24SR());
giovannivisentini 2:0648c1561eb2 292 InterruptIn mybutton(USER_BUTTON);
giovannivisentini 1:6d202b62ed68 293 pc.printf("Hello World !\n\r");
giovannivisentini 0:674813bd5ec9 294 nfcNucleo->getLed1()=1;
giovannivisentini 0:674813bd5ec9 295 nfcNucleo->getLed2()=0;
giovannivisentini 0:674813bd5ec9 296 nfcNucleo->getLed3()=0;
giovannivisentini 0:674813bd5ec9 297
giovannivisentini 2:0648c1561eb2 298 setNFCTag(tag);
giovannivisentini 2:0648c1561eb2 299 readNfcTag(tag);
giovannivisentini 2:0648c1561eb2 300
giovannivisentini 2:0648c1561eb2 301 mybutton.fall(setButtonPress);
giovannivisentini 2:0648c1561eb2 302
giovannivisentini 0:674813bd5ec9 303 while(1) {
giovannivisentini 0:674813bd5ec9 304 wait(1);
giovannivisentini 0:674813bd5ec9 305 myled = !myled;
giovannivisentini 0:674813bd5ec9 306 shiftLed(nfcNucleo->getLed1(),nfcNucleo->getLed2(),nfcNucleo->getLed3());
giovannivisentini 2:0648c1561eb2 307 if(buttonPress){
giovannivisentini 2:0648c1561eb2 308 changeNfcTag(tag);
giovannivisentini 2:0648c1561eb2 309 readNfcTag(tag);
giovannivisentini 2:0648c1561eb2 310 buttonPress=false;
giovannivisentini 2:0648c1561eb2 311 }
giovannivisentini 1:6d202b62ed68 312 }
giovannivisentini 1:6d202b62ed68 313
giovannivisentini 0:674813bd5ec9 314 }
giovannivisentini 2:0648c1561eb2 315