NFC and ht_sensor

Dependencies:   NDefLib X_NUCLEO_IKS01A1 X_NUCLEO_NFC01A1 mbed

Fork of HelloWorld_NFC01A1 by ST

Revision:
17:35193469bda8
Parent:
14:1b99908360c5
--- a/main.cpp	Wed Feb 03 10:17:14 2016 +0000
+++ b/main.cpp	Wed May 18 07:41:15 2016 +0000
@@ -1,61 +1,46 @@
-/**
-  ******************************************************************************
-  * @file       main.cpp
-  * @author     ST Central Labs
-  * @version    V1.0.0
-  * @date       21 Dic 2015
-  * @brief      This demo writes an ndef message with an url inside.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
-  *
-  * Redistribution and use in source and binary forms, with or without modification,
-  * are permitted provided that the following conditions are met:
-  *   1. Redistributions of source code must retain the above copyright notice,
-  *      this list of conditions and the following disclaimer.
-  *   2. Redistributions in binary form must reproduce the above copyright notice,
-  *      this list of conditions and the following disclaimer in the documentation
-  *      and/or other materials provided with the distribution.
-  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-  *      may be used to endorse or promote products derived from this software
-  *      without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  *
-  ******************************************************************************
-  */
 
+#include <stdio.h>
 #include "mbed.h"
-
 #include "X_NUCLEO_NFC01A1.h"
 #include "NDefLib/NDefNfcTag.h"
 #include "NDefLib/RecordType/RecordURI.h"
+#include "NDefLib/RecordType/RecordText.h"
+#include "x_nucleo_iks01a1.h"
 
-/**
- * Write a Ndef URI message linking to st.com site.
- */
-int main(void){
-    
-    //use default board pinout
+/* Instantiate the expansion board */
+
+static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
+
+/* Retrieve the composing elements of the expansion board */
+static GyroSensor *gyroscope = mems_expansion_board->GetGyroscope();
+static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
+//static HumiditySensor *humidity_sensor = mems_expansion_board->ht_sensor;
+static TempSensor *temp_sensor1;// = mems_expansion_board->ht_sensor;
+
+     //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
+
+    char itoc(int i){
+        return i+ 0x30;
+    }
+/**
+ * Write a Ndef URI message linking to st.com site.
+ */
+float Temp(float temp)
+{
+    temp_sensor1 = mems_expansion_board->ht_sensor;
+    temp_sensor1->GetTemperature(&temp);
+    return temp;
+} 
+int NFC_send(char c[]){
+
+ 
+ printf("System Init done: !\n\r");
     NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
-    printf("System Init done: !\n\r");
     
     //open the i2c session with the nfc chip
     if(tag.openSession()){
@@ -64,15 +49,106 @@
         
         //create the NDef message and record
         NDefLib::Message msg;
-        NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"st.com");
+        //::RecordURI rUri(NDefLib::RecordURI::FILE,c);
+        NDefLib::RecordText rUri(c);
+       
+        msg.addRecord(&rUri);
+
+        //write the tag
+        if(tag.write(msg) && tag.closeSession()){
+            printf("Tag written\n\r");
+            nfcNucleo->getLed2()=1;
+           // nfcNucleo->getLed3()=1;               //상태확인
+            return 0;
+       }else{
+           printf("Error writing \n\r");
+           return 0;
+        }//if-else
+
+        //close the i2c session
+  /*      if(tag.closeSession()){
+           printf("Session closed\n\r");
+           nfcNucleo->getLed3()=0;
+           return 0;
+             // That's point stop
+        }else{
+           printf("Error closing the session\n\r");
+           return 0;
+        }//if-else
+         */   
+    }else
+        printf("Error opening the session\n\r");
+    return 0;
+ } 
+ 
+ 
+void Temp_NFC(float temp){
+
+    char c[7];
+    int i=0;
+
+    
+
+    //float temp;
+    //temp=Temp(temp);
+    //온도값을 최대를 100자리와 소숫점 첫자리까지 결과로 코딩
+    c[3]='.'; //소숫점  
+    c[5]=0X60;
+    c[6]='C';
+
+    i=temp*10;
+    i=i%10;  //소숫점아랫자리
+    c[4]=itoc(i);
+
+    i=temp/1;  //1자리
+    i=i%10;
+    c[2]=itoc(i);
+
+    i=temp/10; //10자리
+    i=i%10;
+    c[1]=itoc(i);
+ 
+    i=temp/100;//100자리
+    i=i%10;
+    if(i>0) c[0]=itoc(i);
+    else c[0]='0';
+    
+    
+    NFC_send(c);
+    
+    /*retrieve the NdefLib interface
+    NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
+    tag.openSession();
+    NDefLib::Message msg;
+        //::RecordURI rUri(NDefLib::RecordURI::FILE,c);
+    NDefLib::RecordText rUri(c);
+       
+    msg.addRecord(&rUri);
+    wait(0.1);
+    tag.closeSession();
+    NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
+        
+    printf("System Init done: !\n\r");
+    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;
+        //::RecordURI rUri(NDefLib::RecordURI::FILE,c);
+        NDefLib::RecordText rUri(c);
+       
         msg.addRecord(&rUri);
 
         //write the tag
         if(tag.write(msg)){
             printf("Tag written\n\r");
             nfcNucleo->getLed2()=1;
-        }else{
-            printf("Error writing \n\r");
+       }else{
+           printf("Error writing \n\r");
         }//if-else
 
         //close the i2c session
@@ -85,4 +161,21 @@
             
     }else
         printf("Error opening the session\n\r");
+ */
+
+}
+
+
+int main()
+{
+   float temp;
+   while(1){
+    temp = Temp(temp);
+    Temp_NFC(temp);
+    nfcNucleo->getLed3()=1;  
+    wait(0.1);
+    nfcNucleo->getLed3()=0;  
+    wait(0.1);
+    
+}
 }
\ No newline at end of file