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 nikita teggi

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?

UserRevisionLine numberNew 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 }