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
glc.cpp
- Committer:
- nikitateggi
- Date:
- 2017-01-30
- Revision:
- 2:3b7b71bfc941
- Parent:
- 1:8316c23ec6b9
- Child:
- 4:6bd81bb1790d
File content as of revision 2:3b7b71bfc941:
#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 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 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(); } } }