
NFC
Dependencies: mbed NDefLib X_NUCLEO_NFC01A1
Revision 18:982e7640cfb6, committed 2016-08-31
- Comitter:
- giovannivisentini
- Date:
- Wed Aug 31 09:58:19 2016 +0000
- Parent:
- 15:9b61a8057933
- Commit message:
- add a read example
Changed in this revision
--- a/NDefLib.lib Wed Feb 03 09:04:26 2016 +0000 +++ b/NDefLib.lib Wed Aug 31 09:58:19 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ST-Expansion-SW-Team/code/NDefLib/#030e7ffdf512 +https://developer.mbed.org/teams/ST-Expansion-SW-Team/code/NDefLib/#46899fa3d9f2
--- a/main.cpp Wed Feb 03 09:04:26 2016 +0000 +++ b/main.cpp Wed Aug 31 09:58:19 2016 +0000 @@ -42,21 +42,11 @@ #include "NDefLib/RecordType/RecordURI.h" /** - * Write a Ndef URI message linking to st.com site. + * Write an NDef message with a Uri record linking the st.com site + * @param nfcNucleo expansion board where write the NDef message */ -int main(void){ - - //use default board pinout - I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN); - X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel,NULL, - X_NUCLEO_NFC01A1::DEFAULT_GPO_PIN,X_NUCLEO_NFC01A1::DEFAULT_RF_DISABLE_PIN, - X_NUCLEO_NFC01A1::DEFAULT_LED1_PIN,X_NUCLEO_NFC01A1::DEFAULT_LED2_PIN, - X_NUCLEO_NFC01A1::DEFAULT_LED3_PIN); - - //retrieve the NdefLib interface - NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag(); - printf("System Init done: !\n\r"); - +static void writeUrl(X_NUCLEO_NFC01A1 *nfcNucleo){ + NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag(); //open the i2c session with the nfc chip if(tag.openSession()){ printf("Session opened\n\r"); @@ -85,4 +75,91 @@ }else printf("Error opening the session\n\r"); +} + +/** + * Read a NDef message and print content and type of all the uri record inside + * the message + * @param nfcNucleo expansion board from where read the message + */ +static void readUrl(X_NUCLEO_NFC01A1 *nfcNucleo){ + NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag(); + //open the i2c session with the nfc chip + if(tag.openSession()){ + printf("Session opened\n\r"); + nfcNucleo->getLed1()=1; + + //create the NDef message and record + NDefLib::Message msg; + + //read the tag + if(tag.read(&msg)){ + const uint32_t nRecords = msg.getNRecords(); + printf("Tag read: %d record\n\r",msg.getNRecords()); + for(int i =0 ;i<nRecords ;i++){ + if(msg[i]->getType()== NDefLib::Record::TYPE_URI){ + NDefLib::RecordURI *rUri = (NDefLib::RecordURI *)msg[i]; + printf("UriType: %x\n\rUriContent: %s\n\r", + rUri->getUriId(), + rUri->getContent().c_str()); + }//if + }//for + //free the read records + NDefLib::Message::removeAndDeleteAllRecord(msg); + }else{ + printf("Error Reading \n\r"); + }//if-else + + //close the i2c session + if(tag.closeSession()){ + printf("Session closed\n\r"); + nfcNucleo->getLed3()=1; + }else{ + printf("Error closing the session\n\r"); + }//if-else + + }else + printf("Error opening the session\n\r"); +} + +static volatile bool buttonPress=false; + +static void setButtonPress(){ + buttonPress=true; +}//if buttonPress + +/** + * Write a Ndef URI message linking to st.com site. + */ +int main(void){ + + //use default board pinout + I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN); + X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel,NULL, + X_NUCLEO_NFC01A1::DEFAULT_GPO_PIN,X_NUCLEO_NFC01A1::DEFAULT_RF_DISABLE_PIN, + X_NUCLEO_NFC01A1::DEFAULT_LED1_PIN,X_NUCLEO_NFC01A1::DEFAULT_LED2_PIN, + X_NUCLEO_NFC01A1::DEFAULT_LED3_PIN); + + //retrieve the NdefLib interface + NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag(); + printf("System Init done: !\n\r"); + + // write an URI message + writeUrl(nfcNucleo); + +//if run on a nucleo board enable the user button for read the ndef record +#if defined(TARGET_STM) + InterruptIn userButton(USER_BUTTON); + userButton.fall(setButtonPress); + while(true){ + if(buttonPress){ + readUrl(nfcNucleo); + buttonPress=false; + }//if + //wait next event + __WFE(); + }//while +#else + readUrl(nfcNucleo); +#endif } \ No newline at end of file
--- a/mbed.bld Wed Feb 03 09:04:26 2016 +0000 +++ b/mbed.bld Wed Aug 31 09:58:19 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/6f327212ef96 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/2241e3a39974 \ No newline at end of file