Gestione VCARD
Dependencies: NDefLib X_NUCLEO_NFC01A1 mbed
Fork of HelloWorld_NFC01A1 by
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
