Updated with option to return from BP screen to main screen, resolved screen navigation issues
Dependencies: SDFileSystem TFTLCD_8bit ds3231 program mbed
Fork of poc_dis_5 by
Diff: glc.cpp
- Revision:
- 1:8316c23ec6b9
- Child:
- 2:3b7b71bfc941
diff -r c47fb0c1bbf6 -r 8316c23ec6b9 glc.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/glc.cpp Mon Jan 30 07:45:41 2017 +0000 @@ -0,0 +1,187 @@ +#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 gc(USBTX, USBRX); +//unsigned char c; +//unsigned char HOME = 0; +unsigned char GLC_START = 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 = data1; + // unsigned char check; + //osTimerStop(id2); + //osTimerStop(id1); + 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); + sd_close(); + ble.printf("blood glucose is %d", mgdl); + flipper.detach(); + flipper1.detach(); + // return mgdl; + + } + else +{ + // lcd1.Print( " ERROR RESULT", 5,220,COLOR_RED,COLOR_BLACK, 0); + // ble.printf("E:"); + } + + +} + + +void T_S_detect(void) +{ + GLC_START = 1; + //st_strip=1; +} + + + + + + + + + + + + + + + + +void glc(int pid){ + 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(); + err = 0; + data1n = 0; + data2n = 0; + daata1 = 0; + data2 = 0; + sd_open_GLCfile(pid); + + while((test_strip)); + + + // wait(500); + // Shutdown = 1; + + if (!test_strip) + { + + flipper.attach(&sample, 0.8); + t_s_d = 0; + glc_2(); + //gc.printf("%d\n", data1n); + + while((!t_s_d) && (!test_strip)) + { + + + if ((daata1 >= THRESHOLD) || (data2 >= THRESHOLD)) + { + t_s_d = 1; + flipper1.attach(&Compute, 2.25); + glc_3(); + + + } + else + { + //wait for insertion of blood; + } + + } + + + // t_s_d = 0; + wait_ms(800); + //flipper.detach(); + +} + + +} + +} + + + + +