M2M im2ag M2PGI
Dependencies: mbed X_NUCLEO_NFC01A1 NDefLib
main.cpp@4:47b9a09a74bf, 2016-03-15 (annotated)
- Committer:
- hellmak
- Date:
- Tue Mar 15 14:49:45 2016 +0000
- Revision:
- 4:47b9a09a74bf
- Parent:
- 2:7183a6189b65
- Child:
- 5:b75a06d210fd
tenteative de lecture;
Who changed what in which revision?
User | Revision | Line number | New 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 | 4:47b9a09a74bf | 58 | while(!tag.read(&message)){ |
hellmak | 4:47b9a09a74bf | 59 | } |
hellmak | 4:47b9a09a74bf | 60 | |
hellmak | 4:47b9a09a74bf | 61 | uint8_t buffer[64]; |
hellmak | 4:47b9a09a74bf | 62 | buffer[0]=0; |
hellmak | 4:47b9a09a74bf | 63 | buffer[1]=3; |
hellmak | 4:47b9a09a74bf | 64 | |
hellmak | 4:47b9a09a74bf | 65 | message.write(buffer); |
hellmak | 4:47b9a09a74bf | 66 | buffer[63]=0; |
hellmak | 4:47b9a09a74bf | 67 | for(int i=0; i< 63; i++){ |
hellmak | 4:47b9a09a74bf | 68 | printf("%c",buffer[i]); |
hellmak | 4:47b9a09a74bf | 69 | } |
hellmak | 4:47b9a09a74bf | 70 | printf("\n"); |
ThibaudB | 2:7183a6189b65 | 71 | //close the i2c session |
ThibaudB | 2:7183a6189b65 | 72 | if(tag.closeSession()){ |
hellmak | 4:47b9a09a74bf | 73 | myled = 1; // LED is ON |
hellmak | 4:47b9a09a74bf | 74 | printf("Session closed\n"); |
ThibaudB | 2:7183a6189b65 | 75 | nfcNucleo->getLed3()=1; |
ThibaudB | 2:7183a6189b65 | 76 | }else{ |
hellmak | 4:47b9a09a74bf | 77 | printf("Error closing the session\n"); |
ThibaudB | 2:7183a6189b65 | 78 | }//if-else |
ThibaudB | 2:7183a6189b65 | 79 | |
ThibaudB | 2:7183a6189b65 | 80 | }else |
hellmak | 4:47b9a09a74bf | 81 | printf("Error opening the session\n"); |
hellmak | 4:47b9a09a74bf | 82 | |
ThibaudB | 2:7183a6189b65 | 83 | } |