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/Sample_writeAndChangeAll.cpp@4:f40b3505070c, 2015-12-03 (annotated)
- Committer:
- giovannivisentini
- Date:
- Thu Dec 03 13:44:40 2015 +0000
- Revision:
- 4:f40b3505070c
- Child:
- 5:3b300c8235b7
move the driver file in a separate library + split the sample in different files
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| giovannivisentini | 4:f40b3505070c | 1 | #include "mbed.h" |
| giovannivisentini | 4:f40b3505070c | 2 | |
| giovannivisentini | 4:f40b3505070c | 3 | #include "Type4NfcTagSTM24SR.h" |
| giovannivisentini | 4:f40b3505070c | 4 | |
| giovannivisentini | 4:f40b3505070c | 5 | #include "NDefLib/RecordType/RecordAAR.h" |
| giovannivisentini | 4:f40b3505070c | 6 | #include "NDefLib/RecordType/RecordSMS.h" |
| giovannivisentini | 4:f40b3505070c | 7 | #include "NDefLib/RecordType/RecordGeo.h" |
| giovannivisentini | 4:f40b3505070c | 8 | #include "NDefLib/RecordType/RecordURI.h" |
| giovannivisentini | 4:f40b3505070c | 9 | #include "NDefLib/RecordType/RecordMail.h" |
| giovannivisentini | 4:f40b3505070c | 10 | #include "NDefLib/RecordType/RecordText.h" |
| giovannivisentini | 4:f40b3505070c | 11 | #include "NDefLib/RecordType/RecordMimeType.h" |
| giovannivisentini | 4:f40b3505070c | 12 | #include "NDefLib/RecordType/RecordVCard.h" |
| giovannivisentini | 4:f40b3505070c | 13 | |
| giovannivisentini | 4:f40b3505070c | 14 | #include "X_NUCLEO_NFC01A1.h" |
| giovannivisentini | 4:f40b3505070c | 15 | |
| giovannivisentini | 4:f40b3505070c | 16 | static Serial pc(SERIAL_TX, SERIAL_RX); |
| giovannivisentini | 4:f40b3505070c | 17 | |
| giovannivisentini | 4:f40b3505070c | 18 | static void shiftLed(DigitalOut &led1,DigitalOut &led2,DigitalOut &led3){ |
| giovannivisentini | 4:f40b3505070c | 19 | const uint8_t prevLed1=led1; |
| giovannivisentini | 4:f40b3505070c | 20 | const uint8_t prevLed2=led2; |
| giovannivisentini | 4:f40b3505070c | 21 | const uint8_t prevLed3=led3; |
| giovannivisentini | 4:f40b3505070c | 22 | led1=prevLed3; |
| giovannivisentini | 4:f40b3505070c | 23 | led2=prevLed1; |
| giovannivisentini | 4:f40b3505070c | 24 | led3=prevLed2; |
| giovannivisentini | 4:f40b3505070c | 25 | } |
| giovannivisentini | 4:f40b3505070c | 26 | |
| giovannivisentini | 4:f40b3505070c | 27 | static void setNFCTag(NDefLib::Type4NfcTag &tag){ |
| giovannivisentini | 4:f40b3505070c | 28 | |
| giovannivisentini | 4:f40b3505070c | 29 | bool writeStatus,closeStatus; |
| giovannivisentini | 4:f40b3505070c | 30 | if(tag.openSession()){ |
| giovannivisentini | 4:f40b3505070c | 31 | NDefLib::Message msg; |
| giovannivisentini | 4:f40b3505070c | 32 | |
| giovannivisentini | 4:f40b3505070c | 33 | NDefLib::RecordAAR rAAR("com.st.BlueMS"); |
| giovannivisentini | 4:f40b3505070c | 34 | msg.addRecord(&rAAR); |
| giovannivisentini | 4:f40b3505070c | 35 | |
| giovannivisentini | 4:f40b3505070c | 36 | NDefLib::RecordSMS rSMS("123456789","st.com.BlueMS"); |
| giovannivisentini | 4:f40b3505070c | 37 | msg.addRecord(&rSMS); |
| giovannivisentini | 4:f40b3505070c | 38 | |
| giovannivisentini | 4:f40b3505070c | 39 | NDefLib::RecordGeo rGeo(123.123,-456.789); |
| giovannivisentini | 4:f40b3505070c | 40 | msg.addRecord(&rGeo); |
| giovannivisentini | 4:f40b3505070c | 41 | |
| giovannivisentini | 4:f40b3505070c | 42 | NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"http://www.st.com"); |
| giovannivisentini | 4:f40b3505070c | 43 | msg.addRecord(&rUri); |
| giovannivisentini | 4:f40b3505070c | 44 | |
| giovannivisentini | 4:f40b3505070c | 45 | NDefLib::RecordMail rMail("mail@st.com","ciao","da nfc tag"); |
| giovannivisentini | 4:f40b3505070c | 46 | msg.addRecord(&rMail); |
| giovannivisentini | 4:f40b3505070c | 47 | |
| giovannivisentini | 4:f40b3505070c | 48 | NDefLib::RecordMimeType rText1("text/plain",(const uint8_t*)"ciao",4); |
| giovannivisentini | 4:f40b3505070c | 49 | msg.addRecord(&rText1); |
| giovannivisentini | 4:f40b3505070c | 50 | |
| giovannivisentini | 4:f40b3505070c | 51 | NDefLib::RecordText rText3(NDefLib::RecordText::UTF8,"it","ciao"); |
| giovannivisentini | 4:f40b3505070c | 52 | msg.addRecord(&rText3); |
| giovannivisentini | 4:f40b3505070c | 53 | |
| giovannivisentini | 4:f40b3505070c | 54 | NDefLib::RecordVCard::VCardInfo_t cardInfo; |
| giovannivisentini | 4:f40b3505070c | 55 | cardInfo[NDefLib::RecordVCard::FORMATTED_NAME]="prova prova1"; |
| giovannivisentini | 4:f40b3505070c | 56 | cardInfo[NDefLib::RecordVCard::ADDRESS_HOME]=";;1 Main St.;Springfield;IL;12345;USA"; |
| giovannivisentini | 4:f40b3505070c | 57 | cardInfo[NDefLib::RecordVCard::ADDRESS_WORK]=";;2 Main St.;Springfield;IL;12345;USA"; |
| giovannivisentini | 4:f40b3505070c | 58 | cardInfo[NDefLib::RecordVCard::EMAIL_WORK]="workmail@st.com"; |
| giovannivisentini | 4:f40b3505070c | 59 | cardInfo[NDefLib::RecordVCard::EMAIL_HOME]="homemail@st.com"; |
| giovannivisentini | 4:f40b3505070c | 60 | cardInfo[NDefLib::RecordVCard::GEO]="39.95;-75.1667"; |
| giovannivisentini | 4:f40b3505070c | 61 | cardInfo[NDefLib::RecordVCard::IMPP]="aim:johndoe@aol.com"; |
| giovannivisentini | 4:f40b3505070c | 62 | cardInfo[NDefLib::RecordVCard::NAME]="prova2;prova3"; |
| giovannivisentini | 4:f40b3505070c | 63 | cardInfo[NDefLib::RecordVCard::NICKNAME]="test"; |
| giovannivisentini | 4:f40b3505070c | 64 | cardInfo[NDefLib::RecordVCard::NOTE]="A good test"; |
| giovannivisentini | 4:f40b3505070c | 65 | cardInfo[NDefLib::RecordVCard::ORGANIZATION]="STM"; |
| giovannivisentini | 4:f40b3505070c | 66 | cardInfo[NDefLib::RecordVCard::TEL_HOME]="123"; |
| giovannivisentini | 4:f40b3505070c | 67 | cardInfo[NDefLib::RecordVCard::TEL_MOBILE]="456"; |
| giovannivisentini | 4:f40b3505070c | 68 | cardInfo[NDefLib::RecordVCard::TEL_WORK]="789"; |
| giovannivisentini | 4:f40b3505070c | 69 | cardInfo[NDefLib::RecordVCard::TITLE]="King"; |
| giovannivisentini | 4:f40b3505070c | 70 | cardInfo[NDefLib::RecordVCard::URL]="www.st.com"; |
| giovannivisentini | 4:f40b3505070c | 71 | 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 | 72 | NDefLib::RecordVCard rVCard(cardInfo); |
| giovannivisentini | 4:f40b3505070c | 73 | msg.addRecord(&rVCard); |
| giovannivisentini | 4:f40b3505070c | 74 | |
| giovannivisentini | 4:f40b3505070c | 75 | writeStatus = tag.write(msg); |
| giovannivisentini | 4:f40b3505070c | 76 | |
| giovannivisentini | 4:f40b3505070c | 77 | closeStatus = tag.closeSession(); |
| giovannivisentini | 4:f40b3505070c | 78 | |
| giovannivisentini | 4:f40b3505070c | 79 | }else |
| giovannivisentini | 4:f40b3505070c | 80 | pc.printf("Error open Session\n\r"); |
| giovannivisentini | 4:f40b3505070c | 81 | |
| giovannivisentini | 4:f40b3505070c | 82 | if(writeStatus) |
| giovannivisentini | 4:f40b3505070c | 83 | pc.printf("writeOk\n\r"); |
| giovannivisentini | 4:f40b3505070c | 84 | else |
| giovannivisentini | 4:f40b3505070c | 85 | pc.printf("writeFail\n\r"); |
| giovannivisentini | 4:f40b3505070c | 86 | |
| giovannivisentini | 4:f40b3505070c | 87 | if(closeStatus) |
| giovannivisentini | 4:f40b3505070c | 88 | pc.printf("closeOk\n\r"); |
| giovannivisentini | 4:f40b3505070c | 89 | else |
| giovannivisentini | 4:f40b3505070c | 90 | pc.printf("CloseFail\n\r"); |
| giovannivisentini | 4:f40b3505070c | 91 | } |
| giovannivisentini | 4:f40b3505070c | 92 | |
| giovannivisentini | 4:f40b3505070c | 93 | static void printRecord(NDefLib::Record *r){ |
| giovannivisentini | 4:f40b3505070c | 94 | using namespace NDefLib; |
| giovannivisentini | 4:f40b3505070c | 95 | switch(r->getType()){ |
| giovannivisentini | 4:f40b3505070c | 96 | case Record::TYPE_TEXT: { |
| giovannivisentini | 4:f40b3505070c | 97 | RecordText *temp = (RecordText*)r; |
| giovannivisentini | 4:f40b3505070c | 98 | pc.printf("Read Text: %s\r\n",temp->getText().c_str()); |
| giovannivisentini | 4:f40b3505070c | 99 | break; } |
| giovannivisentini | 4:f40b3505070c | 100 | case Record::TYPE_AAR:{ |
| giovannivisentini | 4:f40b3505070c | 101 | RecordAAR *temp = (RecordAAR*)r; |
| giovannivisentini | 4:f40b3505070c | 102 | pc.printf("Read ARR: %s\r\n",temp->getPackage().c_str()); |
| giovannivisentini | 4:f40b3505070c | 103 | break; } |
| giovannivisentini | 4:f40b3505070c | 104 | case Record::TYPE_MIME:{ |
| giovannivisentini | 4:f40b3505070c | 105 | RecordMimeType *temp = (RecordMimeType*)r; |
| giovannivisentini | 4:f40b3505070c | 106 | pc.printf("Read mimeType: %s\r\n",temp->getMimeType().c_str()); |
| giovannivisentini | 4:f40b3505070c | 107 | pc.printf("Read mimeData: %s\r\n", |
| giovannivisentini | 4:f40b3505070c | 108 | std::string((const char*)temp->getMimeData(), |
| giovannivisentini | 4:f40b3505070c | 109 | temp->getMimeDataLenght()).c_str()); |
| giovannivisentini | 4:f40b3505070c | 110 | break;} |
| giovannivisentini | 4:f40b3505070c | 111 | case Record::TYPE_URI:{ |
| giovannivisentini | 4:f40b3505070c | 112 | RecordURI *temp = (RecordURI*)r; |
| giovannivisentini | 4:f40b3505070c | 113 | pc.printf("Read uriId: %d\r\n",temp->getUriId()); |
| giovannivisentini | 4:f40b3505070c | 114 | pc.printf("Read uriType: %s\r\n",temp->getUriType().c_str()); |
| giovannivisentini | 4:f40b3505070c | 115 | pc.printf("Read uriContent: %s\r\n",temp->getContent().c_str()); |
| giovannivisentini | 4:f40b3505070c | 116 | break;} |
| giovannivisentini | 4:f40b3505070c | 117 | case Record::TYPE_URI_MAIL:{ |
| giovannivisentini | 4:f40b3505070c | 118 | RecordMail *temp = (RecordMail*)r; |
| giovannivisentini | 4:f40b3505070c | 119 | pc.printf("Read Dest: %s\r\n",temp->getToAddress().c_str()); |
| giovannivisentini | 4:f40b3505070c | 120 | pc.printf("Read Subject: %s\r\n",temp->getSubject().c_str()); |
| giovannivisentini | 4:f40b3505070c | 121 | pc.printf("Read Body: %s\r\n",temp->getBody().c_str()); |
| giovannivisentini | 4:f40b3505070c | 122 | break;} |
| giovannivisentini | 4:f40b3505070c | 123 | case Record::TYPE_URI_SMS:{ |
| giovannivisentini | 4:f40b3505070c | 124 | RecordSMS *temp = (RecordSMS*)r; |
| giovannivisentini | 4:f40b3505070c | 125 | pc.printf("Read number: %s\r\n",temp->getNumber().c_str()); |
| giovannivisentini | 4:f40b3505070c | 126 | pc.printf("Read message: %s\r\n",temp->getMessagge().c_str()); |
| giovannivisentini | 4:f40b3505070c | 127 | break;} |
| giovannivisentini | 4:f40b3505070c | 128 | case Record::TYPE_URI_GEOLOCATION:{ |
| giovannivisentini | 4:f40b3505070c | 129 | RecordGeo *temp = (RecordGeo*)r; |
| giovannivisentini | 4:f40b3505070c | 130 | pc.printf("Read lat: %f\r\n",temp->getLatitude()); |
| giovannivisentini | 4:f40b3505070c | 131 | pc.printf("Read long: %f\r\n",temp->getLongitude()); |
| giovannivisentini | 4:f40b3505070c | 132 | break;} |
| giovannivisentini | 4:f40b3505070c | 133 | case Record::TYPE_MIME_VCARD:{ |
| giovannivisentini | 4:f40b3505070c | 134 | const RecordVCard *temp = (RecordVCard*)r; |
| giovannivisentini | 4:f40b3505070c | 135 | pc.printf("Read Name: %s\r\n",(*temp)[RecordVCard::NAME].c_str()); |
| giovannivisentini | 4:f40b3505070c | 136 | pc.printf("Read Mail: %s\r\n",(*temp)[RecordVCard::EMAIL_WORK].c_str()); |
| giovannivisentini | 4:f40b3505070c | 137 | pc.printf("Read ORG: %s\r\n",(*temp)[RecordVCard::ORGANIZATION].c_str()); |
| giovannivisentini | 4:f40b3505070c | 138 | break;} |
| giovannivisentini | 4:f40b3505070c | 139 | case Record::TYPE_UNKNOWN:{ |
| giovannivisentini | 4:f40b3505070c | 140 | pc.printf("Unknown record\r\n"); |
| giovannivisentini | 4:f40b3505070c | 141 | break;} |
| giovannivisentini | 4:f40b3505070c | 142 | }//switch |
| giovannivisentini | 4:f40b3505070c | 143 | } |
| giovannivisentini | 4:f40b3505070c | 144 | |
| giovannivisentini | 4:f40b3505070c | 145 | static void changeRecord(NDefLib::Record *r){ |
| giovannivisentini | 4:f40b3505070c | 146 | using namespace NDefLib; |
| giovannivisentini | 4:f40b3505070c | 147 | switch(r->getType()){ |
| giovannivisentini | 4:f40b3505070c | 148 | case Record::TYPE_TEXT: { |
| giovannivisentini | 4:f40b3505070c | 149 | RecordText *temp = (RecordText*)r; |
| giovannivisentini | 4:f40b3505070c | 150 | temp->setText("CIAOCiao"); |
| giovannivisentini | 4:f40b3505070c | 151 | break; } |
| giovannivisentini | 4:f40b3505070c | 152 | case Record::TYPE_AAR:{ |
| giovannivisentini | 4:f40b3505070c | 153 | RecordAAR *temp = (RecordAAR*)r; |
| giovannivisentini | 4:f40b3505070c | 154 | temp->setPackage("set Package Ok"); |
| giovannivisentini | 4:f40b3505070c | 155 | break; } |
| giovannivisentini | 4:f40b3505070c | 156 | case Record::TYPE_MIME:{ |
| giovannivisentini | 4:f40b3505070c | 157 | RecordMimeType *temp = (RecordMimeType*)r; |
| giovannivisentini | 4:f40b3505070c | 158 | temp->copyMimeData((const uint8_t *)"String2",sizeof("String2")); |
| giovannivisentini | 4:f40b3505070c | 159 | break;} |
| giovannivisentini | 4:f40b3505070c | 160 | case Record::TYPE_URI:{ |
| giovannivisentini | 4:f40b3505070c | 161 | RecordURI *temp = (RecordURI*)r; |
| giovannivisentini | 4:f40b3505070c | 162 | temp->setContent("google.it"); |
| giovannivisentini | 4:f40b3505070c | 163 | break;} |
| giovannivisentini | 4:f40b3505070c | 164 | case Record::TYPE_URI_MAIL:{ |
| giovannivisentini | 4:f40b3505070c | 165 | RecordMail *temp = (RecordMail*)r; |
| giovannivisentini | 4:f40b3505070c | 166 | temp->setToAddress("newMail@st.com"); |
| giovannivisentini | 4:f40b3505070c | 167 | temp->setSubject("tag change"); |
| giovannivisentini | 4:f40b3505070c | 168 | temp->setBody("read/change Works!"); |
| giovannivisentini | 4:f40b3505070c | 169 | break;} |
| giovannivisentini | 4:f40b3505070c | 170 | case Record::TYPE_URI_SMS:{ |
| giovannivisentini | 4:f40b3505070c | 171 | RecordSMS *temp = (RecordSMS*)r; |
| giovannivisentini | 4:f40b3505070c | 172 | temp->setMessage("Message Change"); |
| giovannivisentini | 4:f40b3505070c | 173 | temp->setNumber("0987654321"); |
| giovannivisentini | 4:f40b3505070c | 174 | break;} |
| giovannivisentini | 4:f40b3505070c | 175 | case Record::TYPE_URI_GEOLOCATION:{ |
| giovannivisentini | 4:f40b3505070c | 176 | RecordGeo *temp = (RecordGeo*)r; |
| giovannivisentini | 4:f40b3505070c | 177 | temp->setLatitude(-temp->getLatitude()); |
| giovannivisentini | 4:f40b3505070c | 178 | temp->setLongitude(-temp->getLongitude()); |
| giovannivisentini | 4:f40b3505070c | 179 | break;} |
| giovannivisentini | 4:f40b3505070c | 180 | case Record::TYPE_MIME_VCARD:{ |
| giovannivisentini | 4:f40b3505070c | 181 | RecordVCard *temp = (RecordVCard*)r; |
| giovannivisentini | 4:f40b3505070c | 182 | (*temp)[RecordVCard::NAME]="name change"; |
| giovannivisentini | 4:f40b3505070c | 183 | (*temp)[RecordVCard::NICKNAME]="nic change"; |
| giovannivisentini | 4:f40b3505070c | 184 | break;} |
| giovannivisentini | 4:f40b3505070c | 185 | case Record::TYPE_UNKNOWN:{ |
| giovannivisentini | 4:f40b3505070c | 186 | pc.printf("Unknown record\r\n"); |
| giovannivisentini | 4:f40b3505070c | 187 | break;} |
| giovannivisentini | 4:f40b3505070c | 188 | }//switch |
| giovannivisentini | 4:f40b3505070c | 189 | } |
| giovannivisentini | 4:f40b3505070c | 190 | |
| giovannivisentini | 4:f40b3505070c | 191 | static void readNfcTag(NDefLib::Type4NfcTag &tag){ |
| giovannivisentini | 4:f40b3505070c | 192 | using namespace NDefLib; |
| giovannivisentini | 4:f40b3505070c | 193 | |
| giovannivisentini | 4:f40b3505070c | 194 | if(tag.openSession()){ |
| giovannivisentini | 4:f40b3505070c | 195 | NDefLib::Message readMsg; |
| giovannivisentini | 4:f40b3505070c | 196 | |
| giovannivisentini | 4:f40b3505070c | 197 | tag.read(&readMsg); |
| giovannivisentini | 4:f40b3505070c | 198 | |
| giovannivisentini | 4:f40b3505070c | 199 | if(readMsg.getNRecords()==0){ |
| giovannivisentini | 4:f40b3505070c | 200 | pc.printf("Error Read\r\n"); |
| giovannivisentini | 4:f40b3505070c | 201 | }else{ |
| giovannivisentini | 4:f40b3505070c | 202 | for(uint32_t i=0;i<readMsg.getNRecords();i++){ |
| giovannivisentini | 4:f40b3505070c | 203 | Record *r = readMsg[i]; |
| giovannivisentini | 4:f40b3505070c | 204 | printRecord(r); |
| giovannivisentini | 4:f40b3505070c | 205 | delete r; |
| giovannivisentini | 4:f40b3505070c | 206 | }//for |
| giovannivisentini | 4:f40b3505070c | 207 | }//if-else |
| giovannivisentini | 4:f40b3505070c | 208 | |
| giovannivisentini | 4:f40b3505070c | 209 | tag.closeSession(); |
| giovannivisentini | 4:f40b3505070c | 210 | }else{ |
| giovannivisentini | 4:f40b3505070c | 211 | pc.printf("Error open read Session\n\r"); |
| giovannivisentini | 4:f40b3505070c | 212 | } |
| giovannivisentini | 4:f40b3505070c | 213 | } |
| giovannivisentini | 4:f40b3505070c | 214 | |
| giovannivisentini | 4:f40b3505070c | 215 | |
| giovannivisentini | 4:f40b3505070c | 216 | static void changeNfcTag(NDefLib::Type4NfcTag &tag){ |
| giovannivisentini | 4:f40b3505070c | 217 | using namespace NDefLib; |
| giovannivisentini | 4:f40b3505070c | 218 | |
| giovannivisentini | 4:f40b3505070c | 219 | if(tag.openSession()){ |
| giovannivisentini | 4:f40b3505070c | 220 | NDefLib::Message readMsg; |
| giovannivisentini | 4:f40b3505070c | 221 | |
| giovannivisentini | 4:f40b3505070c | 222 | tag.read(&readMsg); |
| giovannivisentini | 4:f40b3505070c | 223 | |
| giovannivisentini | 4:f40b3505070c | 224 | if(readMsg.getNRecords()==0){ |
| giovannivisentini | 4:f40b3505070c | 225 | pc.printf("Error Read\r\n"); |
| giovannivisentini | 4:f40b3505070c | 226 | }else{ |
| giovannivisentini | 4:f40b3505070c | 227 | for(uint32_t i=0;i<readMsg.getNRecords();i++){ |
| giovannivisentini | 4:f40b3505070c | 228 | Record *r = readMsg[i]; |
| giovannivisentini | 4:f40b3505070c | 229 | changeRecord(r); |
| giovannivisentini | 4:f40b3505070c | 230 | }//for |
| giovannivisentini | 4:f40b3505070c | 231 | tag.write(readMsg); |
| giovannivisentini | 4:f40b3505070c | 232 | }//if-else |
| giovannivisentini | 4:f40b3505070c | 233 | |
| giovannivisentini | 4:f40b3505070c | 234 | tag.closeSession(); |
| giovannivisentini | 4:f40b3505070c | 235 | }else{ |
| giovannivisentini | 4:f40b3505070c | 236 | pc.printf("Error open SessionChange\n\r"); |
| giovannivisentini | 4:f40b3505070c | 237 | } |
| giovannivisentini | 4:f40b3505070c | 238 | } |
| giovannivisentini | 4:f40b3505070c | 239 | |
| giovannivisentini | 4:f40b3505070c | 240 | static volatile bool buttonPress=false; |
| giovannivisentini | 4:f40b3505070c | 241 | |
| giovannivisentini | 4:f40b3505070c | 242 | static void setButtonPress(){ |
| giovannivisentini | 4:f40b3505070c | 243 | buttonPress=true; |
| giovannivisentini | 4:f40b3505070c | 244 | } |
| giovannivisentini | 4:f40b3505070c | 245 | |
| giovannivisentini | 4:f40b3505070c | 246 | void sample_writeAndChangeAll() { |
| giovannivisentini | 4:f40b3505070c | 247 | I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN); |
| giovannivisentini | 4:f40b3505070c | 248 | i2cChannel.frequency(400000); |
| giovannivisentini | 4:f40b3505070c | 249 | DigitalOut nucleoLed(LED1); |
| giovannivisentini | 4:f40b3505070c | 250 | |
| giovannivisentini | 4:f40b3505070c | 251 | X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel); |
| giovannivisentini | 4:f40b3505070c | 252 | Type4NfcTagSTM24SR tag(nfcNucleo->getM24SR()); |
| giovannivisentini | 4:f40b3505070c | 253 | InterruptIn mybutton(USER_BUTTON); |
| giovannivisentini | 4:f40b3505070c | 254 | |
| giovannivisentini | 4:f40b3505070c | 255 | nfcNucleo->getLed1()=1; |
| giovannivisentini | 4:f40b3505070c | 256 | nfcNucleo->getLed2()=0; |
| giovannivisentini | 4:f40b3505070c | 257 | nfcNucleo->getLed3()=0; |
| giovannivisentini | 4:f40b3505070c | 258 | |
| giovannivisentini | 4:f40b3505070c | 259 | setNFCTag(tag); |
| giovannivisentini | 4:f40b3505070c | 260 | readNfcTag(tag); |
| giovannivisentini | 4:f40b3505070c | 261 | |
| giovannivisentini | 4:f40b3505070c | 262 | mybutton.fall(setButtonPress); |
| giovannivisentini | 4:f40b3505070c | 263 | |
| giovannivisentini | 4:f40b3505070c | 264 | while(true) { |
| giovannivisentini | 4:f40b3505070c | 265 | wait(1); |
| giovannivisentini | 4:f40b3505070c | 266 | nucleoLed = !nucleoLed; |
| giovannivisentini | 4:f40b3505070c | 267 | shiftLed(nfcNucleo->getLed1(),nfcNucleo->getLed2(),nfcNucleo->getLed3()); |
| giovannivisentini | 4:f40b3505070c | 268 | if(buttonPress){ |
| giovannivisentini | 4:f40b3505070c | 269 | changeNfcTag(tag); |
| giovannivisentini | 4:f40b3505070c | 270 | readNfcTag(tag); |
| giovannivisentini | 4:f40b3505070c | 271 | buttonPress=false; |
| giovannivisentini | 4:f40b3505070c | 272 | } |
| giovannivisentini | 4:f40b3505070c | 273 | } |
| giovannivisentini | 4:f40b3505070c | 274 | |
| giovannivisentini | 4:f40b3505070c | 275 | } |
