
Changes done in ECG and BT
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of merged_code2_20sept_2017_4th_oct_2017 by
sdcard.cpp
- Committer:
- avp2417
- Date:
- 2017-07-29
- Revision:
- 36:00d96aa14658
- Parent:
- 27:907f8ce0025e
- Child:
- 41:1141a75eacc4
File content as of revision 36:00d96aa14658:
// Exisiting code in Int_Demo_09May2017_suhasini/sdcard.cpp is deleted and replaced by new code //Nidhin 1/6/2017 #include "mbed.h" #include <stdio.h> #include "SDFileSystem.h" #include "sdcard.h" #include "rtc.h" #include "struct.h" Serial snd(USBTX,USBRX); SDFileSystem sd(PTE1, PTE3, PTE2, PTE4, "sd"); FILE *fpecg; // PPG and ECG File pointers for BP FILE *fpppg; //"" "" FILE *fpmain; // FILE pointer for main file FILE *fpbg; // FILE pointer to BG file FILE *fpeecg; // FILE pointer to ECG file FILE *fpbp; // FILE pointer to BP file FILE *fp; // FILE pointer for random use //Function Added on 16/5/2017 by Nidhin void sd_open_mainfile(int32_t pid) { char buffer1[32]; sprintf(buffer1,"/sd/%d.csv",pid); fp = fopen(buffer1,"a"); } //------------------------------------------ /*void sd_open_GLCfile(int pid) // opening the glc file { char buffer[32]; char buffer1[32]; time_t epoch_time1; epoch_time1=rtc_read(); // strftime(buffer, 32, "GLC_%s", pid); sprintf(buffer1,"/sd/%d_GLC.csv",pid); fp = fopen(buffer1,"a"); fprintf(fp,"%s\n",ctime(&epoch_time1) ); //writing the date, time into the file } */ void sd_open_GLCfilee(int32_t pid) // only opening the glc file after entering TEST screen { char buffer1[32]; sprintf(buffer1,"/sd/%d_GLC.csv",pid); fpbg = fopen(buffer1,"a"); fclose(fpbg); } /*void sd_open_ECGfile(int pid) { // char buffer[32]; char buffer1[32]; time_t epoch_time1; epoch_time1=rtc_read(); // strftime(buffer, 32, "ECG_%d", pid); sprintf(buffer1,"/sd/%d_ECG.csv",pid); fp = fopen(buffer1,"a"); fprintf(fp,"%s\n",ctime(&epoch_time1) ); } */ void sd_open_ECGfilee(int32_t pid) // only opening the ECG file after entering TEST screen { char buffer1[32]; sprintf(buffer1,"/sd/%d_ECG.csv",pid); fpeecg = fopen(buffer1,"a"); //fclose(fpeecg); } /*void sd_open_BPfile(int pid) { char buffer[32]; char buffer1[32]; time_t epoch_time1; epoch_time1=rtc_read(); // strftime(buffer, 32, "ECG_%d", pid); sprintf(buffer1,"/sd/%d_BP.csv",pid); fp = fopen(buffer1,"a"); fprintf(fp,"%s\n",ctime(&epoch_time1) ); } */ void sd_open_BPfilee(int32_t pid) // only opening the BP file after entering TEST screen { char buffer1[32]; sprintf(buffer1,"/sd/%d_BP.csv",pid); fpbp = fopen(buffer1,"a"); //fprintf(fp,"PATIENT ID %d\n",pid ); Not required in new code as writing in hex fclose(fpbp); } void sd_write (int value) // writing data into the file { fprintf(fp,"%d\n", value); } uint8_t sd_open_read(int32_t pid) // opening the file for read // CHNAGED to return value { char buffer1[32]; sprintf(buffer1,"/sd/%d.csv",pid); fp = fopen(buffer1,"r"); if (fp==NULL) { snd.printf("no"); return 0; } else { snd.printf("yes"); return 1; } } void sd_read(uint32_t *v1, int size) //reading the data from the openend file { fread(v1,sizeof(v1),size,fp); } void setpos() { //fseek ( fp , 1 , SEEK_SET ); rewind (fp); } void setpos1(uint32_t position) { fseek ( fp , position, SEEK_SET ); //rewind (fp); } int file_size() { int file_length; fseek (fp, 0, SEEK_END); file_length=ftell(fp); file_length=sizeof(char)*file_length; rewind(fp); return file_length; } int file_size1() { int file_length; // fseek (fp, 0, SEEK_END); file_length=ftell(fp); // file_length=sizeof(char)*file_length; // rewind(fp); return file_length; } void sd_read1(BLEMsg_info &f) { fread(&f,sizeof(BLEMsg_info),1,fp); //fscanf(fp,"%08x",&v1); } //------------------------------------------------------ //FILE *sd_BP_ecgwrite (int value) // writing data into the file NIDHIN FILE *sd_BP_ecgwrite (uint32_t *fpdrum11) // writing data into the file NIDHIN { fwrite(fpdrum11,sizeof(uint32_t),1, fpecg); //Change by Nidhin 30/5/2017 Direct writing to SD card. Org Val 64 return fpecg; } FILE* sd_BP_ppgwrite (uint32_t *fpdrum21) // //Change by Nidhin 30/5/2017 Direct writing to SD card. { fwrite(fpdrum21,sizeof(uint32_t),1, fpppg); //Change by Nidhin 30/5/2017 Direct writing to SD card. OR Val 64 return fpppg; } //-----------------------------------------------SD Read void sd_reopen_BPfilee(int32_t pid) // only opening the BP file after entering TEST screen { char buffer1[32]; sprintf(buffer1,"/sd/%d_BP.csv",pid); fp = fopen(buffer1,"r"); //fprintf(fp,"PATIENT ID %d\n",pid ); } //------------------------------------------------- //--------------------------------------- void sd_open_BP_ECGfile(int32_t pid) { //char buffer[32]; char buffer1[32]; //time_t epoch_time1; //epoch_time1=rtc_read(); // strftime(buffer, 32, "ECG_%d", pid); sprintf(buffer1,"/sd/%d_BP_ECG.csv",pid); fpecg = fopen(buffer1,"a"); if (fpecg == NULL) { exit(1); } //fprintf(fpecg,"%s\n",ctime(&epoch_time1) ); } void sd_open_BP_PPGfile(int32_t pid) { char buffer1[32]; //time_t epoch_time1; //epoch_time1=rtc_read(); // strftime(buffer, 32, "ECG_%d", pid); sprintf(buffer1,"/sd/%d_BP_PPG.csv",pid); fpppg = fopen(buffer1,"a"); if(fpppg == NULL) { exit(1); } //fprintf(fpppg,"%s\n",ctime(&epoch_time1) ); } //-------------------------------------------------- //FUNCTIONS TO CLOSE FILES //__________________________________________________ void sd_close() //close the file with fp { fclose(fp); } //______________________________________________________ void sd_close_ecg() // Closes ECG file pinted by fpeecg { fclose(fpeecg); } //______________________________________________________ void sd_close_glc() // Closes GLC file pinted by fpbg { fclose(fpbg); } //_____________________________________________________ //fread(buffer, 1, size, fp) //fwrite(&buffer, , //----------------------------------------------------28/4/2017--------------------------------- //---------------------------------------------------------------------------------------------- //------- FUNCTION TO CREATE SINGLE BP FILE --------2/5/2017 (NIDHIN)---------------// void create_single_BPfile(int32_t pid) { //int ecgbuf[64] = {0}; //uint32_t ppgbuf[64] = {0}; char buffer3[32]; sprintf(buffer3, "/sd/%d_BP.csv", pid); fpbp = fopen(buffer3, "a"); // Opens BP file with FILE pointer fpbp in APPEND mode //buffer1[32] = ""; sprintf(buffer3, "/sd/%d_BP_ECG.csv", pid); fpecg = fopen(buffer3, "r"); // Opens ECG file of BP with FILE pointer fpecg in READ mode //char buffer1[32] = ""; sprintf(buffer3, "/sd/%d_BP_PPG.csv", pid); fpppg = fopen(buffer3, "r"); // Opens PPG file of BP with FILE pointer fpppg in READ mode for(int i=0; i<16; i++) { int ecgbuf[64] = {0} ; fread(ecgbuf, sizeof(uint32_t), 64, fpecg); fwrite(ecgbuf, sizeof(uint32_t), 64, fpbp); // Copy ECG data of BP into BP file } for(int i=0; i<26; i++) { int ppgbuf[64] = {0} ; fread(ppgbuf, sizeof(uint32_t), 64, fpppg); fwrite(ppgbuf, sizeof(uint32_t), 64, fpbp); // Copy PPG data of BP into BP file } fclose(fpecg); // Closes the ECG file of BP fclose(fpppg); // Closes the PPG file of BP fclose(fpbp); // Closes the BP file //char buffer1[32] = ""; int status = 1 ; sprintf(buffer3, "/sd/%d_BP_ECG.csv", pid); status = remove(buffer3); //Removes ECG file of BP and updates status with 0 if successful if( status == 0 ) snd.printf("\nECG file delete : Successful"); // Checks for SUCCESS else snd.printf("\nECG file delete : UnSuccessful"); //char buffer1[32] = ""; status = 1 ; sprintf(buffer3, "/sd/%d_BP_PPG.csv", pid); status = remove(buffer3); //Removes PPG file of BP and updates status with 0 if successful if( status == 0 ) snd.printf("\nPPG file delete : Successful"); // Checks for SUCCESS else snd.printf("\nPPG file delete : UnSuccessful"); } //Creating strcuture file Common to All Functions void structure_file(BLEMsg_info *ptr, int32_t pid) { char buffer3[32]; sprintf(buffer3, "/sd/%d.csv", pid); //Printing file path to the buffer fpmain = fopen(buffer3, "a"); // open the file PID.csv with FILE pointer fpmain fwrite(ptr, sizeof(uint8_t),26, fpmain ); // writing the Structure into the file fclose(fpmain); // Close File } //Copy Data into file. void bpfile_mainfile(int32_t pid) //Copy data of bp file to main { char buffer3[32]; sprintf(buffer3, "/sd/%d.csv", pid); fpmain = fopen(buffer3, "a"); // Opens Main file with FILE pointer "fpmain" in APPEND mode sprintf(buffer3, "/sd/%d_BP.csv", pid); fpbp = fopen(buffer3, "r"); // Opens BP file with FILE pointer "fpbp" in READ mode for(int i=0; i<21; i++) { int bigbuf[128] = {0} ; fread(bigbuf, sizeof(uint32_t), 128, fpbp); fwrite(bigbuf, sizeof(uint32_t), 128, fpmain); // Copy BP raw data into main file } fclose(fpbp); // Close BP file fclose(fpmain); // Close Main File int success; sprintf(buffer3, "/sd/%d_BP.csv", pid); success = remove(buffer3); // Should return zero on success } //------------New function added to print ECG data to Sd card using fwrite void sd_ecgwrite(uint32_t *ecg_ptr) { fwrite(ecg_ptr, sizeof(int), 1, fpeecg); } //------------ Function to write ECG data to main file void ecgfile_mainfile(int32_t pid) { char buffer3[32]; sprintf(buffer3, "/sd/%d.csv", pid); fpmain = fopen(buffer3, "a"); // Main File is opened in Append mode snd.printf("opening main file\n"); sprintf(buffer3, "/sd/%d_ECG.csv", pid); // ECG file is opened in read mode fpeecg = fopen(buffer3, "r"); snd.printf("opening temp file\n"); for(int i=0; i<20; i++) //the loop runs as 20 times of 100 i.e., 2k { int bigbuf[100] = {0} ; fread(bigbuf, sizeof(int),100 , fpeecg); fwrite(bigbuf, sizeof(int), 100, fpmain); } snd.printf("to close temp file\n"); fclose(fpeecg); // Both files are Closed snd.printf("to come out of main file\n"); fclose(fpmain); snd.printf("COPY complete Files Closed\n"); sprintf(buffer3, "/sd/%d_ECG.csv", pid); // ECG file is opened in write mode to empty the file fpeecg = fopen(buffer3, "r"); fclose(fpeecg); // File is closed int success; sprintf(buffer3, "/sd/%d_ECG.csv", pid); success = remove(buffer3); snd.printf("DELETE STATUS = %d\n", success); } //---------------------- Function to write GLC data to GLC file void sd_glcwrite(uint32_t *glc_ptr, int32_t pid) { char buffer3[32]; sprintf(buffer3, "/sd/%d_GLC.csv", pid); fpbg = fopen(buffer3, "a"); fwrite(glc_ptr, sizeof(uint32_t), 2, fpbg); fclose(fpbg); } // --------------------------Fuinction to write GLC data to Main file void glcfile_mainfile(int32_t pid) { char buffer3[32]; sprintf(buffer3, "/sd/%d.csv", pid); fpmain = fopen(buffer3, "a"); // Main File is opened in Append mode sprintf(buffer3, "/sd/%d_GLC.csv", pid); // BG file is opened in read mode fpbg = fopen(buffer3, "r"); for(int i=0; i<1; i++) { int bigbuf[2] = {0} ; fread(bigbuf, sizeof(int),2 , fpbg); fwrite(bigbuf, sizeof(int), 2, fpmain); } fclose(fpbg); // Both files are Closed fclose(fpmain); int success; sprintf(buffer3, "/sd/%d_GLC.csv", pid); success = remove(buffer3); // GLC file is deleted } void delete_subfiles(int32_t pid) { char buffer3[32]; int success1 , success2, success3; success1 = 1 ; sprintf(buffer3, "/sd/%d_BP.csv", pid); success1 = remove(buffer3); //Removes PPG file of BP and updates status with 0 if successful if( success1 == 0 ) snd.printf("\nBP file delete : Successful"); // Checks for SUCCESS else snd.printf("\nBP file delete : UnSuccessful"); success2 = 1 ; sprintf(buffer3, "/sd/%d_GLC.csv", pid); success2 = remove(buffer3); //Removes GLC file and updates status with 0 if successful if( success2 == 0 ) snd.printf("\nGLC file delete : Successful"); // Checks for SUCCESS else snd.printf("\nGLC file delete : UnSuccessful"); success3 = 1 ; sprintf(buffer3, "/sd/%d_ECG.csv", pid); success3 = remove(buffer3); //Removes ECG file and updates status with 0 if successful if( success3 == 0 ) snd.printf("\nECG file delete : Successful"); // Checks for SUCCESS else snd.printf("\nECG file delete : UnSuccessful"); } void del_ppg_ecg_BPfile(int32_t pid) { int status = 1 ; char buffer3[32]; sprintf(buffer3, "/sd/%d_BP_ECG.csv", pid); status = remove(buffer3); //Removes ECG file of BP and updates status with 0 if successful if( status == 0 ) snd.printf("\n temp ECG file delete for error condition: Successful"); // Checks for SUCCESS else snd.printf("\n temp ECG file delete for error condition: UnSuccessful"); //char buffer1[32] = ""; status = 1 ; sprintf(buffer3, "/sd/%d_BP_PPG.csv", pid); status = remove(buffer3); //Removes PPG file of BP and updates status with 0 if successful if( status == 0 ) snd.printf("\n temp PPG file delete for error condition: Successful"); // Checks for SUCCESS else snd.printf("\n temp PPG file delete for error condition: UnSuccessful"); }