created separate function for hex to char
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of SS_SensePOC2P0_11Dec2017_USERPID by
bp.cpp@72:1f990fa8c516, 2017-12-06 (annotated)
- Committer:
- rashmivenkataramaiah
- Date:
- Wed Dec 06 12:47:30 2017 +0000
- Revision:
- 72:1f990fa8c516
- Parent:
- 69:128e3b467820
merged Sd card issue and eeprom issue
Who changed what in which revision?
User | Revision | Line number | New 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 | } |