M2M im2ag M2PGI

Dependencies:   mbed X_NUCLEO_NFC01A1 NDefLib

Committer:
hellmak
Date:
Tue Mar 15 14:58:29 2016 +0000
Revision:
5:b75a06d210fd
Parent:
4:47b9a09a74bf
Child:
6:67e0ae676619
p;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ThibaudB 2:7183a6189b65 1
hellmak 0:4d794bbc5de1 2 #include "mbed.h"
hellmak 0:4d794bbc5de1 3
ThibaudB 2:7183a6189b65 4 #include "X_NUCLEO_NFC01A1.h"
ThibaudB 2:7183a6189b65 5 #include "NDefLib/NDefNfcTag.h"
hellmak 4:47b9a09a74bf 6 #include "NDefLib/Message.h"
ThibaudB 2:7183a6189b65 7 #include "NDefLib/RecordType/RecordURI.h"
hellmak 4:47b9a09a74bf 8 Serial pc(SERIAL_TX, SERIAL_RX);
hellmak 4:47b9a09a74bf 9 DigitalOut myled(LED1);
ThibaudB 2:7183a6189b65 10 /**
ThibaudB 2:7183a6189b65 11 * Write a Ndef URI message linking to st.com site.
ThibaudB 2:7183a6189b65 12 */
hellmak 4:47b9a09a74bf 13 void init(){
hellmak 4:47b9a09a74bf 14 pc.baud(115200);
hellmak 4:47b9a09a74bf 15 pc.format(8,SerialBase::None, 1);
hellmak 4:47b9a09a74bf 16 }
hellmak 4:47b9a09a74bf 17
ThibaudB 2:7183a6189b65 18 int main(void){
hellmak 4:47b9a09a74bf 19 init();
hellmak 4:47b9a09a74bf 20 pc.printf("System Init now !\n");
hellmak 4:47b9a09a74bf 21 myled = 0; // LED is OFF
ThibaudB 2:7183a6189b65 22
ThibaudB 2:7183a6189b65 23 //use default board pinout
ThibaudB 2:7183a6189b65 24 I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
ThibaudB 2:7183a6189b65 25 X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel,NULL,
ThibaudB 2:7183a6189b65 26 X_NUCLEO_NFC01A1::DEFAULT_GPO_PIN,X_NUCLEO_NFC01A1::DEFAULT_RF_DISABLE_PIN,
ThibaudB 2:7183a6189b65 27 X_NUCLEO_NFC01A1::DEFAULT_LED1_PIN,X_NUCLEO_NFC01A1::DEFAULT_LED2_PIN,
ThibaudB 2:7183a6189b65 28 X_NUCLEO_NFC01A1::DEFAULT_LED3_PIN);
hellmak 4:47b9a09a74bf 29 nfcNucleo->getLed1()=0;
hellmak 4:47b9a09a74bf 30
ThibaudB 2:7183a6189b65 31
ThibaudB 2:7183a6189b65 32 //retrieve the NdefLib interface
ThibaudB 2:7183a6189b65 33 NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
hellmak 4:47b9a09a74bf 34 printf("System Init done: !\n");
ThibaudB 2:7183a6189b65 35
ThibaudB 2:7183a6189b65 36 //open the i2c session with the nfc chip
ThibaudB 2:7183a6189b65 37 if(tag.openSession()){
hellmak 4:47b9a09a74bf 38 printf("Session opened\n");
hellmak 4:47b9a09a74bf 39
ThibaudB 2:7183a6189b65 40 nfcNucleo->getLed1()=1;
ThibaudB 2:7183a6189b65 41
ThibaudB 2:7183a6189b65 42 //create the NDef message and record
ThibaudB 2:7183a6189b65 43 NDefLib::Message msg;
ThibaudB 2:7183a6189b65 44 NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"st.com");
ThibaudB 2:7183a6189b65 45 msg.addRecord(&rUri);
ThibaudB 2:7183a6189b65 46
ThibaudB 2:7183a6189b65 47 //write the tag
ThibaudB 2:7183a6189b65 48 if(tag.write(msg)){
hellmak 4:47b9a09a74bf 49 printf("Tag written\n");
ThibaudB 2:7183a6189b65 50 nfcNucleo->getLed2()=1;
hellmak 4:47b9a09a74bf 51
ThibaudB 2:7183a6189b65 52 }else{
hellmak 4:47b9a09a74bf 53 printf("Error writing \n");
ThibaudB 2:7183a6189b65 54 }//if-else
hellmak 4:47b9a09a74bf 55 NDefLib::Message message;
hellmak 4:47b9a09a74bf 56 while(!tag.read(&message)){
hellmak 4:47b9a09a74bf 57 }
hellmak 5:b75a06d210fd 58
hellmak 4:47b9a09a74bf 59
hellmak 4:47b9a09a74bf 60 uint8_t buffer[64];
hellmak 4:47b9a09a74bf 61 buffer[0]=0;
hellmak 4:47b9a09a74bf 62 buffer[1]=3;
hellmak 4:47b9a09a74bf 63
hellmak 4:47b9a09a74bf 64 message.write(buffer);
hellmak 4:47b9a09a74bf 65 buffer[63]=0;
hellmak 4:47b9a09a74bf 66 for(int i=0; i< 63; i++){
hellmak 4:47b9a09a74bf 67 printf("%c",buffer[i]);
hellmak 4:47b9a09a74bf 68 }
hellmak 4:47b9a09a74bf 69 printf("\n");
ThibaudB 2:7183a6189b65 70 //close the i2c session
ThibaudB 2:7183a6189b65 71 if(tag.closeSession()){
hellmak 4:47b9a09a74bf 72 myled = 1; // LED is ON
hellmak 4:47b9a09a74bf 73 printf("Session closed\n");
ThibaudB 2:7183a6189b65 74 nfcNucleo->getLed3()=1;
ThibaudB 2:7183a6189b65 75 }else{
hellmak 4:47b9a09a74bf 76 printf("Error closing the session\n");
ThibaudB 2:7183a6189b65 77 }//if-else
ThibaudB 2:7183a6189b65 78
ThibaudB 2:7183a6189b65 79 }else
hellmak 4:47b9a09a74bf 80 printf("Error opening the session\n");
hellmak 4:47b9a09a74bf 81
ThibaudB 2:7183a6189b65 82 }