Fix all the following issues which we faced during 01st April internal demo 1) Display hang and jump issue 2) Sequencing issue 3) Issue with BP code

Dependencies:   SDFileSystem ds3231 program mbed testUniGraphic_150217

Fork of Int_Demo_01Apr2017_newdisplaycode_bp_nikita by nikita teggi

glc.cpp

Committer:
nikitateggi
Date:
2017-05-08
Revision:
12:ab85607bb10a
Parent:
7:11f926351d8f

File content as of revision 12:ab85607bb10a:

#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"


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;
unsigned int mgdl = 0;
unsigned int mgdll = 0;
unsigned int daata1= 0;
unsigned int data2 = 0;

unsigned int data1n= 0;
unsigned int data2n = 0;
unsigned int datafinal1 = 0;
unsigned int datafinal2 = 0;
//unsigned int data_diff = 0;
unsigned char err = 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;
         }
     
}



void Compute()
{
   
   
   datafinal1 = (unsigned int) NUMB1*(data2*VREF/(TOTAL))-NUMB2;
   datafinal2 = (unsigned int) NUMB1*(daata1*VREF/(TOTAL))-NUMB2;
   mgdl = (unsigned int) NUMB1*(((daata1+data2)/2)*VREF/(TOTAL))-NUMB2;
   

   if (err == 0)
    {
        
        glc_4(mgdl);
        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
{
        // 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();                    
     GLC_START = 1;
    // ble.baud(115200);
   if(GLC_START == 1)
{
  
 //DisableTouch();
 //gpo_t = 0;
    //lcd1.FillRect(5,127,230,320,COLOR_BLACK);
    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

    while((test_strip));
    
    
   // wait(500);
   // Shutdown = 1;
    
  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))
      {
        
          gtc.printf("%d\n", data1n);
          gtc.printf("%d\n", data2n);
        if ((daata1 >= THRESHOLD) || (data2 >= THRESHOLD)) 
            { 
                t_s_d = 1;
              flipper1.attach(&Compute, 2.25);                  //computing the glucose level
               glc_3();
            
             
             }
        else
            {
              //wait for insertion of blood;
            }
         
       }
       
        
      //  t_s_d = 0;
        wait_ms(800);
        //flipper.detach();
           
}


}  

}