NB-IoT

Dependencies:   NDefLib X_NUCLEO_NFC02A1 hdc1080 mbed

Fork of HelloWorld_NFC02A1 by ST

Revision:
1:11ae12d41082
Parent:
0:892175366555
Child:
2:6f1b1f7f8d12
diff -r 892175366555 -r 11ae12d41082 main.cpp
--- a/main.cpp	Wed Jul 27 09:25:33 2016 +0000
+++ b/main.cpp	Tue Aug 30 09:18:50 2016 +0000
@@ -1,14 +1,14 @@
 /**
   ******************************************************************************
   * @file       main.cpp
-  * @author     ST Central Labs
+  * @author     AMG Central Lab
   * @version    V1.0.0
-  * @date       21 Dic 2015
+  * @date       30 Aug 2016
   * @brief      This demo writes an ndef message with an url inside.
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
@@ -40,17 +40,15 @@
 #include "X_NUCLEO_NFC02A1.h"
 #include "DevI2C.h"
 #include "m24lr.h"
-#include "lib_NDEF_URI.h"
+
+#include "NDefLib/NDefNfcTag.h"
+#include "NDefLib/RecordType/RecordURI.h"
 /**
  * Write a Ndef URI message linking to st.com site.
  */
 int main(void)
 {
   
-  sURI_Info URI;
-  NDEF_URI mNDEF_URI;
-  M24LR *mM24LRp;
-  
   /*use default board pinout*/
   DevI2C i2cChannel(X_NUCLEO_NFC02A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC02A1::DEFAULT_SDL_PIN);
   X_NUCLEO_NFC02A1 *nfcNucleo = X_NUCLEO_NFC02A1::Instance(i2cChannel,
@@ -58,38 +56,51 @@
                                                            X_NUCLEO_NFC02A1::DEFAULT_LED1_PIN,X_NUCLEO_NFC02A1::DEFAULT_LED2_PIN,
                                                            X_NUCLEO_NFC02A1::DEFAULT_LED3_PIN);
   
-  mM24LRp = nfcNucleo->getM24LR();
-  mNDEF_URI.setM24LR(mM24LRp);
+ NDefLib::NDefNfcTag& tag =nfcNucleo->getM24LR().getNDefTag();
+ M24LR & mM24LRp = nfcNucleo->getM24LR();
+ // mNDEF_URI.setM24LR(mM24LRp);
   /* Enable Energy Harvesting */
-  mM24LRp->Enable_EnergyHarvesting();
+  mM24LRp.Enable_EnergyHarvesting();
   
   printf("System Initialization done: !\n\r");
   
-  /* Check if no NDEF detected, init mem in Tag Type 5 */
-  if( mNDEF_URI.NfcType5_NDEFDetection() != NDEF_OK)
-  {
-    mNDEF_URI.CCFileStruct.MagicNumber = NFCT5_MAGICNUMBER_E1_CCFILE;
-    mNDEF_URI.CCFileStruct.Version = NFCT5_VERSION_V1_0;
-    mNDEF_URI.CCFileStruct.MemorySize = ( M24LR_MAX_SIZE / 8 ) & 0xFF;
-    mNDEF_URI.CCFileStruct.TT5Tag = 0x05;
-    
-    /* Init of the Type Tag 5 component (M24LR) */
-    while( mNDEF_URI.NfcType5_TT5Init( ) != NFCTAG_OK);
-  }
+  //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;
+        NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"st.com");
+        msg.addRecord(&rUri);
+
+        //write the tag
+        if(tag.write(msg) == NDEF_OK)
+        {
+            printf("Tag written\n\r");
+            nfcNucleo->getLed2()=1;
+        }
+        else
+        {
+            printf("Error writing \n\r");
+            nfcNucleo->getLed1()=0;
+        }//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");
   
-  /* Set the LED2 on to indicate Init done */
-  nfcNucleo->getLed2()=1;
-  
-  /* Prepare URI NDEF message content */
-  strcpy( URI.protocol,URI_ID_0x01_STRING );
-  strcpy( URI.URI_Message,"st.com/st25" );
-  strcpy( URI.Information,"\0" );
-  
-  /* Write NDEF to EEPROM */
-  while( mNDEF_URI.NDEF_WriteURI( &URI ) != NDEF_OK);
-  
-  /* Set the LED3 on to indicate Programing done */
-  nfcNucleo->getLed3()=1; 
 }
 
-