created separate function for hex to char

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of SS_SensePOC2P0_11Dec2017_USERPID by rashmi v

Committer:
rashmivenkataramaiah
Date:
Tue Dec 12 11:13:10 2017 +0000
Revision:
76:611154b3b597
Parent:
72:1f990fa8c516
made separate function for hex to char

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nidhinvarghese 14:f5c62d30c6fc 1 //-----------------------------------------------NEW BP code starts--------------------------------///
nikitateggi 3:9a06c2bed650 2
nikitateggi 3:9a06c2bed650 3
nidhinvarghese 8:adf2ba7e6412 4
nikitateggi 3:9a06c2bed650 5 #include "mbed.h"
nikitateggi 3:9a06c2bed650 6 #include "MAX30102.h" // BP ADD
nikitateggi 3:9a06c2bed650 7 #include <string.h>
nikitateggi 3:9a06c2bed650 8 #include <stdio.h>
nikitateggi 39:69b09bd87502 9 #include "eeprom_pgm.h"
nidhinvarghese 14:f5c62d30c6fc 10 #include <time.h>
nikitateggi 3:9a06c2bed650 11 #include "ds3231.h"
nikitateggi 3:9a06c2bed650 12 #include "SDFileSystem.h"
nikitateggi 3:9a06c2bed650 13 #include "rtc.h"
nikitateggi 3:9a06c2bed650 14 #include "sdcard.h"
nikitateggi 3:9a06c2bed650 15 #include "ec_bp.h"
nikitateggi 3:9a06c2bed650 16 #include "bp.h"
rashmivenkataramaiah 72:1f990fa8c516 17 //#include "display_modules.h"
rashmivenkataramaiah 43:85a7f399cb9d 18 #include "main.h"
nikitateggi 3:9a06c2bed650 19
rashmivenkataramaiah 41:1141a75eacc4 20
avp2417 40:f7f351699288 21 #define MAX_SBP_THRESHOLD 300
avp2417 40:f7f351699288 22 #define MAX_DBP_THRESHOLD 300
avp2417 40:f7f351699288 23 #define MIN_SBP_THRESHOLD 40
avp2417 40:f7f351699288 24 #define MIN_DBP_THRESHOLD 40
avp2417 40:f7f351699288 25
avp2417 40:f7f351699288 26
avp2417 36:00d96aa14658 27 FILE *fpecg_bp; // file pointer in place of fpecg- Suhasini- 21/7/17
avp2417 36:00d96aa14658 28 FILE *fpppg1;
nikitateggi 3:9a06c2bed650 29
nidhinvarghese 14:f5c62d30c6fc 30 #include "struct.h"
nidhinvarghese 8:adf2ba7e6412 31
nidhinvarghese 8:adf2ba7e6412 32 using namespace std;
nidhinvarghese 8:adf2ba7e6412 33
nidhinvarghese 14:f5c62d30c6fc 34 Serial bpr(USBTX,USBRX);
nidhinvarghese 8:adf2ba7e6412 35 DigitalIn INTR(PTC7);
nidhinvarghese 8:adf2ba7e6412 36
nidhinvarghese 8:adf2ba7e6412 37 Timer t;
nidhinvarghese 8:adf2ba7e6412 38
nidhinvarghese 14:f5c62d30c6fc 39
avp2417 36:00d96aa14658 40 uint16_t ecgloc = 0; // PPG and eCG maximum locations //int to uint16_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 41 uint16_t ppgloc = 0; //int to uint16_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 42 uint16_t ebp = 0; // variable for LOOP operation to read value from File i == ECG , j == PPG
avp2417 36:00d96aa14658 43 uint16_t pbp = 0; //int to uint16_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 44
rashmivenkataramaiah 43:85a7f399cb9d 45 void bp(uint32_t pid) {
nidhinvarghese 14:f5c62d30c6fc 46
nidhinvarghese 8:adf2ba7e6412 47 uint8_t uch_dummy;
nidhinvarghese 8:adf2ba7e6412 48 uint32_t ppgdata;
nikitateggi 20:7c64e6ecad76 49 uint8_t lead_reg=0;
avp2417 36:00d96aa14658 50 uint32_t concatenate_value2 = 0; //int to uint32_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 51 uint8_t chk = 1; //unsigned char to uint8_t-Suhasini-21stJuly2017
rashmivenkataramaiah 57:e82d4bd6b2c0 52 uint32_t bp_test_result = 0x00u;
rashmivenkataramaiah 57:e82d4bd6b2c0 53
nidhinvarghese 14:f5c62d30c6fc 54 //Declaration of Master structure
nidhinvarghese 14:f5c62d30c6fc 55
nidhinvarghese 14:f5c62d30c6fc 56 BLEMsg_info *ptr_BLEMsg_info_bp, BLEMsg_info_bp; // A copy of master strcuture [ "BLEMsg_info" ] by name "BLEMsg_info_bp" is created
nidhinvarghese 14:f5c62d30c6fc 57 ptr_BLEMsg_info_bp = &BLEMsg_info_bp; // *ptr_BLEMsg_info_bp is the pointer to local copy;
nidhinvarghese 14:f5c62d30c6fc 58
nidhinvarghese 14:f5c62d30c6fc 59 // Declaration of Date Structure
nidhinvarghese 14:f5c62d30c6fc 60 DateTime_info *ptr_DateTime_info_bp, DateTime_info_bp; // A copy of Master Structure "DateTime_info" created,
nidhinvarghese 14:f5c62d30c6fc 61 ptr_DateTime_info_bp = &DateTime_info_bp; // Structure pointer points to that copy.
nidhinvarghese 14:f5c62d30c6fc 62
nidhinvarghese 14:f5c62d30c6fc 63
nidhinvarghese 14:f5c62d30c6fc 64 // RTC operations
nidhinvarghese 14:f5c62d30c6fc 65 time_t epoch_time_bp; //A copy of time_t by name epoch_time_bp is created
nidhinvarghese 14:f5c62d30c6fc 66 epoch_time_bp = rtc_read(); // time is got from get epoch function.
nidhinvarghese 14:f5c62d30c6fc 67
nidhinvarghese 14:f5c62d30c6fc 68 struct tm * ptr_time_info_bp, time_info_bp; // Sturucture copy of tm is created
nidhinvarghese 14:f5c62d30c6fc 69 ptr_time_info_bp = localtime(&epoch_time_bp); // Structure accepts the time in local format from "time_t" type.
nidhinvarghese 14:f5c62d30c6fc 70
nidhinvarghese 14:f5c62d30c6fc 71 //BELOW LINE IS TO CHECK Date and TIME
nidhinvarghese 14:f5c62d30c6fc 72 bpr.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);
nidhinvarghese 14:f5c62d30c6fc 73 bpr.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 74
nidhinvarghese 14:f5c62d30c6fc 75 //Copying from one structure to the other using variables
nidhinvarghese 14:f5c62d30c6fc 76 DateTime_info_bp.hour = (uint8_t)(*ptr_time_info_bp).tm_hour;
nidhinvarghese 14:f5c62d30c6fc 77 DateTime_info_bp.mins = (uint8_t)(*ptr_time_info_bp).tm_min;
nidhinvarghese 14:f5c62d30c6fc 78 DateTime_info_bp.sec = (uint8_t)(*ptr_time_info_bp).tm_sec;
nidhinvarghese 14:f5c62d30c6fc 79
nidhinvarghese 14:f5c62d30c6fc 80 DateTime_info_bp.date = (uint8_t) (*ptr_time_info_bp).tm_mday;
nidhinvarghese 14:f5c62d30c6fc 81 DateTime_info_bp.month =(uint8_t)(*ptr_time_info_bp).tm_mon+1;
nidhinvarghese 14:f5c62d30c6fc 82 DateTime_info_bp.year = (uint8_t)(*ptr_time_info_bp).tm_year-100;
nidhinvarghese 14:f5c62d30c6fc 83
nidhinvarghese 14:f5c62d30c6fc 84 // Copying Time to Main structure
nidhinvarghese 14:f5c62d30c6fc 85 BLEMsg_info_bp.date_time.hour = DateTime_info_bp.hour;
nidhinvarghese 14:f5c62d30c6fc 86 BLEMsg_info_bp.date_time.mins = DateTime_info_bp.mins;
nidhinvarghese 14:f5c62d30c6fc 87 BLEMsg_info_bp.date_time.sec = DateTime_info_bp.sec;
nidhinvarghese 14:f5c62d30c6fc 88
nidhinvarghese 14:f5c62d30c6fc 89 BLEMsg_info_bp.date_time.date = DateTime_info_bp.date ;
nidhinvarghese 14:f5c62d30c6fc 90 BLEMsg_info_bp.date_time.month = DateTime_info_bp.month ;
nidhinvarghese 14:f5c62d30c6fc 91 BLEMsg_info_bp.date_time.year = DateTime_info_bp.year ;
nidhinvarghese 14:f5c62d30c6fc 92
nidhinvarghese 14:f5c62d30c6fc 93
nidhinvarghese 14:f5c62d30c6fc 94 //Checking if the structure has these values
nidhinvarghese 14:f5c62d30c6fc 95 bpr.printf("Time 2 is %d:%d:%d\n", DateTime_info_bp.hour, DateTime_info_bp.mins, DateTime_info_bp.sec);
nidhinvarghese 14:f5c62d30c6fc 96 bpr.printf("\t Date is %d:%d:%d\n",DateTime_info_bp.date, DateTime_info_bp.month, DateTime_info_bp.year);
nidhinvarghese 14:f5c62d30c6fc 97
nidhinvarghese 14:f5c62d30c6fc 98
nidhinvarghese 14:f5c62d30c6fc 99 //Loading values to of Test type
nidhinvarghese 14:f5c62d30c6fc 100 test_type_info test_type_info_bp; // copy of " test_type_info" created
nidhinvarghese 14:f5c62d30c6fc 101 test_type_info_bp = BP_Test; // Loaded value 00 to the test type
nidhinvarghese 14:f5c62d30c6fc 102
nidhinvarghese 14:f5c62d30c6fc 103 BLEMsg_info_bp.test_type = test_type_info_bp;
nidhinvarghese 14:f5c62d30c6fc 104 //Check if 00 is getting printed
nidhinvarghese 14:f5c62d30c6fc 105 bpr.printf("Test Type is : %d\n", test_type_info_bp);
nidhinvarghese 14:f5c62d30c6fc 106
nidhinvarghese 14:f5c62d30c6fc 107
nidhinvarghese 14:f5c62d30c6fc 108 // Loading values of Length , PID, DID, sampling frequency, number of samples, calculated data.
rashmivenkataramaiah 72:1f990fa8c516 109 BLEMsg_info_bp.device_id = get_did(); // Device ID fixed // changed on 11/8/17 nikita
rashmivenkataramaiah 68:41da0a3ba038 110 //BLEMsg_info_bp.patient_id = (uint32_t)pid; // Patient ID
rashmivenkataramaiah 69:128e3b467820 111
rashmivenkataramaiah 69:128e3b467820 112 memcpy(BLEMsg_info_bp.patient_id,get_userpid(),sizeof(BLEMsg_info_bp.patient_id));
rashmivenkataramaiah 72:1f990fa8c516 113
rashmivenkataramaiah 69:128e3b467820 114
rashmivenkataramaiah 69:128e3b467820 115 //ascii_to_hex((const char *)BLEMsg_info_bp.patient_id, strlen(BLEMsg_info_bp.patient_id));
rashmivenkataramaiah 69:128e3b467820 116 //bpr.printf("BP pid = %10x\n",BLEMsg_info_bp.patient_id);
rashmivenkataramaiah 68:41da0a3ba038 117
nidhinvarghese 14:f5c62d30c6fc 118 BLEMsg_info_bp.sampling_freq = 500; // sampling frrquency
nidhinvarghese 14:f5c62d30c6fc 119 BLEMsg_info_bp.length = 10774; //Total length of data in bytes 22 B+10752 B
nidhinvarghese 14:f5c62d30c6fc 120
nidhinvarghese 14:f5c62d30c6fc 121 BLEMsg_info_bp.num_samples.num_sample_ppg_dummy = 1664 ;// PPG number of samples copied to master struct
nidhinvarghese 14:f5c62d30c6fc 122 BLEMsg_info_bp.num_samples.num_sample_ecg_OTtyp = 1024 ; // ECG number of samples copied to master struct
nidhinvarghese 14:f5c62d30c6fc 123
nidhinvarghese 14:f5c62d30c6fc 124 bpr.baud(baud_rate);
nidhinvarghese 8:adf2ba7e6412 125
nidhinvarghese 8:adf2ba7e6412 126 freqset(); // setting the frequency
nidhinvarghese 8:adf2ba7e6412 127 setupfunc();
nikitateggi 20:7c64e6ecad76 128 lead_reg=ecgsetupfunc(); // lead contact // 14/06
nidhinvarghese 8:adf2ba7e6412 129
nidhinvarghese 8:adf2ba7e6412 130 maxim_max30102_reset(); // PPG reset
nidhinvarghese 8:adf2ba7e6412 131 wait_ms(20);
nidhinvarghese 8:adf2ba7e6412 132 maxim_max30102_init();
nidhinvarghese 8:adf2ba7e6412 133
nidhinvarghese 8:adf2ba7e6412 134 chk = 1;
nidhinvarghese 8:adf2ba7e6412 135 wait(2);
avp2417 36:00d96aa14658 136
avp2417 36:00d96aa14658 137 for(uint16_t i=0; i<500; i++)
nidhinvarghese 8:adf2ba7e6412 138 {
nidhinvarghese 8:adf2ba7e6412 139 concatenate_value2= readvalue();
nidhinvarghese 8:adf2ba7e6412 140
nidhinvarghese 8:adf2ba7e6412 141 maxim_max30102_read_reg(0,&uch_dummy);
nidhinvarghese 8:adf2ba7e6412 142 while(INTR.read()==1);
nidhinvarghese 8:adf2ba7e6412 143 maxim_max30102_read_fifo(&ppgdata);
nidhinvarghese 8:adf2ba7e6412 144
nidhinvarghese 8:adf2ba7e6412 145 }
nikitateggi 20:7c64e6ecad76 146 // BP Finger detect Function Added Nidhin 16/6/17
nikitateggi 20:7c64e6ecad76 147 // START
nikitateggi 20:7c64e6ecad76 148 uint32_t un_max, un_min; // Declare two VARIABLE FOR MAX AND MIN
nikitateggi 20:7c64e6ecad76 149 un_max = 0;
nikitateggi 20:7c64e6ecad76 150 un_min = 0x3FFF;
nikitateggi 20:7c64e6ecad76 151
avp2417 36:00d96aa14658 152 for(uint16_t i=0; i<500; i++) // READS 500 SAMPLES TO SEE MAX AND MIN VAL DIFFERENCE
nikitateggi 20:7c64e6ecad76 153 {
nikitateggi 20:7c64e6ecad76 154 maxim_max30102_read_reg(0,&uch_dummy);
nikitateggi 20:7c64e6ecad76 155 while(INTR.read()==1);
nikitateggi 20:7c64e6ecad76 156 maxim_max30102_read_fifo(&ppgdata);
nikitateggi 21:7ef1b0b40841 157 bpr.printf("%d\n",ppgdata);
nikitateggi 20:7c64e6ecad76 158 if(un_min>ppgdata)
nikitateggi 20:7c64e6ecad76 159 un_min=ppgdata; //update signal min
nikitateggi 20:7c64e6ecad76 160 if(un_max<ppgdata)
nikitateggi 20:7c64e6ecad76 161 un_max=ppgdata;
nikitateggi 20:7c64e6ecad76 162 }
nikitateggi 20:7c64e6ecad76 163
nikitateggi 21:7ef1b0b40841 164 bpr.printf("The max is %d\n", un_max); //
nikitateggi 21:7ef1b0b40841 165 bpr.printf("The min is %d\n", un_min);
nikitateggi 20:7c64e6ecad76 166 if (((un_max -un_min) > 300) && (lead_reg==0)) // Checking for threshold 300 Added Nidhin 16/6/17
nikitateggi 20:7c64e6ecad76 167
nikitateggi 20:7c64e6ecad76 168 { //Added Nidhin 16/6/17
nidhinvarghese 8:adf2ba7e6412 169
nidhinvarghese 14:f5c62d30c6fc 170 sd_open_BPfilee(pid);
nidhinvarghese 8:adf2ba7e6412 171 sd_open_BP_ECGfile(pid) ; // sd_open_BP_ECGfile(123) draft file for testing
nidhinvarghese 8:adf2ba7e6412 172 sd_open_BP_PPGfile(pid) ; // sd_open_BP_PPGfile(123) draft file for testing
nidhinvarghese 8:adf2ba7e6412 173
nidhinvarghese 8:adf2ba7e6412 174 FILE *ecg = NULL;
nidhinvarghese 8:adf2ba7e6412 175 FILE *ppg = NULL;
nidhinvarghese 8:adf2ba7e6412 176
avp2417 36:00d96aa14658 177 for(uint16_t i=0; i<1024; i++) //int to uint16_t-Suhasini-21stJuly2017
nidhinvarghese 8:adf2ba7e6412 178 {
nidhinvarghese 8:adf2ba7e6412 179 concatenate_value2 = readvalue();
nidhinvarghese 15:208b146151ba 180 ecg = sd_BP_ecgwrite(&concatenate_value2);
nidhinvarghese 14:f5c62d30c6fc 181
nidhinvarghese 8:adf2ba7e6412 182 maxim_max30102_read_reg(0,&uch_dummy);
nidhinvarghese 8:adf2ba7e6412 183 while(INTR.read()==1);
nidhinvarghese 8:adf2ba7e6412 184 maxim_max30102_read_fifo(&ppgdata);
nidhinvarghese 14:f5c62d30c6fc 185 ppg = sd_BP_ppgwrite(&ppgdata); //Change by Nidhin 30/5/2017 Direct writing to SD card.
avp2417 36:00d96aa14658 186 }
avp2417 36:00d96aa14658 187
avp2417 36:00d96aa14658 188 for(uint16_t i=0; i<640; i++) //int to uint16_t-Suhasini-21stJuly2017
nidhinvarghese 8:adf2ba7e6412 189 {
nidhinvarghese 8:adf2ba7e6412 190 maxim_max30102_read_reg(0,&uch_dummy);
nidhinvarghese 8:adf2ba7e6412 191 while(INTR.read()==1);
nidhinvarghese 8:adf2ba7e6412 192 maxim_max30102_read_fifo(&ppgdata);
nidhinvarghese 14:f5c62d30c6fc 193 ppg = sd_BP_ppgwrite (&ppgdata); //Change by Nidhin 30/5/2017 Direct writing to SD card.
nidhinvarghese 8:adf2ba7e6412 194 }
nidhinvarghese 8:adf2ba7e6412 195
nidhinvarghese 8:adf2ba7e6412 196 fclose(ecg);
nidhinvarghese 8:adf2ba7e6412 197 fclose(ppg);
nidhinvarghese 8:adf2ba7e6412 198
nidhinvarghese 8:adf2ba7e6412 199 maxim_max30102_reset();
nidhinvarghese 8:adf2ba7e6412 200
avp2417 36:00d96aa14658 201 uint16_t eloc = 0; //int to uint16_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 202 uint16_t ploc = 0; //int to uint16_t-Suhasini-21stJuly2017
nidhinvarghese 8:adf2ba7e6412 203
nidhinvarghese 8:adf2ba7e6412 204
nidhinvarghese 8:adf2ba7e6412 205 eloc = sd_BP_ECGMAX(pid); // eloc = sd_BP_ECGMAX(123);
nidhinvarghese 8:adf2ba7e6412 206 ploc = sd_BP_PPGMAX(pid); // ploc = sd_BP_PPGMAX(123);
avp2417 36:00d96aa14658 207 bpr.printf("eloc: %d ploc: %d\n",eloc,ploc);
nidhinvarghese 8:adf2ba7e6412 208
nidhinvarghese 8:adf2ba7e6412 209 float PWV = 0;
avp2417 36:00d96aa14658 210 uint32_t d = 210000; //int to uint32_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 211 uint16_t delta_t = 0; //int to uint16_t-Suhasini-21stJuly2017
nidhinvarghese 8:adf2ba7e6412 212 float SBP = 0;
nidhinvarghese 8:adf2ba7e6412 213 float DBP = 0;
nidhinvarghese 8:adf2ba7e6412 214
nidhinvarghese 8:adf2ba7e6412 215 delta_t = (2*(ploc - eloc));
nidhinvarghese 8:adf2ba7e6412 216 PWV = d/delta_t;
nidhinvarghese 8:adf2ba7e6412 217
nidhinvarghese 8:adf2ba7e6412 218 SBP = 0.0508955*PWV+62.559;
nidhinvarghese 8:adf2ba7e6412 219 DBP = (0.0494*PWV + 17.480)+10;
avp2417 36:00d96aa14658 220 bpr.printf("sbp: %.0f dbp: %.0f\n",SBP,DBP);
nidhinvarghese 14:f5c62d30c6fc 221
nidhinvarghese 14:f5c62d30c6fc 222 BLEMsg_info_bp.cal_data.cal_sbp_dummy = (uint16_t) SBP;
nidhinvarghese 14:f5c62d30c6fc 223 BLEMsg_info_bp.cal_data.cal_dbp_OTtyp = (uint16_t) DBP;
nidhinvarghese 14:f5c62d30c6fc 224
avp2417 40:f7f351699288 225 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
avp2417 36:00d96aa14658 226 {
rashmivenkataramaiah 57:e82d4bd6b2c0 227 // send BP result improper messages to mobile application
rashmivenkataramaiah 57:e82d4bd6b2c0 228 poc2p0_send_device_msg_res(BP_RESULT_IMPROPER_RES);
rashmivenkataramaiah 57:e82d4bd6b2c0 229
rashmivenkataramaiah 72:1f990fa8c516 230 //screen_bp_error(); // checking for error out of range- nikita 10-7-17
avp2417 36:00d96aa14658 231 del_ppg_ecg_BPfile(pid); // Copy ECG and PPG data to BP file
nikitateggi 39:69b09bd87502 232 delete_subfiles(pid); //added on 11/8/17 nikita
avp2417 36:00d96aa14658 233 }
nidhinvarghese 14:f5c62d30c6fc 234
nikitateggi 31:0f67acfc6236 235 else
nikitateggi 31:0f67acfc6236 236 {
nikitateggi 31:0f67acfc6236 237 create_single_BPfile(pid); // Copy ECG and PPG data to BP file
nikitateggi 31:0f67acfc6236 238 structure_file(ptr_BLEMsg_info_bp, pid); // Copy BP structure to main file
avp2417 36:00d96aa14658 239 bpfile_mainfile(pid);
rashmivenkataramaiah 57:e82d4bd6b2c0 240
rashmivenkataramaiah 57:e82d4bd6b2c0 241 bp_test_result = (uint16_t)(DBP);
rashmivenkataramaiah 57:e82d4bd6b2c0 242 bp_test_result = (bp_test_result << 16);
rashmivenkataramaiah 59:dadb88794375 243 bpr.printf("bp_test_result on 1st shift: %8x \n",bp_test_result);
rashmivenkataramaiah 61:ce5ad0838227 244 bp_test_result = (bp_test_result & 0xFFFF0000u)| ((uint16_t)SBP); //& 0xFF00u //when the value AND'ed the variable is getting cleared and holds only SBP
rashmivenkataramaiah 59:dadb88794375 245 bpr.printf("bp_test_result on 2nd shift: %8x \n",bp_test_result);
rashmivenkataramaiah 57:e82d4bd6b2c0 246
rashmivenkataramaiah 57:e82d4bd6b2c0 247 // send BP final result messages to mobile application
rashmivenkataramaiah 57:e82d4bd6b2c0 248 poc2p0_send_device_test_result_res (BP_TEST_SUCCSS_RES, bp_test_result);
rashmivenkataramaiah 57:e82d4bd6b2c0 249
rashmivenkataramaiah 72:1f990fa8c516 250 //screen_bp1((uint16_t)SBP,(uint16_t)DBP);
rashmivenkataramaiah 43:85a7f399cb9d 251 if(get_filecreated_status() == false) //if file is in write mode
rashmivenkataramaiah 43:85a7f399cb9d 252 {
rashmivenkataramaiah 43:85a7f399cb9d 253 set_filecreated_status();
rashmivenkataramaiah 43:85a7f399cb9d 254 increment_filepid ();
rashmivenkataramaiah 43:85a7f399cb9d 255 }
rashmivenkataramaiah 43:85a7f399cb9d 256 }
nikitateggi 20:7c64e6ecad76 257 } //Added Nidhin 16/6/17
nikitateggi 20:7c64e6ecad76 258
nikitateggi 20:7c64e6ecad76 259 else //Added Nidhin 16/6/17
nikitateggi 20:7c64e6ecad76 260 { //Added Nidhin 16/6/17
nikitateggi 20:7c64e6ecad76 261 // Add display sequence for Finger detect fail //Added Nidhin 16/6/17
nikitateggi 20:7c64e6ecad76 262 maxim_max30102_reset();
nikitateggi 20:7c64e6ecad76 263 bpr.printf("no finger detect\n");
rashmivenkataramaiah 57:e82d4bd6b2c0 264
rashmivenkataramaiah 57:e82d4bd6b2c0 265 // send BP lead off and finger improper messages to mobile application
rashmivenkataramaiah 57:e82d4bd6b2c0 266 poc2p0_send_device_msg_res(BP_LEADOFF_FINGER_IMPROPER_RES);
rashmivenkataramaiah 57:e82d4bd6b2c0 267
rashmivenkataramaiah 72:1f990fa8c516 268 //screen_ecg_lead_bp_fingerdetect();
nikitateggi 20:7c64e6ecad76 269 } //Added Nidhin 16/6/17
rashmivenkataramaiah 72:1f990fa8c516 270 //screen_ecg_bp() ;
avp2417 36:00d96aa14658 271 }
avp2417 36:00d96aa14658 272
avp2417 36:00d96aa14658 273
avp2417 36:00d96aa14658 274 //------------------------------------------
avp2417 36:00d96aa14658 275 //REOPEN FUNCTIONs for reading data Nidhin
avp2417 36:00d96aa14658 276
avp2417 36:00d96aa14658 277 uint16_t sd_BP_ECGMAX(int32_t pid)
avp2417 36:00d96aa14658 278 {
avp2417 36:00d96aa14658 279 uint32_t ecgmax = 0; // changed from int to uint32_t - suhasini - 21/7/17
avp2417 36:00d96aa14658 280 uint32_t a[1] = {0}; // changed from int to uint32_t - suhasini - 21/7/17
avp2417 36:00d96aa14658 281 uint16_t samplesecg =0; // changed from int to uint32_t - suhasini - 21/7/17
avp2417 36:00d96aa14658 282 char buffer1[32];
avp2417 36:00d96aa14658 283
avp2417 36:00d96aa14658 284 sprintf(buffer1,"/sd/%d_BP_ECG.csv",pid);
avp2417 36:00d96aa14658 285 fpecg_bp = fopen(buffer1,"r");
avp2417 36:00d96aa14658 286 if(fpecg_bp == NULL)
avp2417 36:00d96aa14658 287 {
avp2417 36:00d96aa14658 288 exit(1);
avp2417 36:00d96aa14658 289 }
avp2417 36:00d96aa14658 290
avp2417 36:00d96aa14658 291 else
avp2417 36:00d96aa14658 292 {
avp2417 36:00d96aa14658 293 for(ebp=0; ebp<1024; ebp++)
avp2417 36:00d96aa14658 294 {
avp2417 36:00d96aa14658 295
avp2417 36:00d96aa14658 296
avp2417 36:00d96aa14658 297 fread(a,sizeof(uint32_t), 1,fpecg_bp);
avp2417 36:00d96aa14658 298 if(a[0] > ecgmax)
avp2417 36:00d96aa14658 299 {
avp2417 36:00d96aa14658 300 ecgmax=a[0];
avp2417 36:00d96aa14658 301 ecgloc= ebp +1;
avp2417 36:00d96aa14658 302 }
avp2417 36:00d96aa14658 303 else
avp2417 36:00d96aa14658 304 samplesecg =ebp+1;
avp2417 36:00d96aa14658 305 }
avp2417 36:00d96aa14658 306 }
avp2417 36:00d96aa14658 307 fclose (fpecg_bp);
avp2417 36:00d96aa14658 308 return ecgloc;
avp2417 36:00d96aa14658 309 }
avp2417 36:00d96aa14658 310
avp2417 36:00d96aa14658 311 // Function to calculate PPG MAx and location
avp2417 36:00d96aa14658 312
avp2417 36:00d96aa14658 313 uint16_t sd_BP_PPGMAX(int32_t pid) //int to uint16_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 314 {
avp2417 36:00d96aa14658 315 uint32_t ppgmax = 0; //int to uint32_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 316 uint32_t b[1] ={0}; //int to uint32_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 317 uint16_t samplesppg = 0; //int to uint16_t-Suhasini-21stJuly2017
avp2417 36:00d96aa14658 318 char buffer1[32];
avp2417 36:00d96aa14658 319
avp2417 36:00d96aa14658 320 sprintf(buffer1,"/sd/%d_BP_PPG.csv",pid);
avp2417 36:00d96aa14658 321 fpppg1 = fopen(buffer1,"r");
avp2417 36:00d96aa14658 322 if(fpppg1 == NULL)
avp2417 36:00d96aa14658 323 {
avp2417 36:00d96aa14658 324 exit(1);
avp2417 36:00d96aa14658 325 }
avp2417 36:00d96aa14658 326
avp2417 36:00d96aa14658 327 else
avp2417 36:00d96aa14658 328 {
avp2417 36:00d96aa14658 329 for(pbp=0; pbp<1664; pbp++)
avp2417 36:00d96aa14658 330 {
avp2417 36:00d96aa14658 331 fread(b, sizeof(uint32_t),1, fpppg1);
avp2417 36:00d96aa14658 332
avp2417 36:00d96aa14658 333 if((pbp>ecgloc) && (pbp< (ecgloc+350)))
avp2417 36:00d96aa14658 334 {
avp2417 36:00d96aa14658 335 if(b[0] > ppgmax)
avp2417 36:00d96aa14658 336 {
avp2417 36:00d96aa14658 337 ppgmax=b[0];
avp2417 36:00d96aa14658 338 ppgloc= pbp+1;
avp2417 36:00d96aa14658 339 }
avp2417 36:00d96aa14658 340 else
avp2417 36:00d96aa14658 341 samplesppg =pbp+1;
avp2417 36:00d96aa14658 342 }
avp2417 36:00d96aa14658 343 else
avp2417 36:00d96aa14658 344 samplesppg = pbp+1;
avp2417 36:00d96aa14658 345 }
avp2417 36:00d96aa14658 346 }
avp2417 36:00d96aa14658 347 fclose (fpppg1);
avp2417 36:00d96aa14658 348 return ppgloc;
avp2417 36:00d96aa14658 349 }