Code clean up - modify Datatypes
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of merged_code2_3rd_nov_2017_15th_dec_2017_magicno_removal by
bp.cpp@61:2143f39103f7, 2017-12-19 (annotated)
- Committer:
- nikitateggi
- Date:
- Tue Dec 19 06:58:44 2017 +0000
- Revision:
- 61:2143f39103f7
- Parent:
- 59:e21cf7e08ebf
Code clean up - modify Datatypes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nikitateggi | 3:9a06c2bed650 | 1 | #include "mbed.h" |
nikitateggi | 59:e21cf7e08ebf | 2 | #include "MAX30102.h" |
nikitateggi | 3:9a06c2bed650 | 3 | #include <string.h> |
nikitateggi | 3:9a06c2bed650 | 4 | #include <stdio.h> |
nikitateggi | 39:69b09bd87502 | 5 | #include "eeprom_pgm.h" |
nidhinvarghese | 14:f5c62d30c6fc | 6 | #include <time.h> |
nikitateggi | 3:9a06c2bed650 | 7 | #include "ds3231.h" |
nikitateggi | 3:9a06c2bed650 | 8 | #include "SDFileSystem.h" |
nikitateggi | 3:9a06c2bed650 | 9 | #include "rtc.h" |
nikitateggi | 3:9a06c2bed650 | 10 | #include "sdcard.h" |
nikitateggi | 3:9a06c2bed650 | 11 | #include "ec_bp.h" |
nikitateggi | 3:9a06c2bed650 | 12 | #include "bp.h" |
nikitateggi | 3:9a06c2bed650 | 13 | #include "display_modules.h" |
nikitateggi | 59:e21cf7e08ebf | 14 | #include "struct.h" |
rashmivenkataramaiah | 43:85a7f399cb9d | 15 | #include "main.h" |
nikitateggi | 3:9a06c2bed650 | 16 | |
nikitateggi | 59:e21cf7e08ebf | 17 | #define INTERRUPT_PIN PTC7 |
nikitateggi | 59:e21cf7e08ebf | 18 | |
nikitateggi | 59:e21cf7e08ebf | 19 | #define MAX_SBP_THRESHOLD 300 |
nikitateggi | 59:e21cf7e08ebf | 20 | #define MAX_DBP_THRESHOLD 300 |
nikitateggi | 59:e21cf7e08ebf | 21 | #define MIN_SBP_THRESHOLD 40 |
nikitateggi | 59:e21cf7e08ebf | 22 | #define MIN_DBP_THRESHOLD 40 |
nikitateggi | 59:e21cf7e08ebf | 23 | |
nikitateggi | 59:e21cf7e08ebf | 24 | #define BP_LENGTH_IN_BYTES 10774 //Total bp_data length = ((1024+1664)*4)+ 22 |
nikitateggi | 59:e21cf7e08ebf | 25 | #define BP_ECG_SAMPLES 1024 //Total ECG samples captured |
nikitateggi | 59:e21cf7e08ebf | 26 | #define BP_PPG_SAMPLES 1664 //Total PPG samples captured |
nikitateggi | 59:e21cf7e08ebf | 27 | #define DUMMY_CAPTURE 500 //Samples to check finger detection and signal to stabilize |
nikitateggi | 59:e21cf7e08ebf | 28 | #define PPG_MAX_MIN_DIFF 300 //Difference value to check finger detection |
nikitateggi | 59:e21cf7e08ebf | 29 | #define ECG_PPG_SAMPLES 1024 //ECG and PPG Capture loop count |
nikitateggi | 59:e21cf7e08ebf | 30 | #define PPG_SAMPLES 640 //PPG Capture loop count |
nikitateggi | 59:e21cf7e08ebf | 31 | #define BLOOD_VELOCITY_DIVISOR 210000 //Distance from tip of finger to wrist pulse |
nikitateggi | 59:e21cf7e08ebf | 32 | #define SBP_MAIN_FACTOR (float)0.0508955 //Used for SBP calculation |
nikitateggi | 59:e21cf7e08ebf | 33 | #define SBP_CORRECTION_FACTOR (float)62.559 //Correction factor for SBP |
nikitateggi | 59:e21cf7e08ebf | 34 | #define DBP_MAIN_FACTOR (float)0.0494 //Used for DBP calculation |
nikitateggi | 59:e21cf7e08ebf | 35 | #define DBP_CORRECTION_FACTOR_1 (float)17.480 //Correction factor for DBP |
nikitateggi | 59:e21cf7e08ebf | 36 | #define DBP_CORRECTION_FACTOR_2 10 //Correction factor for DBP |
nikitateggi | 59:e21cf7e08ebf | 37 | #define PEAK_DETECT_RANGE_PPG 350 // Peak detect range for PPG samples |
nikitateggi | 59:e21cf7e08ebf | 38 | |
rashmivenkataramaiah | 41:1141a75eacc4 | 39 | |
nikitateggi | 59:e21cf7e08ebf | 40 | uint16_t sd_BP_ECGMAX(uint32_t pid); |
nikitateggi | 59:e21cf7e08ebf | 41 | uint16_t sd_BP_PPGMAX(uint32_t pid); |
avp2417 | 40:f7f351699288 | 42 | |
avp2417 | 40:f7f351699288 | 43 | |
nikitateggi | 59:e21cf7e08ebf | 44 | Serial serial_bp(USBTX,USBRX); |
nikitateggi | 59:e21cf7e08ebf | 45 | DigitalIn INTERRUPT_PPG(INTERRUPT_PIN); |
nikitateggi | 59:e21cf7e08ebf | 46 | |
nikitateggi | 59:e21cf7e08ebf | 47 | uint16_t ecgloc = 0; //ECG maximum location |
nikitateggi | 59:e21cf7e08ebf | 48 | uint16_t ppgloc = 0; //PPG maximum location |
nikitateggi | 59:e21cf7e08ebf | 49 | uint16_t ebp = 0; // variable for LOOP operation to read value from F |
nikitateggi | 59:e21cf7e08ebf | 50 | uint16_t pbp = 0; |
avp2417 | 36:00d96aa14658 | 51 | FILE *fpppg1; |
nikitateggi | 3:9a06c2bed650 | 52 | |
nikitateggi | 59:e21cf7e08ebf | 53 | void bp(uint32_t pid) |
nikitateggi | 59:e21cf7e08ebf | 54 | { |
nidhinvarghese | 8:adf2ba7e6412 | 55 | uint8_t uch_dummy; |
nidhinvarghese | 8:adf2ba7e6412 | 56 | uint32_t ppgdata; |
nikitateggi | 20:7c64e6ecad76 | 57 | uint8_t lead_reg=0; |
nikitateggi | 59:e21cf7e08ebf | 58 | uint32_t concatenate_value2 = 0; |
nikitateggi | 61:2143f39103f7 | 59 | //uint8_t chk = 1; //commented nikita |
nikitateggi | 59:e21cf7e08ebf | 60 | uint32_t un_max = 0; // Declare two VARIABLE FOR MAX AND MIN |
nikitateggi | 59:e21cf7e08ebf | 61 | uint32_t un_min = 0x3FFF; |
nikitateggi | 59:e21cf7e08ebf | 62 | |
nikitateggi | 59:e21cf7e08ebf | 63 | uint16_t eloc = 0; |
nikitateggi | 59:e21cf7e08ebf | 64 | uint16_t ploc = 0; |
nikitateggi | 59:e21cf7e08ebf | 65 | |
nikitateggi | 59:e21cf7e08ebf | 66 | float PWV = 0; |
nikitateggi | 59:e21cf7e08ebf | 67 | uint16_t delta_t = 0; |
nikitateggi | 59:e21cf7e08ebf | 68 | float SBP = 0; |
nikitateggi | 59:e21cf7e08ebf | 69 | float DBP = 0; |
nikitateggi | 59:e21cf7e08ebf | 70 | |
nikitateggi | 59:e21cf7e08ebf | 71 | FILE *ecg = NULL; |
nikitateggi | 59:e21cf7e08ebf | 72 | FILE *ppg = NULL; |
avp2417 | 36:00d96aa14658 | 73 | |
nidhinvarghese | 14:f5c62d30c6fc | 74 | //Declaration of Master structure |
nidhinvarghese | 14:f5c62d30c6fc | 75 | |
nikitateggi | 59:e21cf7e08ebf | 76 | BLEMsg_info *ptr_BLEMsg_info_bp, BLEMsg_info_bp; // A copy of master strcuture [ "BLEMsg_info" ] by name "BLEMsg_info_bp" is created |
nikitateggi | 59:e21cf7e08ebf | 77 | ptr_BLEMsg_info_bp = &BLEMsg_info_bp; // *ptr_BLEMsg_info_bp is the pointer to local copy; |
nidhinvarghese | 14:f5c62d30c6fc | 78 | |
nidhinvarghese | 14:f5c62d30c6fc | 79 | // Declaration of Date Structure |
nikitateggi | 61:2143f39103f7 | 80 | DateTime_info DateTime_info_bp; // A copy of Master Structure "DateTime_info" created, //commented nikita |
nikitateggi | 61:2143f39103f7 | 81 | // ptr_DateTime_info_bp = &DateTime_info_bp; // Structure pointer points to that copy. |
nidhinvarghese | 14:f5c62d30c6fc | 82 | |
nidhinvarghese | 14:f5c62d30c6fc | 83 | |
nidhinvarghese | 14:f5c62d30c6fc | 84 | // RTC operations |
nikitateggi | 59:e21cf7e08ebf | 85 | time_t epoch_time_bp; //A copy of time_t by name epoch_time_bp is created |
nikitateggi | 59:e21cf7e08ebf | 86 | epoch_time_bp = rtc_read(); // time is got from get epoch function. |
nidhinvarghese | 14:f5c62d30c6fc | 87 | |
nikitateggi | 61:2143f39103f7 | 88 | struct tm * ptr_time_info_bp; // Sturucture copy of tm is created//removed //time_info_bp; //nikita |
nikitateggi | 59:e21cf7e08ebf | 89 | ptr_time_info_bp = localtime(&epoch_time_bp); // Structure accepts the time in local format from "time_t" type. |
nidhinvarghese | 14:f5c62d30c6fc | 90 | |
nidhinvarghese | 14:f5c62d30c6fc | 91 | //BELOW LINE IS TO CHECK Date and TIME |
nikitateggi | 59:e21cf7e08ebf | 92 | serial_bp.printf("Time is %d: %d: %d\n", (*ptr_time_info_bp).tm_hour, (*ptr_time_info_bp).tm_min, (*ptr_time_info_bp).tm_sec); |
nikitateggi | 59:e21cf7e08ebf | 93 | serial_bp.printf("Date is %d:%d:%d\n", (*ptr_time_info_bp).tm_mday, (*ptr_time_info_bp).tm_mon+1, (*ptr_time_info_bp).tm_year-100); |
nidhinvarghese | 14:f5c62d30c6fc | 94 | |
nidhinvarghese | 14:f5c62d30c6fc | 95 | //Copying from one structure to the other using variables |
nidhinvarghese | 14:f5c62d30c6fc | 96 | DateTime_info_bp.hour = (uint8_t)(*ptr_time_info_bp).tm_hour; |
nidhinvarghese | 14:f5c62d30c6fc | 97 | DateTime_info_bp.mins = (uint8_t)(*ptr_time_info_bp).tm_min; |
nidhinvarghese | 14:f5c62d30c6fc | 98 | DateTime_info_bp.sec = (uint8_t)(*ptr_time_info_bp).tm_sec; |
nidhinvarghese | 14:f5c62d30c6fc | 99 | |
nidhinvarghese | 14:f5c62d30c6fc | 100 | DateTime_info_bp.date = (uint8_t) (*ptr_time_info_bp).tm_mday; |
nidhinvarghese | 14:f5c62d30c6fc | 101 | DateTime_info_bp.month =(uint8_t)(*ptr_time_info_bp).tm_mon+1; |
nidhinvarghese | 14:f5c62d30c6fc | 102 | DateTime_info_bp.year = (uint8_t)(*ptr_time_info_bp).tm_year-100; |
nidhinvarghese | 14:f5c62d30c6fc | 103 | |
nidhinvarghese | 14:f5c62d30c6fc | 104 | // Copying Time to Main structure |
nidhinvarghese | 14:f5c62d30c6fc | 105 | BLEMsg_info_bp.date_time.hour = DateTime_info_bp.hour; |
nidhinvarghese | 14:f5c62d30c6fc | 106 | BLEMsg_info_bp.date_time.mins = DateTime_info_bp.mins; |
nidhinvarghese | 14:f5c62d30c6fc | 107 | BLEMsg_info_bp.date_time.sec = DateTime_info_bp.sec; |
nidhinvarghese | 14:f5c62d30c6fc | 108 | |
nidhinvarghese | 14:f5c62d30c6fc | 109 | BLEMsg_info_bp.date_time.date = DateTime_info_bp.date ; |
nidhinvarghese | 14:f5c62d30c6fc | 110 | BLEMsg_info_bp.date_time.month = DateTime_info_bp.month ; |
nidhinvarghese | 14:f5c62d30c6fc | 111 | BLEMsg_info_bp.date_time.year = DateTime_info_bp.year ; |
nidhinvarghese | 14:f5c62d30c6fc | 112 | |
nidhinvarghese | 14:f5c62d30c6fc | 113 | |
nidhinvarghese | 14:f5c62d30c6fc | 114 | //Checking if the structure has these values |
nikitateggi | 59:e21cf7e08ebf | 115 | serial_bp.printf("Time 2 is %d:%d:%d\n", DateTime_info_bp.hour, DateTime_info_bp.mins, DateTime_info_bp.sec); |
nikitateggi | 59:e21cf7e08ebf | 116 | serial_bp.printf("\t Date is %d:%d:%d\n",DateTime_info_bp.date, DateTime_info_bp.month, DateTime_info_bp.year); |
nidhinvarghese | 14:f5c62d30c6fc | 117 | |
nidhinvarghese | 14:f5c62d30c6fc | 118 | |
nidhinvarghese | 14:f5c62d30c6fc | 119 | //Loading values to of Test type |
nikitateggi | 59:e21cf7e08ebf | 120 | test_type_info test_type_info_bp; // copy of " test_type_info" created |
nikitateggi | 59:e21cf7e08ebf | 121 | test_type_info_bp = BP_Test; // Loaded value 00 to the test type |
nidhinvarghese | 14:f5c62d30c6fc | 122 | |
nidhinvarghese | 14:f5c62d30c6fc | 123 | BLEMsg_info_bp.test_type = test_type_info_bp; |
nikitateggi | 59:e21cf7e08ebf | 124 | |
nikitateggi | 59:e21cf7e08ebf | 125 | serial_bp.printf("Test Type is : %d\n", test_type_info_bp); |
nidhinvarghese | 14:f5c62d30c6fc | 126 | |
nidhinvarghese | 14:f5c62d30c6fc | 127 | |
nidhinvarghese | 14:f5c62d30c6fc | 128 | // Loading values of Length , PID, DID, sampling frequency, number of samples, calculated data. |
nikitateggi | 57:200c42fba01f | 129 | BLEMsg_info_bp.device_id = get_did(); // Device ID fixed // changed on 11/8/17 nikita |
nikitateggi | 59:e21cf7e08ebf | 130 | serial_bp.printf("device id read ecg = %d\n", BLEMsg_info_bp.device_id); |
nikitateggi | 61:2143f39103f7 | 131 | BLEMsg_info_bp.patient_id = pid; // Patient ID |
nikitateggi | 59:e21cf7e08ebf | 132 | BLEMsg_info_bp.sampling_freq = ECG_SAMPLING_FREQUENCY; // sampling frrquency |
nikitateggi | 59:e21cf7e08ebf | 133 | BLEMsg_info_bp.length = BP_LENGTH_IN_BYTES; //Total length of data in bytes 22 B+10752 B |
nidhinvarghese | 14:f5c62d30c6fc | 134 | |
nikitateggi | 59:e21cf7e08ebf | 135 | BLEMsg_info_bp.num_samples.num_sample_ppg_dummy = BP_PPG_SAMPLES ; // PPG number of samples copied to master struct |
nikitateggi | 59:e21cf7e08ebf | 136 | BLEMsg_info_bp.num_samples.num_sample_ecg_OTtyp = BP_ECG_SAMPLES ; // ECG number of samples copied to master struct |
nidhinvarghese | 14:f5c62d30c6fc | 137 | |
nikitateggi | 59:e21cf7e08ebf | 138 | //serial_bp.baud(SERIAL_BAUD_RATE); |
nidhinvarghese | 8:adf2ba7e6412 | 139 | |
nikitateggi | 59:e21cf7e08ebf | 140 | freqset(); // setting the frequency |
nidhinvarghese | 8:adf2ba7e6412 | 141 | setupfunc(); |
nikitateggi | 59:e21cf7e08ebf | 142 | lead_reg = ecgsetupfunc(); // lead contact // 14/06 |
nidhinvarghese | 8:adf2ba7e6412 | 143 | |
nikitateggi | 59:e21cf7e08ebf | 144 | maxim_max30102_reset(); // PPG reset |
nidhinvarghese | 8:adf2ba7e6412 | 145 | wait_ms(20); |
nidhinvarghese | 8:adf2ba7e6412 | 146 | maxim_max30102_init(); |
nidhinvarghese | 8:adf2ba7e6412 | 147 | |
nikitateggi | 61:2143f39103f7 | 148 | //chk = 1; //commented nikita |
nikitateggi | 59:e21cf7e08ebf | 149 | |
nikitateggi | 59:e21cf7e08ebf | 150 | for(uint16_t i = 0; i < DUMMY_CAPTURE; i++) |
nidhinvarghese | 8:adf2ba7e6412 | 151 | { |
nidhinvarghese | 8:adf2ba7e6412 | 152 | concatenate_value2= readvalue(); |
nidhinvarghese | 8:adf2ba7e6412 | 153 | maxim_max30102_read_reg(0,&uch_dummy); |
nikitateggi | 59:e21cf7e08ebf | 154 | while(INTERRUPT_PPG.read()==1); |
nidhinvarghese | 8:adf2ba7e6412 | 155 | maxim_max30102_read_fifo(&ppgdata); |
nikitateggi | 59:e21cf7e08ebf | 156 | } |
nikitateggi | 20:7c64e6ecad76 | 157 | |
nikitateggi | 59:e21cf7e08ebf | 158 | for(uint16_t i=0; i < DUMMY_CAPTURE; i++) // READS 500 SAMPLES TO SEE MAX AND MIN VAL DIFFERENCE |
nikitateggi | 59:e21cf7e08ebf | 159 | { |
nikitateggi | 59:e21cf7e08ebf | 160 | maxim_max30102_read_reg(0,&uch_dummy); |
nikitateggi | 59:e21cf7e08ebf | 161 | while(INTERRUPT_PPG.read()==1); |
nikitateggi | 59:e21cf7e08ebf | 162 | maxim_max30102_read_fifo(&ppgdata); |
nikitateggi | 59:e21cf7e08ebf | 163 | serial_bp.printf("%d\n",ppgdata); |
nikitateggi | 59:e21cf7e08ebf | 164 | if(un_min>ppgdata) |
nikitateggi | 59:e21cf7e08ebf | 165 | un_min=ppgdata; //update signal min |
nikitateggi | 59:e21cf7e08ebf | 166 | if(un_max<ppgdata) |
nikitateggi | 59:e21cf7e08ebf | 167 | un_max=ppgdata; |
nikitateggi | 59:e21cf7e08ebf | 168 | } |
nikitateggi | 20:7c64e6ecad76 | 169 | |
nikitateggi | 59:e21cf7e08ebf | 170 | serial_bp.printf("The max is %d\n", un_max); // |
nikitateggi | 59:e21cf7e08ebf | 171 | serial_bp.printf("The min is %d\n", un_min); |
nikitateggi | 59:e21cf7e08ebf | 172 | if (((un_max -un_min) > PPG_MAX_MIN_DIFF) && (lead_reg == LEADS_DETECTED)) // Checking for threshold 300 Added Nidhin 16/6/17 |
nikitateggi | 59:e21cf7e08ebf | 173 | { |
nikitateggi | 59:e21cf7e08ebf | 174 | sd_open_BPfilee(pid); |
nikitateggi | 59:e21cf7e08ebf | 175 | sd_open_BP_ECGfile(pid) ; // sd_open_BP_ECGfile(123) draft file for testing |
nikitateggi | 59:e21cf7e08ebf | 176 | sd_open_BP_PPGfile(pid) ; // sd_open_BP_PPGfile(123) draft file for testing |
nikitateggi | 59:e21cf7e08ebf | 177 | |
nikitateggi | 59:e21cf7e08ebf | 178 | for(uint16_t i=0; i < ECG_PPG_SAMPLES; i++) |
nidhinvarghese | 8:adf2ba7e6412 | 179 | { |
nidhinvarghese | 8:adf2ba7e6412 | 180 | concatenate_value2 = readvalue(); |
nidhinvarghese | 15:208b146151ba | 181 | ecg = sd_BP_ecgwrite(&concatenate_value2); |
nidhinvarghese | 14:f5c62d30c6fc | 182 | |
nidhinvarghese | 8:adf2ba7e6412 | 183 | maxim_max30102_read_reg(0,&uch_dummy); |
nikitateggi | 59:e21cf7e08ebf | 184 | while(INTERRUPT_PPG.read()==1); |
nidhinvarghese | 8:adf2ba7e6412 | 185 | maxim_max30102_read_fifo(&ppgdata); |
nikitateggi | 59:e21cf7e08ebf | 186 | ppg = sd_BP_ppgwrite(&ppgdata); |
nikitateggi | 59:e21cf7e08ebf | 187 | } |
avp2417 | 36:00d96aa14658 | 188 | |
nikitateggi | 59:e21cf7e08ebf | 189 | for(uint16_t i=0; i< PPG_SAMPLES; i++) |
nidhinvarghese | 8:adf2ba7e6412 | 190 | { |
nidhinvarghese | 8:adf2ba7e6412 | 191 | maxim_max30102_read_reg(0,&uch_dummy); |
nikitateggi | 59:e21cf7e08ebf | 192 | while(INTERRUPT_PPG.read()==1); |
nidhinvarghese | 8:adf2ba7e6412 | 193 | maxim_max30102_read_fifo(&ppgdata); |
nikitateggi | 59:e21cf7e08ebf | 194 | ppg = sd_BP_ppgwrite (&ppgdata); |
nidhinvarghese | 8:adf2ba7e6412 | 195 | } |
nidhinvarghese | 8:adf2ba7e6412 | 196 | |
nikitateggi | 59:e21cf7e08ebf | 197 | fclose(ecg); |
nikitateggi | 59:e21cf7e08ebf | 198 | fclose(ppg); |
nidhinvarghese | 8:adf2ba7e6412 | 199 | |
nikitateggi | 59:e21cf7e08ebf | 200 | maxim_max30102_reset(); |
nidhinvarghese | 14:f5c62d30c6fc | 201 | |
nikitateggi | 59:e21cf7e08ebf | 202 | eloc = sd_BP_ECGMAX(pid); |
nikitateggi | 59:e21cf7e08ebf | 203 | ploc = sd_BP_PPGMAX(pid); |
nikitateggi | 59:e21cf7e08ebf | 204 | serial_bp.printf("eloc: %d ploc: %d\n",eloc,ploc); |
nikitateggi | 59:e21cf7e08ebf | 205 | |
nikitateggi | 59:e21cf7e08ebf | 206 | delta_t = (2*(ploc - eloc)); |
nikitateggi | 59:e21cf7e08ebf | 207 | PWV = BLOOD_VELOCITY_DIVISOR / delta_t; |
nikitateggi | 59:e21cf7e08ebf | 208 | |
nikitateggi | 59:e21cf7e08ebf | 209 | SBP = SBP_MAIN_FACTOR * PWV + SBP_CORRECTION_FACTOR; |
nikitateggi | 59:e21cf7e08ebf | 210 | DBP = (DBP_MAIN_FACTOR * PWV + DBP_CORRECTION_FACTOR_1) + DBP_CORRECTION_FACTOR_2; |
nikitateggi | 59:e21cf7e08ebf | 211 | serial_bp.printf("sbp: %d dbp: %d\n",(uint16_t)SBP,(uint16_t)DBP); |
nikitateggi | 59:e21cf7e08ebf | 212 | |
nikitateggi | 59:e21cf7e08ebf | 213 | BLEMsg_info_bp.cal_data.cal_sbp_dummy = (uint16_t) SBP; |
nikitateggi | 59:e21cf7e08ebf | 214 | BLEMsg_info_bp.cal_data.cal_dbp_OTtyp = (uint16_t) DBP; |
nikitateggi | 59:e21cf7e08ebf | 215 | |
nikitateggi | 59:e21cf7e08ebf | 216 | if((SBP > MAX_SBP_THRESHOLD || SBP < MIN_SBP_THRESHOLD) && (DBP > MAX_DBP_THRESHOLD || DBP < MIN_SBP_THRESHOLD)) // checking for range below and above and then displaying error |
nikitateggi | 59:e21cf7e08ebf | 217 | { |
nikitateggi | 59:e21cf7e08ebf | 218 | screen_bp_error(); // checking for error out of range |
nikitateggi | 59:e21cf7e08ebf | 219 | del_ppg_ecg_BPfile(pid); // Copy ECG and PPG data to BP file |
nikitateggi | 59:e21cf7e08ebf | 220 | delete_subfiles(pid); |
nikitateggi | 59:e21cf7e08ebf | 221 | } |
nidhinvarghese | 14:f5c62d30c6fc | 222 | |
nikitateggi | 59:e21cf7e08ebf | 223 | else |
nikitateggi | 59:e21cf7e08ebf | 224 | { |
nikitateggi | 59:e21cf7e08ebf | 225 | create_single_BPfile(pid); // Copy ECG and PPG data to BP file |
nikitateggi | 59:e21cf7e08ebf | 226 | structure_file(ptr_BLEMsg_info_bp, pid); // Copy BP structure to main file |
nikitateggi | 59:e21cf7e08ebf | 227 | bpfile_mainfile(pid); |
nikitateggi | 59:e21cf7e08ebf | 228 | screen_bp1(SBP,DBP); |
nikitateggi | 59:e21cf7e08ebf | 229 | if(get_filecreated_status() == false) //if file is in write mode |
nikitateggi | 59:e21cf7e08ebf | 230 | { |
nikitateggi | 59:e21cf7e08ebf | 231 | set_filecreated_status(); |
nikitateggi | 59:e21cf7e08ebf | 232 | increment_filepid (); |
nikitateggi | 59:e21cf7e08ebf | 233 | } |
nikitateggi | 59:e21cf7e08ebf | 234 | } |
nikitateggi | 59:e21cf7e08ebf | 235 | } |
nikitateggi | 20:7c64e6ecad76 | 236 | |
nikitateggi | 59:e21cf7e08ebf | 237 | else |
nikitateggi | 59:e21cf7e08ebf | 238 | { |
nikitateggi | 59:e21cf7e08ebf | 239 | maxim_max30102_reset(); |
nikitateggi | 59:e21cf7e08ebf | 240 | serial_bp.printf("no finger detect\n"); |
nikitateggi | 59:e21cf7e08ebf | 241 | screen_ecg_lead_bp_fingerdetect(); |
nikitateggi | 59:e21cf7e08ebf | 242 | } |
nikitateggi | 59:e21cf7e08ebf | 243 | screen_ecg_bp() ; |
avp2417 | 36:00d96aa14658 | 244 | } |
avp2417 | 36:00d96aa14658 | 245 | |
nikitateggi | 59:e21cf7e08ebf | 246 | uint16_t sd_BP_ECGMAX(uint32_t pid) |
nikitateggi | 59:e21cf7e08ebf | 247 | { |
nikitateggi | 59:e21cf7e08ebf | 248 | uint32_t ecgmax = 0; |
nikitateggi | 59:e21cf7e08ebf | 249 | uint32_t ecg_buffer[1] = {0}; // a changed to ecg buffer |
nikitateggi | 59:e21cf7e08ebf | 250 | uint16_t samplesecg = 0; |
nikitateggi | 59:e21cf7e08ebf | 251 | char buffer1[32]; |
nikitateggi | 59:e21cf7e08ebf | 252 | FILE *fpecg_bp; // file pointer in place of fpecg- Suhasini- 21/7/17 |
avp2417 | 36:00d96aa14658 | 253 | |
nikitateggi | 59:e21cf7e08ebf | 254 | sprintf(buffer1,"/sd/%d_BP_ECG.csv",pid); |
nikitateggi | 59:e21cf7e08ebf | 255 | fpecg_bp = fopen(buffer1,"r"); |
nikitateggi | 59:e21cf7e08ebf | 256 | if(fpecg_bp == NULL) |
nikitateggi | 59:e21cf7e08ebf | 257 | { |
nikitateggi | 59:e21cf7e08ebf | 258 | exit(1); |
nikitateggi | 59:e21cf7e08ebf | 259 | } |
avp2417 | 36:00d96aa14658 | 260 | |
nikitateggi | 59:e21cf7e08ebf | 261 | else |
avp2417 | 36:00d96aa14658 | 262 | { |
nikitateggi | 59:e21cf7e08ebf | 263 | for(ebp=0; ebp < BP_ECG_SAMPLES; ebp++) |
nikitateggi | 59:e21cf7e08ebf | 264 | { |
avp2417 | 36:00d96aa14658 | 265 | |
avp2417 | 36:00d96aa14658 | 266 | |
nikitateggi | 59:e21cf7e08ebf | 267 | fread(ecg_buffer,sizeof(uint32_t), 1,fpecg_bp); // a changed to ecg buffer |
nikitateggi | 59:e21cf7e08ebf | 268 | if(ecg_buffer[0] > ecgmax) // a changed to ecg buffer |
avp2417 | 36:00d96aa14658 | 269 | { |
nikitateggi | 59:e21cf7e08ebf | 270 | ecgmax = ecg_buffer[0]; |
nikitateggi | 59:e21cf7e08ebf | 271 | ecgloc = ebp +1; |
avp2417 | 36:00d96aa14658 | 272 | } |
nikitateggi | 59:e21cf7e08ebf | 273 | else |
nikitateggi | 59:e21cf7e08ebf | 274 | samplesecg = ebp+1; |
nikitateggi | 59:e21cf7e08ebf | 275 | } |
avp2417 | 36:00d96aa14658 | 276 | } |
avp2417 | 36:00d96aa14658 | 277 | fclose (fpecg_bp); |
avp2417 | 36:00d96aa14658 | 278 | return ecgloc; |
avp2417 | 36:00d96aa14658 | 279 | } |
avp2417 | 36:00d96aa14658 | 280 | |
avp2417 | 36:00d96aa14658 | 281 | // Function to calculate PPG MAx and location |
avp2417 | 36:00d96aa14658 | 282 | |
nikitateggi | 59:e21cf7e08ebf | 283 | uint16_t sd_BP_PPGMAX(uint32_t pid) |
nikitateggi | 59:e21cf7e08ebf | 284 | { |
nikitateggi | 59:e21cf7e08ebf | 285 | uint32_t ppgmax = 0; |
nikitateggi | 59:e21cf7e08ebf | 286 | uint32_t ppg_buffer[1] ={0}; //b changed to ppg_buffer |
nikitateggi | 59:e21cf7e08ebf | 287 | uint16_t samplesppg = 0; |
nikitateggi | 59:e21cf7e08ebf | 288 | char buffer1[32]; |
avp2417 | 36:00d96aa14658 | 289 | |
nikitateggi | 59:e21cf7e08ebf | 290 | sprintf(buffer1,"/sd/%d_BP_PPG.csv",pid); |
nikitateggi | 59:e21cf7e08ebf | 291 | fpppg1 = fopen(buffer1,"r"); |
nikitateggi | 59:e21cf7e08ebf | 292 | if(fpppg1 == NULL) |
nikitateggi | 59:e21cf7e08ebf | 293 | { |
nikitateggi | 59:e21cf7e08ebf | 294 | exit(1); |
nikitateggi | 59:e21cf7e08ebf | 295 | } |
avp2417 | 36:00d96aa14658 | 296 | |
nikitateggi | 59:e21cf7e08ebf | 297 | else |
nikitateggi | 59:e21cf7e08ebf | 298 | { |
nikitateggi | 59:e21cf7e08ebf | 299 | for(pbp=0; pbp < BP_PPG_SAMPLES; pbp++) |
nikitateggi | 59:e21cf7e08ebf | 300 | { |
nikitateggi | 59:e21cf7e08ebf | 301 | fread(ppg_buffer, sizeof(uint32_t),1, fpppg1); //b changed to ppg_buffer |
avp2417 | 36:00d96aa14658 | 302 | |
nikitateggi | 59:e21cf7e08ebf | 303 | if((pbp>ecgloc) && (pbp< (ecgloc + PEAK_DETECT_RANGE_PPG))) |
nikitateggi | 59:e21cf7e08ebf | 304 | { |
nikitateggi | 59:e21cf7e08ebf | 305 | if(ppg_buffer[0] > ppgmax) |
nikitateggi | 59:e21cf7e08ebf | 306 | { |
nikitateggi | 59:e21cf7e08ebf | 307 | ppgmax = ppg_buffer[0]; //b changed to ppg_buffer |
nikitateggi | 59:e21cf7e08ebf | 308 | ppgloc= pbp+1; |
nikitateggi | 59:e21cf7e08ebf | 309 | } |
nikitateggi | 59:e21cf7e08ebf | 310 | else |
nikitateggi | 59:e21cf7e08ebf | 311 | samplesppg =pbp+1; |
avp2417 | 36:00d96aa14658 | 312 | } |
nikitateggi | 59:e21cf7e08ebf | 313 | else |
nikitateggi | 59:e21cf7e08ebf | 314 | samplesppg = pbp+1; |
nikitateggi | 59:e21cf7e08ebf | 315 | } |
avp2417 | 36:00d96aa14658 | 316 | } |
avp2417 | 36:00d96aa14658 | 317 | fclose (fpppg1); |
avp2417 | 36:00d96aa14658 | 318 | return ppgloc; |
nikitateggi | 59:e21cf7e08ebf | 319 | } |