Changes done in ECG and BT
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of merged_code2_20sept_2017_4th_oct_2017 by
glc.cpp
- Committer:
- nidhinvarghese
- Date:
- 2017-06-09
- Revision:
- 17:22a87e12fb3a
- Parent:
- 16:8fa1d7fd7953
- Child:
- 19:1650bbc923cc
File content as of revision 17:22a87e12fb3a:
/* // Code by nikitha Commented by Nidhin /#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(); } } } */ // 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; unsigned char GLC_START = 0; //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; static uint16_t mgdll = 0; uint16_t daata1= 0; uint16_t data2 = 0; static uint16_t data1n= 0; static uint16_t data2n = 0; uint16_t datafinal1 = 0; uint16_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 = (uint16_t ) NUMB1*(data2*VREF/(TOTAL))-NUMB2; datafinal2 = (uint16_t ) NUMB1*(daata1*VREF/(TOTAL))-NUMB2; mgdl = (uint16_t) NUMB1*(((daata1+data2)/2)*VREF/(TOTAL))-NUMB2; // Nidhin 5/6/17 mgdl = (uint16_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"); Commented Nidhin 8/6/2017 // lcd1.Print( " ERROR RESULT", 5,220,COLOR_RED,COLOR_BLACK, 0); // ble.printf("E:"); } GLC_START = 0; } void glc(int pid){ 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 = (uint16_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] = (uint16_t) data1n; //Nidhin 31/5/2017 glcraw[1] = (uint16_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] = (uint16_t) data1n; //Nidhin 5/6/2017 //glcraw[1] = (uint16_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("mgdl is - %d\n", mgdll); } wait(2.25); gtc.printf("DATA1 is - %d\n", data1n); gtc.printf("DATA2 is - %d\n", data2n); gtc.printf("mgdl is - %d\n", mgdll); glcraw[0] = (uint32_t)data1n; glcraw[1] = (uint32_t)data2n; 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); }