Changes done in ECG and BT

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of merged_code2_20sept_2017_4th_oct_2017 by nikita teggi

Revision:
15:208b146151ba
Parent:
7:11f926351d8f
Child:
16:8fa1d7fd7953
diff -r f5c62d30c6fc -r 208b146151ba glc.cpp
--- a/glc.cpp	Thu Jun 01 09:24:45 2017 +0000
+++ b/glc.cpp	Mon Jun 05 09:14:44 2017 +0000
@@ -1,4 +1,8 @@
-#include "mbed.h"
+
+/*
+// Code by nikitha Commented by Nidhin 
+
+/#include "mbed.h"
 #include "glc.h"
 #include "i2c_dec.h"
 //#include "ili9325.h"
@@ -98,21 +102,6 @@
 
 
 
-
-
-
-
-
-
-    
-   
-   
-   
-   
-
-
-
-
 void  glc(int pid){
     unsigned char GLC_START = 0;
     char t_s_d = 0;
@@ -178,7 +167,278 @@
 
 }  
 
+*/
+
+// Code Modified with Bluetooth Structure Nidhin 2/6/17
+///
+#include "mbed.h"
+#include "glc.h"
+#include "i2c_dec.h"
+//#include "ili9325.h"
+//#include "lcd_base.h"
+#include "display_modules.h"
+//#include "touch_modules.h"
+#include "rtc.h"
+#include "sdcard.h"
+
+#include "struct.h" //Nidhin 31/5/2017
+#include "test_type.h" //Nidhin 31/5/2017
+
+
+void sample();
+void Compute();
+void i2c_spec();
+Ticker flipper;
+Ticker flipper1;
+
+//osTimerDef (sample_data, sample);                      // define timers
+//osTimerDef (Compute_GLC, Compute);  
+DigitalIn test_strip(PTA12);
+
+AnalogIn Ain(PTC1);//Electrode one
+AnalogIn Ain2(PTE29); // Electrode two
+AnalogOut DAC_signal(PTE30);
+Serial gtc(USBTX, USBRX);
+//unsigned char  c;
+//unsigned char HOME = 0;
+
+//signed char test_strip = 0;
+static uint16_t mgdl = 0;
+uint16_t mgdll = 0;
+uint32_t  daata1= 0;
+uint32_t  data2 = 0;
+
+static uint32_t  data1n= 0;
+static uint32_t  data2n = 0;
+uint32_t  datafinal1 = 0;
+uint32_t  datafinal2 = 0;
+//unsigned int data_diff = 0;
+unsigned char err = 0;
+
+uint32_t glcraw[2]; // Nidhin 31/5/2017
+uint8_t chk_glc_data = 0;
+
+Serial ble(PTC4,PTC3);
+
+
+
+void sample()
+
+{
+     data1n = Ain.read_u16();
+     data2n = Ain2.read_u16();
+    daata1 = beta*daata1+alpha*data1n;
+    data2 = beta*data2+alpha*data2n;
+      
+     if( ((daata1-data2) >=(data2/10) && (daata1 > data2)) || ((data2-daata1) >=(data2/10) && (data2 > daata1)) )
+         {
+           
+            err = 1;     
+            
+         }
+         else
+         {
+             err = 0;
+             //gtc.printf("\n", data1n, data2n); only for testing added nidhin 5Jun17
+         }
+     
+}
+
+
+
+void Compute()
+{
+   
+   
+   datafinal1 = (uint32_t ) NUMB1*(data2*VREF/(TOTAL))-NUMB2;
+   datafinal2 = (uint32_t ) NUMB1*(daata1*VREF/(TOTAL))-NUMB2;
+   mgdl = (uint16_t) NUMB1*(((daata1+data2)/2)*VREF/(TOTAL))-NUMB2;  // Nidhin 5/6/17 mgdl = (uint32_t) NUMB1*(((daata1+data2)/2)*VREF/(TOTAL))-NUMB2;
+   
+   
+
+   if (err == 0)
+    {
+        
+        glc_4(mgdl);
+        mgdll = mgdl;      // Nidhin 31/5/2017
+        //gtc.printf("The Result is - %d", mgdll);
+        //sd_write(mgdl);        // storing value into the sd card
+        //sd_close();
+       // ble.printf("blood glucose is %d mg/dl", mgdl);
+        flipper.detach();
+        flipper1.detach();
+      //  return mgdl;
+      
+   
+    }
+    
+    else
+{
+        gtc.printf("err=1\n");
+        
+        // lcd1.Print( " ERROR RESULT", 5,220,COLOR_RED,COLOR_BLACK, 0);    
+         //  ble.printf("E:");
+    }
+  
+ 
+}
+
+
+void  glc(int pid){
+    unsigned char GLC_START = 0;
+    char t_s_d = 0;
+     i2c_spec();        
+     
+sd_open_GLCfilee(pid);                     // Opens GLC file in APPEND mode
+   
+    // Bluetooth Structure created globally
+    BLEMsg_info *ptr_BLEMsg_info_glc, BLEMsg_info_glc; // A copy of master strcuture [ "BLEMsg_info" ] by name "BLEMsg_info_bp" is created
+    ptr_BLEMsg_info_glc = &BLEMsg_info_glc;            // *ptr_BLEMsg_info_bp is the pointer to local copy;
+                                                        // Cant declare this statement outside main. Causing conflicts
+
+// Declaration of Date Structure
+    DateTime_info *ptr_DateTime_info_glc, DateTime_info_glc; // A copy of Master Structure "DateTime_info" created, 
+    ptr_DateTime_info_glc = &DateTime_info_glc;             // Structure pointer points to that copy.
+    
+    
+      
+    // RTC operations
+    time_t epoch_time_glc;           //A copy of time_t by name  epoch_time_bp is created 
+    epoch_time_glc = rtc_read();    // time is got from get epoch function.  
+    
+    struct tm * ptr_time_info_glc, time_info_glc;   // Sturucture copy of tm is created
+    ptr_time_info_glc = localtime(&epoch_time_glc); // Structure accepts the time in local format from "time_t" type.
+    /*  
+    //BELOW LINE IS TO CHECK Date and TIME 
+    gtc.printf("Time is - %d:%d:%d\n", (*ptr_time_info_glc).tm_hour, (*ptr_time_info_glc).tm_min, (*ptr_time_info_glc).tm_sec);
+    gtc.printf("Date is - %d:%d:%d\n", (*ptr_time_info_glc).tm_mday, (*ptr_time_info_glc).tm_mon+1, (*ptr_time_info_glc).tm_year-100);
+    */
+    //Copying from one structure to the other using variables
+    DateTime_info_glc.hour = (uint8_t)(*ptr_time_info_glc).tm_hour;
+    DateTime_info_glc.mins = (uint8_t)(*ptr_time_info_glc).tm_min;
+    DateTime_info_glc.sec =  (uint8_t)(*ptr_time_info_glc).tm_sec;
+    
+    DateTime_info_glc.date = (uint8_t) (*ptr_time_info_glc).tm_mday;
+    DateTime_info_glc.month =(uint8_t)(*ptr_time_info_glc).tm_mon+1;
+    DateTime_info_glc.year = (uint8_t)(*ptr_time_info_glc).tm_year-100;
+    
+    // Copying Time to Main structure
+    BLEMsg_info_glc.date_time.hour = DateTime_info_glc.hour;
+    BLEMsg_info_glc.date_time.mins = DateTime_info_glc.mins;
+    BLEMsg_info_glc.date_time.sec = DateTime_info_glc.sec;
+    
+    BLEMsg_info_glc.date_time.date = DateTime_info_glc.date ;
+    BLEMsg_info_glc.date_time.month = DateTime_info_glc.month ;
+    BLEMsg_info_glc.date_time.year =  DateTime_info_glc.year ;
+    
+    /*
+    //Checking if the structure has these values    
+    gtc.printf("\nTime 2 is - %d:%d:%d\n", DateTime_info_glc.hour, DateTime_info_glc.mins, DateTime_info_glc.sec);
+    gtc.printf("\nDate 2 is - %d:%d:%d\n",DateTime_info_glc.date, DateTime_info_glc.month, DateTime_info_glc.year);
+    */
+    
+    //Loading values to of Test type
+    test_type_info test_type_info_glc;  // copy of " test_type_info" created  
+    test_type_info_glc = BG_Test;       // Loaded value 00 to the test type 
+    
+    BLEMsg_info_glc.test_type = test_type_info_glc;
+    //Check if 01 is getting printed
+    //gtc.printf("\nTest Type for BG is 01 = %d\n", test_type_info_glc);
+    
+    
+    // Loading values of Length ,  PID, DID, sampling frequency, number of samples, calculated data.
+    BLEMsg_info_glc.device_id = 01;                   // Device ID fixed
+    BLEMsg_info_glc.patient_id = (uint32_t)pid;      // Patient ID
+    BLEMsg_info_glc.sampling_freq = 0;              // sampling frrquency
+    BLEMsg_info_glc.length = 30;                   //Total length of data in bytes  22 B+10752 B
+    
+    BLEMsg_info_glc.num_samples.num_sample_ecg_OTtyp =   2;
+    BLEMsg_info_glc.num_samples.num_sample_ppg_dummy =  0;
+       
+     
+            
+     GLC_START = 1;
+    // ble.baud(115200);
+   if(GLC_START == 1)
+        {
+            glc_1();             // displaying messages to insert the test strip
+            err = 0;
+            data1n = 0;
+            data2n = 0;
+            daata1 = 0;
+            data2 = 0;
+            //sd_open_GLCfile(pid);      // opening the glc file Commented
+
+            while((test_strip));
+    
+                if (!test_strip)                  // checks for the presence of test strip
+                    { 
+                        flipper.attach(&sample, 0.8);    
+                        t_s_d = 0;
+                        glc_2();                  // displaying message to insert blood
+             
+                        while((!t_s_d) && (!test_strip))
+                            {
+                                //if(chk_glc_data == 0)       //Nidhin 31/5/2017
+                                //{
+                                /*    
+                                glcraw[0] = (uint32_t) data1n; //Nidhin 31/5/2017
+                                glcraw[1] = (uint32_t) data2n; // Nidhin 31/5/2017
+                                
+                                gtc.printf("datain is  =%d\n", data1n);
+                                gtc.printf("data2n is = %d\n", data2n);
+                                
+                                gtc.printf("datain is  =%d\n", data1n);
+                                gtc.printf("data2n is = %d\n", data2n);
+                                */
+                                //chk_glc_data = 1;  
+                                //}
+                                //gtc.printf("Checking\n");
+                                
+                                if ((daata1 >= THRESHOLD) || (data2 >= THRESHOLD)) 
+                                    { 
+                                //glcraw[0] = (uint32_t) data1n; //Nidhin 5/6/2017
+                                //glcraw[1] = (uint32_t) data2n; // Nidhin 5/6/2017
+                                
+                                //gtc.printf("data1n is  =%d\n", data1n);
+                                //gtc.printf("data2n is = %d\n", data2n);
+                                
+                               // gtc.printf("glcraw[0] is  =%d\n", glcraw[0]);
+                                //gtc.printf("glcraw[1] is = %d\n", glcraw[1]); 
+                                        
+                                        t_s_d = 1;
+                                        flipper1.attach(&Compute, 2.25);        //computing the glucose level
+                                        glc_3();
+                                    }
+                                else
+                                    {
+                                        //wait for insertion of blood;
+                                    }
+                            }
+                        wait_ms(800);          
+                    }
+            } 
+        
+        gtc.printf("DATA1 is - %d\n", data1n); 
+        gtc.printf("DATA2 is - %d\n", data2n);  
+        gtc.printf("mgdl is - %d\n", mgdl);   
+        
+        sd_glcwrite(glcraw, pid);  //Writes the raw data into GLC file 
+ 
+        //Results Stored to Bluetooth structure 
+        BLEMsg_info_glc.cal_data.cal_sbp_dummy = 0;
+        BLEMsg_info_glc.cal_data.cal_dbp_OTtyp = (uint16_t) mgdll;  //To be checked for reliable results           
+            
+        structure_file(ptr_BLEMsg_info_glc, pid);           // Copy the structure into the GLC file 
+        glcfile_mainfile(pid); 
+        
+    }  
+
 
     
 
 
+
+    
+
+