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@8:a9ecd7687de7, 2015-12-21 (annotated)
- Committer:
- giovannivisentini
- Date:
- Mon Dec 21 13:01:41 2015 +0000
- Revision:
- 8:a9ecd7687de7
- Parent:
- 7:ba6632daeea9
- Child:
- 9:9742acd0c015
remove already imported library and add a new demo
Who changed what in which revision?
| User | Revision | Line number | New 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 | 8:a9ecd7687de7 | 283 | |
| 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 | } |
