Changes done in ECG and BT
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of merged_code2_20sept_2017_4th_oct_2017 by
ecgg.cpp@24:d992ee8369f4, 2017-06-24 (annotated)
- Committer:
- nikitateggi
- Date:
- Sat Jun 24 10:24:32 2017 +0000
- Revision:
- 24:d992ee8369f4
- Parent:
- 22:ffa88619551d
- Child:
- 26:53ff13a164f3
poc with battery monitoring(commented),; updated pid and bufferless heart rate
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nikitateggi | 1:8316c23ec6b9 | 1 | /** ECG ADS1291 Test program. |
nikitateggi | 1:8316c23ec6b9 | 2 | ADS1291 is a single channel ECG chip |
nikitateggi | 1:8316c23ec6b9 | 3 | with a 24 bit Sigma-Delta ADC |
nikitateggi | 1:8316c23ec6b9 | 4 | */ |
nikitateggi | 1:8316c23ec6b9 | 5 | |
nikitateggi | 1:8316c23ec6b9 | 6 | #include "mbed.h" |
nikitateggi | 1:8316c23ec6b9 | 7 | #include <string.h> |
nikitateggi | 1:8316c23ec6b9 | 8 | #include <stdio.h> |
nikitateggi | 1:8316c23ec6b9 | 9 | #include "ds3231.h" |
nikitateggi | 1:8316c23ec6b9 | 10 | #include "SDFileSystem.h" |
nikitateggi | 1:8316c23ec6b9 | 11 | #include "ecg_dec.h" |
nikitateggi | 1:8316c23ec6b9 | 12 | #include "rtc.h" |
nikitateggi | 1:8316c23ec6b9 | 13 | #include "sdcard.h" |
nikitateggi | 3:9a06c2bed650 | 14 | #include "ec_bp.h" |
nidhinvarghese | 14:f5c62d30c6fc | 15 | |
nidhinvarghese | 14:f5c62d30c6fc | 16 | #include "struct.h" // Added on 31/5/17_Nidhin |
nikitateggi | 19:1650bbc923cc | 17 | //#include "test_type.h" //Added on 31/5/17_Nidhin |
nikitateggi | 3:9a06c2bed650 | 18 | Serial pc(USBTX,USBRX); |
nikitateggi | 1:8316c23ec6b9 | 19 | |
nikitateggi | 1:8316c23ec6b9 | 20 | |
nikitateggi | 22:ffa88619551d | 21 | uint16_t ecg(int32_t pid) |
nikitateggi | 22:ffa88619551d | 22 | //float ecg(int pid) |
nikitateggi | 3:9a06c2bed650 | 23 | { |
nikitateggi | 20:7c64e6ecad76 | 24 | |
nikitateggi | 20:7c64e6ecad76 | 25 | uint8_t lead_reg=0; // added on 14/06 to check lead -off |
nidhinvarghese | 14:f5c62d30c6fc | 26 | //----------------------- Structure for Bluetooth Added Nidhin 1/6/2017-------------------// |
nidhinvarghese | 14:f5c62d30c6fc | 27 | |
nidhinvarghese | 14:f5c62d30c6fc | 28 | //BLUETOOTH STRUCTURE |
nidhinvarghese | 14:f5c62d30c6fc | 29 | |
nidhinvarghese | 14:f5c62d30c6fc | 30 | BLEMsg_info *ptr_BLEMsg_info_ecg, BLEMsg_info_ecg; // A copy of master strcuture [ "BLEMsg_info" ] by name "BLEMsg_info_ecg" is created |
nidhinvarghese | 14:f5c62d30c6fc | 31 | ptr_BLEMsg_info_ecg = &BLEMsg_info_ecg; // *ptr_BLEMsg_info_bp is the pointer to local copy; |
nidhinvarghese | 14:f5c62d30c6fc | 32 | |
nidhinvarghese | 14:f5c62d30c6fc | 33 | // Declaration of Date Structure |
nidhinvarghese | 14:f5c62d30c6fc | 34 | DateTime_info *ptr_DateTime_info_ecg, DateTime_info_ecg; // A copy of Master Structure "DateTime_info" created, |
nidhinvarghese | 14:f5c62d30c6fc | 35 | ptr_DateTime_info_ecg = &DateTime_info_ecg; // Structure pointer points to that copy. |
nidhinvarghese | 14:f5c62d30c6fc | 36 | |
nidhinvarghese | 14:f5c62d30c6fc | 37 | |
nidhinvarghese | 14:f5c62d30c6fc | 38 | // RTC operations |
nidhinvarghese | 14:f5c62d30c6fc | 39 | time_t epoch_time_ecg; //A copy of time_t by name epoch_time_bp is created |
nidhinvarghese | 14:f5c62d30c6fc | 40 | epoch_time_ecg = rtc_read(); // time is got from get epoch function. |
nidhinvarghese | 14:f5c62d30c6fc | 41 | |
nidhinvarghese | 14:f5c62d30c6fc | 42 | struct tm * ptr_time_info_ecg, time_info_ecg; // Sturucture copy of tm is created |
nidhinvarghese | 14:f5c62d30c6fc | 43 | ptr_time_info_ecg = localtime(&epoch_time_ecg); // Structure accepts the time in local format from "time_t" type. |
nidhinvarghese | 14:f5c62d30c6fc | 44 | |
nidhinvarghese | 14:f5c62d30c6fc | 45 | //BELOW LINE IS TO CHECK Date and TIME |
nidhinvarghese | 15:208b146151ba | 46 | //pc.printf("Time is %d: %d: %d\n", (*ptr_time_info_ecg).tm_hour, (*ptr_time_info_ecg).tm_min, (*ptr_time_info_ecg).tm_sec); |
nidhinvarghese | 15:208b146151ba | 47 | //pc.printf("Date is %d:%d:%d\n", (*ptr_time_info_ecg).tm_mday, (*ptr_time_info_ecg).tm_mon+1, (*ptr_time_info_ecg).tm_year-100); |
nidhinvarghese | 14:f5c62d30c6fc | 48 | |
nidhinvarghese | 14:f5c62d30c6fc | 49 | //Copying from one structure to the other using variables |
nidhinvarghese | 14:f5c62d30c6fc | 50 | DateTime_info_ecg.hour = (uint8_t)(*ptr_time_info_ecg).tm_hour; |
nidhinvarghese | 14:f5c62d30c6fc | 51 | DateTime_info_ecg.mins = (uint8_t)(*ptr_time_info_ecg).tm_min; |
nidhinvarghese | 14:f5c62d30c6fc | 52 | DateTime_info_ecg.sec = (uint8_t)(*ptr_time_info_ecg).tm_sec; |
nidhinvarghese | 14:f5c62d30c6fc | 53 | |
nidhinvarghese | 14:f5c62d30c6fc | 54 | DateTime_info_ecg.date = (uint8_t) (*ptr_time_info_ecg).tm_mday; |
nidhinvarghese | 14:f5c62d30c6fc | 55 | DateTime_info_ecg.month =(uint8_t)(*ptr_time_info_ecg).tm_mon+1; |
nidhinvarghese | 14:f5c62d30c6fc | 56 | DateTime_info_ecg.year = (uint8_t)(*ptr_time_info_ecg).tm_year-100; |
nidhinvarghese | 14:f5c62d30c6fc | 57 | |
nidhinvarghese | 14:f5c62d30c6fc | 58 | // Copying Time to Main structure |
nidhinvarghese | 14:f5c62d30c6fc | 59 | BLEMsg_info_ecg.date_time.hour = DateTime_info_ecg.hour; |
nidhinvarghese | 14:f5c62d30c6fc | 60 | BLEMsg_info_ecg.date_time.mins = DateTime_info_ecg.mins; |
nidhinvarghese | 14:f5c62d30c6fc | 61 | BLEMsg_info_ecg.date_time.sec = DateTime_info_ecg.sec; |
nidhinvarghese | 14:f5c62d30c6fc | 62 | |
nidhinvarghese | 14:f5c62d30c6fc | 63 | BLEMsg_info_ecg.date_time.date = DateTime_info_ecg.date ; |
nidhinvarghese | 14:f5c62d30c6fc | 64 | BLEMsg_info_ecg.date_time.month = DateTime_info_ecg.month ; |
nidhinvarghese | 14:f5c62d30c6fc | 65 | BLEMsg_info_ecg.date_time.year = DateTime_info_ecg.year ; |
nidhinvarghese | 14:f5c62d30c6fc | 66 | |
nidhinvarghese | 14:f5c62d30c6fc | 67 | |
nidhinvarghese | 14:f5c62d30c6fc | 68 | //Checking if the structure has these values |
nidhinvarghese | 15:208b146151ba | 69 | //pc.printf("Time 2 is %d:%d:%d\n", DateTime_info_ecg.hour, DateTime_info_ecg.mins, DateTime_info_ecg.sec); |
nidhinvarghese | 15:208b146151ba | 70 | //pc.printf("\t Date is %d:%d:%d\n",DateTime_info_ecg.date, DateTime_info_ecg.month, DateTime_info_ecg.year); |
nidhinvarghese | 14:f5c62d30c6fc | 71 | |
nidhinvarghese | 14:f5c62d30c6fc | 72 | |
nidhinvarghese | 14:f5c62d30c6fc | 73 | //Loading values to of Test type |
nidhinvarghese | 14:f5c62d30c6fc | 74 | test_type_info test_type_info_ecg; // copy of " test_type_info" created |
nidhinvarghese | 14:f5c62d30c6fc | 75 | test_type_info_ecg = ECG_Test; // Loaded value 00 to the test type |
nidhinvarghese | 14:f5c62d30c6fc | 76 | |
nidhinvarghese | 14:f5c62d30c6fc | 77 | BLEMsg_info_ecg.test_type = test_type_info_ecg; |
nidhinvarghese | 14:f5c62d30c6fc | 78 | //Check if 00 is getting printed |
nidhinvarghese | 15:208b146151ba | 79 | //pc.printf("Test Type is : %d\n", test_type_info_ecg); |
nidhinvarghese | 14:f5c62d30c6fc | 80 | |
nidhinvarghese | 14:f5c62d30c6fc | 81 | |
nidhinvarghese | 14:f5c62d30c6fc | 82 | // Loading values of Length , PID, DID, sampling frequency, number of samples, calculated data. |
nidhinvarghese | 14:f5c62d30c6fc | 83 | BLEMsg_info_ecg.device_id = 01; // Device ID fixed |
nidhinvarghese | 14:f5c62d30c6fc | 84 | BLEMsg_info_ecg.patient_id = (uint32_t)pid; // Patient ID |
nidhinvarghese | 14:f5c62d30c6fc | 85 | BLEMsg_info_ecg.sampling_freq = 500; // sampling frrquency |
nikitateggi | 22:ffa88619551d | 86 | BLEMsg_info_ecg.length = 4022; //Total length of data in bytes 22 B+ 4000 data |
nidhinvarghese | 14:f5c62d30c6fc | 87 | |
nidhinvarghese | 14:f5c62d30c6fc | 88 | /* |
nidhinvarghese | 14:f5c62d30c6fc | 89 | //Loading number of samples |
nidhinvarghese | 14:f5c62d30c6fc | 90 | NumSamples_info NumSamples_info_bp; //Copy of structure NumSamples_info |
nidhinvarghese | 14:f5c62d30c6fc | 91 | NumSamples_info_bp.num_ppg_sample = 1664; // PPG & ECG Sample number loaded in structure copy |
nidhinvarghese | 14:f5c62d30c6fc | 92 | NumSamples_info_bp.num_ecg_sample = 1024; |
nidhinvarghese | 14:f5c62d30c6fc | 93 | */ |
nidhinvarghese | 14:f5c62d30c6fc | 94 | |
nidhinvarghese | 14:f5c62d30c6fc | 95 | BLEMsg_info_ecg.num_samples.num_sample_ppg_dummy = 0 ;// PPG number of samples copied to master struct |
nidhinvarghese | 14:f5c62d30c6fc | 96 | BLEMsg_info_ecg.num_samples.num_sample_ecg_OTtyp = 1000 ; // ECG number of samples copied to master struct |
nidhinvarghese | 14:f5c62d30c6fc | 97 | |
nidhinvarghese | 14:f5c62d30c6fc | 98 | //----------------------------------------END Structure for Bluetooth - Added Nidhin 1/6/2017------- |
nidhinvarghese | 14:f5c62d30c6fc | 99 | |
nidhinvarghese | 15:208b146151ba | 100 | int32_t concatenate_value2 = 0; // ORG. "int concatenate_value2 = 0;" Nidhin 1/6/17 |
nidhinvarghese | 15:208b146151ba | 101 | int32_t *ecg_ptr; // Added 1/6/2017 Nidhin |
nidhinvarghese | 14:f5c62d30c6fc | 102 | ecg_ptr = &concatenate_value2; // Pointer to pass for ECG write into SD card Nidhin 1/6/2017 |
nidhinvarghese | 14:f5c62d30c6fc | 103 | |
suhasini | 13:5d3b478ea9c7 | 104 | // int32_t sample_sum; // static int32_t avg[1500]; |
nikitateggi | 22:ffa88619551d | 105 | int32_t count = 0; |
nikitateggi | 22:ffa88619551d | 106 | //int32_t fs = 500; //COMMENTED NIDHIN 17/6/17 |
nikitateggi | 22:ffa88619551d | 107 | //uint32_t ecg_buf[N_ECG]; //COMMENTED NIDHIN 17/6/17 |
nikitateggi | 22:ffa88619551d | 108 | //Timer t; //COMMENTED NIDHIN 17/6/17 |
suhasini | 13:5d3b478ea9c7 | 109 | |
suhasini | 13:5d3b478ea9c7 | 110 | //------------------ Declaration for Peak value detection ------------------------------------ |
nikitateggi | 22:ffa88619551d | 111 | /* |
suhasini | 13:5d3b478ea9c7 | 112 | uint32_t hi_val;uint32_t pk_val[20];unsigned int pk_pos[20]={0};unsigned int a; //uint32_t pk=0; |
suhasini | 13:5d3b478ea9c7 | 113 | int hi_dif = 0;int j=0; // int count1 = N_ECG/fs, a_dif=0, fs1 = fs ,h=0; |
suhasini | 13:5d3b478ea9c7 | 114 | // ------------------------- Declaration for Heart Rate calculation -------------------------- |
suhasini | 13:5d3b478ea9c7 | 115 | int n=0; //int n=10; |
suhasini | 13:5d3b478ea9c7 | 116 | float pos_dif, HR[2], HR1,t_pos_dif;int t_sec = 60; float HR_sum = 0,HR_avg; |
nikitateggi | 22:ffa88619551d | 117 | */ //WHOLE SECTION COMMENTED NIDHIN 17/6/17 |
suhasini | 13:5d3b478ea9c7 | 118 | // ------------------------------------------------------------------------------------------- |
suhasini | 13:5d3b478ea9c7 | 119 | |
suhasini | 13:5d3b478ea9c7 | 120 | // unsigned char chk = 1; |
nikitateggi | 3:9a06c2bed650 | 121 | pc.baud(baud_rate); |
nikitateggi | 4:6bd81bb1790d | 122 | freqset(); // setting the frequency |
nikitateggi | 22:ffa88619551d | 123 | setupfunc(); |
nikitateggi | 22:ffa88619551d | 124 | //ecgtestsetupfunc(); // For test set up of 1Hz square wave signal |
nikitateggi | 22:ffa88619551d | 125 | lead_reg= ecgsetupfunc(); |
suhasini | 13:5d3b478ea9c7 | 126 | // chk = 1; |
nikitateggi | 22:ffa88619551d | 127 | |
nikitateggi | 22:ffa88619551d | 128 | |
nikitateggi | 22:ffa88619551d | 129 | //ORIGINAL sd_open_ECGfile(pid); // opening the ecg file COMMENTED Nidhin 1/6/2017 |
nikitateggi | 20:7c64e6ecad76 | 130 | if (lead_reg==0) // checking for proper lead contact// 14/06 |
nikitateggi | 22:ffa88619551d | 131 | { |
nidhinvarghese | 14:f5c62d30c6fc | 132 | sd_open_ECGfilee(pid); // REPLACED Nidhin 1/6/2017 Nidhin |
nidhinvarghese | 14:f5c62d30c6fc | 133 | |
suhasini | 13:5d3b478ea9c7 | 134 | pc.printf( "Raw data is = \n"); |
nikitateggi | 3:9a06c2bed650 | 135 | for(int i=0; i<N_ECG; i++) |
nikitateggi | 3:9a06c2bed650 | 136 | { |
nikitateggi | 3:9a06c2bed650 | 137 | concatenate_value2= readvalue(); |
nikitateggi | 22:ffa88619551d | 138 | pc.printf( "%d\n", concatenate_value2); //ADDED Nidhin 21/6/2017 |
nidhinvarghese | 14:f5c62d30c6fc | 139 | |
nidhinvarghese | 14:f5c62d30c6fc | 140 | //ORIGINAL sd_write(concatenate_value2); // writing into the sd card COMMENTED Nidhin 1/6/2017 |
nidhinvarghese | 14:f5c62d30c6fc | 141 | sd_ecgwrite(ecg_ptr); // REPLACED Nidhin 1/6/2017 |
nikitateggi | 22:ffa88619551d | 142 | //pc.printf( "%d\n", *ecg_ptr); |
nikitateggi | 22:ffa88619551d | 143 | //ecg_buf[i] = concatenate_value2; //COMMENTED Nidhin 10/6/2017 |
nikitateggi | 22:ffa88619551d | 144 | //pc.printf( "%d\n", concatenate_value2); //COMMENTED Nidhin 10/6/2017 |
nikitateggi | 3:9a06c2bed650 | 145 | } |
nidhinvarghese | 14:f5c62d30c6fc | 146 | |
nidhinvarghese | 14:f5c62d30c6fc | 147 | //sd_close(); // closing the file COMMENTED Nidhin 1/6/2017 |
nidhinvarghese | 14:f5c62d30c6fc | 148 | sd_close_ecg(); // closing the ECG file REPLACED Nidhin 1/6/2017 Nidhin |
nikitateggi | 22:ffa88619551d | 149 | |
nikitateggi | 22:ffa88619551d | 150 | |
suhasini | 13:5d3b478ea9c7 | 151 | /* |
suhasini | 13:5d3b478ea9c7 | 152 | // ---------- reading back SD data for processing -------------------- |
suhasini | 13:5d3b478ea9c7 | 153 | sd_read_file(15); |
suhasini | 13:5d3b478ea9c7 | 154 | printf("Reading back SD data\n"); |
suhasini | 13:5d3b478ea9c7 | 155 | for(int i=10;i<N_ECG;i++) |
suhasini | 13:5d3b478ea9c7 | 156 | { |
suhasini | 13:5d3b478ea9c7 | 157 | ecg_buf= sd_read(); |
suhasini | 13:5d3b478ea9c7 | 158 | //printf("%d\n",ecg_buf[i]); |
suhasini | 13:5d3b478ea9c7 | 159 | } |
suhasini | 13:5d3b478ea9c7 | 160 | |
suhasini | 13:5d3b478ea9c7 | 161 | sd_close(); */ |
suhasini | 13:5d3b478ea9c7 | 162 | |
suhasini | 13:5d3b478ea9c7 | 163 | //----------------------------- PEAK DETECTION AND HEART RATE CALCULATION --------------------------------------------------- |
suhasini | 13:5d3b478ea9c7 | 164 | // -------------------------------------- PEAK DETECTION ------------------------------------------------------------- |
suhasini | 13:5d3b478ea9c7 | 165 | |
suhasini | 13:5d3b478ea9c7 | 166 | // ------------------ Main loop --------------------------------- |
nikitateggi | 22:ffa88619551d | 167 | /* |
suhasini | 13:5d3b478ea9c7 | 168 | for(int i=0;i<N_ECG-10;i++){ |
suhasini | 13:5d3b478ea9c7 | 169 | if(ecg_buf[i]>ecg_buf[i+1]) |
suhasini | 13:5d3b478ea9c7 | 170 | { |
suhasini | 13:5d3b478ea9c7 | 171 | hi_val = ecg_buf[i]; //To find the high value |
suhasini | 13:5d3b478ea9c7 | 172 | //printf("high value= %d\n",hi_val); |
suhasini | 13:5d3b478ea9c7 | 173 | a = i; |
suhasini | 13:5d3b478ea9c7 | 174 | //printf("a= %d\n",a); |
suhasini | 13:5d3b478ea9c7 | 175 | hi_dif = hi_val-ecg_buf[a+10]; |
suhasini | 13:5d3b478ea9c7 | 176 | |
suhasini | 13:5d3b478ea9c7 | 177 | //a_dif = ecg_buf[a+2] - ecg_buf[a+1]; |
suhasini | 13:5d3b478ea9c7 | 178 | //printf("The difference between high and low value is = %d\n",hi_dif); |
suhasini | 13:5d3b478ea9c7 | 179 | |
suhasini | 13:5d3b478ea9c7 | 180 | // ---------------------------- If hi_val is greater than next ten input values, then compare the hi_val with the tenth input value. |
suhasini | 13:5d3b478ea9c7 | 181 | // If the diff is greater than 10000, then it is a valid peak (pls chk the below condition)-------------------------------------------------- |
suhasini | 13:5d3b478ea9c7 | 182 | // if((hi_dif > 10000) && ((a+10) < N_ECG)) |
suhasini | 13:5d3b478ea9c7 | 183 | if(hi_dif > 10000) |
suhasini | 13:5d3b478ea9c7 | 184 | { |
suhasini | 13:5d3b478ea9c7 | 185 | // if(a_dif <= 0) ------------------------ add this condition if needed ---------------------- |
suhasini | 13:5d3b478ea9c7 | 186 | // { |
suhasini | 13:5d3b478ea9c7 | 187 | pk_val[j] = hi_val; //if condition satisfied, put the "pk" value into "pk_val" buffer |
nikitateggi | 22:ffa88619551d | 188 | pc.printf("peak value= %d\n",pk_val[j]); |
suhasini | 13:5d3b478ea9c7 | 189 | pk_pos[j]=a; // also save the peak's position |
nikitateggi | 22:ffa88619551d | 190 | pc.printf("peak position is = %d\n",pk_pos[j]); |
suhasini | 13:5d3b478ea9c7 | 191 | i = a+120; // once confirmed that this is the necessary peak, skip the next 120 input values |
suhasini | 13:5d3b478ea9c7 | 192 | n = j; // where n is the number of peaks detected |
suhasini | 13:5d3b478ea9c7 | 193 | j = j+1; |
suhasini | 13:5d3b478ea9c7 | 194 | |
suhasini | 13:5d3b478ea9c7 | 195 | // printf("j after peak detection is= %d\n",j); |
suhasini | 13:5d3b478ea9c7 | 196 | // } |
suhasini | 13:5d3b478ea9c7 | 197 | } |
suhasini | 13:5d3b478ea9c7 | 198 | else |
suhasini | 13:5d3b478ea9c7 | 199 | { |
suhasini | 13:5d3b478ea9c7 | 200 | //h = a+1; |
suhasini | 13:5d3b478ea9c7 | 201 | i = a+1; |
suhasini | 13:5d3b478ea9c7 | 202 | // printf("i if peak not found is= %d\n",i); |
suhasini | 13:5d3b478ea9c7 | 203 | } |
suhasini | 13:5d3b478ea9c7 | 204 | // store the peak value position in "pk_pos" |
suhasini | 13:5d3b478ea9c7 | 205 | |
suhasini | 13:5d3b478ea9c7 | 206 | } |
suhasini | 13:5d3b478ea9c7 | 207 | } |
suhasini | 13:5d3b478ea9c7 | 208 | // ----------------- HEART RATE LOGIC --------------------------- |
nikitateggi | 3:9a06c2bed650 | 209 | |
suhasini | 13:5d3b478ea9c7 | 210 | for(int i = 0;i < n-1;i++) |
suhasini | 13:5d3b478ea9c7 | 211 | { |
suhasini | 13:5d3b478ea9c7 | 212 | pos_dif = pk_pos[i+1] - pk_pos[i]; // difference between two consequtive peaks |
suhasini | 13:5d3b478ea9c7 | 213 | pc.printf("peak position diff is = %f\n",pos_dif); |
suhasini | 13:5d3b478ea9c7 | 214 | //printf("peak position i value is = %d\n",i); |
suhasini | 13:5d3b478ea9c7 | 215 | t_pos_dif = pos_dif/fs; // sample difference between peak positions divided by sampling frequency gives the difference value in terms of actual time |
suhasini | 13:5d3b478ea9c7 | 216 | pc.printf("time in seconds is = %f\n",t_pos_dif); |
suhasini | 13:5d3b478ea9c7 | 217 | HR[i] = t_sec/t_pos_dif; //HR calculation |
suhasini | 13:5d3b478ea9c7 | 218 | pc.printf("Heart Rate is = %f\n",HR[i]); |
suhasini | 13:5d3b478ea9c7 | 219 | // n = i; |
suhasini | 13:5d3b478ea9c7 | 220 | HR1 = HR[0]; |
suhasini | 13:5d3b478ea9c7 | 221 | |
suhasini | 13:5d3b478ea9c7 | 222 | } |
suhasini | 13:5d3b478ea9c7 | 223 | // ---------------------- To average individual HRs for higher number of samples ----------------------- |
suhasini | 13:5d3b478ea9c7 | 224 | /* for(int i = 0;i < 5;i++) |
suhasini | 13:5d3b478ea9c7 | 225 | { |
suhasini | 13:5d3b478ea9c7 | 226 | HR_sum = HR[i]+HR_sum; |
suhasini | 13:5d3b478ea9c7 | 227 | } |
suhasini | 13:5d3b478ea9c7 | 228 | HR_avg = HR_sum/5; // To find average of all the individual HRs calculated |
suhasini | 13:5d3b478ea9c7 | 229 | printf("Heart Rate sum is = %f\n",HR_sum); |
suhasini | 13:5d3b478ea9c7 | 230 | printf("Denominator = %d\n",n); |
suhasini | 13:5d3b478ea9c7 | 231 | printf("Heart Rate = %f\n",HR_avg); |
suhasini | 13:5d3b478ea9c7 | 232 | */ |
nikitateggi | 22:ffa88619551d | 233 | //HR1 = 72; // Added Nidhin 10June17; |
nidhinvarghese | 14:f5c62d30c6fc | 234 | //ADDED Nidhin 1/6/2017 |
nidhinvarghese | 14:f5c62d30c6fc | 235 | |
nikitateggi | 22:ffa88619551d | 236 | uint16_t HR1; |
nidhinvarghese | 14:f5c62d30c6fc | 237 | |
nikitateggi | 22:ffa88619551d | 238 | //HR1 = 72; |
nikitateggi | 22:ffa88619551d | 239 | HR1 = heart_cal(pid); |
nikitateggi | 22:ffa88619551d | 240 | |
nikitateggi | 22:ffa88619551d | 241 | BLEMsg_info_ecg.cal_data.cal_sbp_dummy = 0; |
nikitateggi | 22:ffa88619551d | 242 | BLEMsg_info_ecg.cal_data.cal_dbp_OTtyp = HR1; //To be modified after HR code is added. |
nidhinvarghese | 14:f5c62d30c6fc | 243 | |
nikitateggi | 22:ffa88619551d | 244 | structure_file(ptr_BLEMsg_info_ecg, pid); //copy the ECG structure to Main file //COMMENTED Nidhin 10/6/2017 |
nikitateggi | 22:ffa88619551d | 245 | ecgfile_mainfile(pid); // copy raw data to the main file and ECG file is cleared. //COMMENTED Nidhin 10/6/2017 |
nikitateggi | 22:ffa88619551d | 246 | |
nikitateggi | 22:ffa88619551d | 247 | pc.printf("Closed the main file\n"); |
nidhinvarghese | 14:f5c62d30c6fc | 248 | |
nidhinvarghese | 14:f5c62d30c6fc | 249 | |
nidhinvarghese | 14:f5c62d30c6fc | 250 | |
suhasini | 13:5d3b478ea9c7 | 251 | return HR1; |
suhasini | 13:5d3b478ea9c7 | 252 | // return HR_avg; |
nikitateggi | 20:7c64e6ecad76 | 253 | |
nikitateggi | 22:ffa88619551d | 254 | } |
nikitateggi | 20:7c64e6ecad76 | 255 | else |
nikitateggi | 20:7c64e6ecad76 | 256 | { |
nikitateggi | 20:7c64e6ecad76 | 257 | pc.printf("no - leadoff"); |
nikitateggi | 20:7c64e6ecad76 | 258 | return 0; |
nikitateggi | 20:7c64e6ecad76 | 259 | } |
suhasini | 13:5d3b478ea9c7 | 260 | |
nikitateggi | 22:ffa88619551d | 261 | } // End of main function |