Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of merged_code2_3rd_nov_2017 by
Revision 57:a366af1ddd7b, committed 2017-12-15
- Comitter:
- SSR
- Date:
- Fri Dec 15 09:41:06 2017 +0000
- Parent:
- 56:89eb9a977641
- Commit message:
- added function for 4 point or 8 point averaging on raw data.
Changed in this revision
| bp.cpp | Show annotated file Show diff for this revision Revisions of this file |
| sdcard.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/bp.cpp Fri Nov 03 07:16:44 2017 +0000
+++ b/bp.cpp Fri Dec 15 09:41:06 2017 +0000
@@ -23,12 +23,18 @@
#define MIN_SBP_THRESHOLD 40
#define MIN_DBP_THRESHOLD 40
-
+#define AVG_TYPE 8
+#define SAMPLE_NO_ECG 1016
+#define SAMPLE_NO_PPG 1656
+
FILE *fpecg_bp; // file pointer in place of fpecg- Suhasini- 21/7/17
FILE *fpppg1;
#include "struct.h"
+void average_4_8(char file_name[],char file_name1[], uint32_t sampleno);
+
+
using namespace std;
Serial bpr(USBTX,USBRX);
@@ -49,6 +55,11 @@
uint8_t lead_reg=0;
uint32_t concatenate_value2 = 0; //int to uint32_t-Suhasini-21stJuly2017
uint8_t chk = 1; //unsigned char to uint8_t-Suhasini-21stJuly2017
+ char file_name[32]={0};
+ char file_name1[32]={0};
+ //uint8_t avg_type
+ // uint32_t sampleno;
+
//Declaration of Master structure
@@ -190,6 +201,23 @@
maxim_max30102_reset();
+///////////// Averaging on Raw Data ////////////////////////////
+
+ sprintf(file_name,"/sd/%d_BP_ECG.csv",pid);
+ sprintf(file_name1,"/sd/%d_BP_ECG_avg.csv",pid);
+
+ average_4_8(file_name,file_name1,1024);
+
+ // file_name[]={0};
+ // file_name[]=(0};
+
+ sprintf(file_name,"/sd/%d_BP_PPG.csv",pid);
+ sprintf(file_name1,"/sd/%d_BP_PPG_avg.csv",pid);
+
+ average_4_8(file_name,file_name1,1664);
+
+
+
uint16_t eloc = 0; //int to uint16_t-Suhasini-21stJuly2017
uint16_t ploc = 0; //int to uint16_t-Suhasini-21stJuly2017
@@ -245,6 +273,88 @@
screen_ecg_bp() ;
}
+////// AVERAGE FUNCTION///////////////////
+
+void average_4_8( char file_name[],char file_name1[], uint32_t sampleno)
+{
+
+uint32_t ecg_raw[4];
+uint32_t ecg_raw1[8];
+uint32_t average=0;
+
+uint16_t i;
+FILE *fpecg =NULL;
+FILE *fpecg_avg = NULL;
+
+
+//sprintf(file_name,"/sd/%d_BP_ECG.csv",pid);
+//sprintf(file_name1,"/sd/%d_BP_ECG_avg.csv",pid);
+
+ fpecg = fopen(file_name,"r");
+
+ if(fpecg == NULL)
+ {
+ printf("error in opening raw data file file");
+ exit(1);
+ }
+
+ fpecg_avg= fopen(file_name1,"w"); //a
+
+ if(fpecg_avg == NULL)
+ {
+ printf("error in opening average file");
+ exit(1);
+ }
+ bpr.printf("open_avg_file\n");
+ if ( AVG_TYPE == 4)
+ {
+ fread(ecg_raw,sizeof(uint32_t),3,fpecg);
+
+ bpr.printf("four point average data are\n");
+ for(i=0;i<(sampleno-4);i++)
+ {
+ fread(&ecg_raw[3], sizeof(uint32_t),1, fpecg);
+ average = (ecg_raw[0] + ecg_raw[1] + ecg_raw[2] + ecg_raw[3])/4;
+ fwrite(&average,sizeof(uint32_t),1,fpecg_avg);
+ bpr.printf("%d\n",average);
+
+ ecg_raw[0] = ecg_raw[1];
+ ecg_raw[1] = ecg_raw[2];
+ ecg_raw[2] = ecg_raw[3];
+ }
+ }
+
+ else
+ {
+ fread(ecg_raw1,sizeof(uint32_t),7,fpecg);
+ bpr.printf("eight point average data are\n");
+
+ for( i= 0 ;i<(sampleno-8);i++)
+ {
+ fread(&ecg_raw1[7], sizeof(uint32_t),1, fpecg);
+
+ average = ( ecg_raw1[0] + ecg_raw1[1] + ecg_raw1[2] + ecg_raw1[3] + ecg_raw1[4] + ecg_raw1[5] + ecg_raw1[6] + ecg_raw1[7])/8;
+
+ fwrite(&average,sizeof(uint32_t),1,fpecg_avg);
+ bpr.printf("%d\n",average);
+
+ ecg_raw1[0] = ecg_raw1[1];
+ ecg_raw1[1] = ecg_raw1[2];
+ ecg_raw1[2] = ecg_raw1[3];
+ ecg_raw1[3] = ecg_raw1[4];
+ ecg_raw1[4] = ecg_raw1[5];
+ ecg_raw1[5] = ecg_raw1[6];
+ ecg_raw1[6] = ecg_raw1[7];
+
+ }
+
+ }
+
+ fclose(fpecg);
+ fclose(fpecg_avg);
+ bpr.printf("close_avg_file\n");
+}
+
//------------------------------------------
//REOPEN FUNCTIONs for reading data Nidhin
@@ -256,7 +366,8 @@
uint16_t samplesecg =0; // changed from int to uint32_t - suhasini - 21/7/17
char buffer1[32];
- sprintf(buffer1,"/sd/%d_BP_ECG.csv",pid);
+ // sprintf(buffer1,"/sd/%d_BP_ECG.csv",pid);
+ sprintf(buffer1,"/sd/%d_BP_ECG_avg.csv",pid);
fpecg_bp = fopen(buffer1,"r");
if(fpecg_bp == NULL)
{
@@ -265,7 +376,7 @@
else
{
- for(ebp=0; ebp<1024; ebp++)
+ for(ebp=0; ebp<1016; ebp++)
{
@@ -292,7 +403,8 @@
uint16_t samplesppg = 0; //int to uint16_t-Suhasini-21stJuly2017
char buffer1[32];
- sprintf(buffer1,"/sd/%d_BP_PPG.csv",pid);
+ // sprintf(buffer1,"/sd/%d_BP_PPG.csv",pid);
+ sprintf(buffer1,"/sd/%d_BP_PPG_avg.csv",pid);
fpppg1 = fopen(buffer1,"r");
if(fpppg1 == NULL)
{
@@ -301,7 +413,7 @@
else
{
- for(pbp=0; pbp<1664; pbp++)
+ for(pbp=0; pbp<1656 ; pbp++)
{
fread(b, sizeof(uint32_t),1, fpppg1);
--- a/sdcard.cpp Fri Nov 03 07:16:44 2017 +0000
+++ b/sdcard.cpp Fri Dec 15 09:41:06 2017 +0000
@@ -335,6 +335,28 @@
snd.printf("\nPPG file delete : Successful"); // Checks for SUCCESS
else
snd.printf("\nPPG file delete : UnSuccessful");
+
+ //Added by rohit ////////////
+ status = 1 ;
+ sprintf(buffer3, "/sd/%d_BP_ECG_avg.csv",pid);
+ status = remove(buffer3); //Removes PPG file of BP and updates status with 0 if successful
+
+ if( status == 0 )
+ snd.printf("\nECG_AVG file delete : Successful"); // Checks for SUCCESS
+ else
+ snd.printf("\nECG_AVG file delete : UnSuccessful");
+
+
+ status = 1 ;
+ sprintf(buffer3, "/sd/%d_BP_PPG_avg.csv",pid);
+ status = remove(buffer3); //Removes PPG file of BP and updates status with 0 if successful
+
+ if( status == 0 )
+ snd.printf("\nPPG_AVG file delete : Successful"); // Checks for SUCCESS
+ else
+ snd.printf("\nPPG_AVG file delete : UnSuccessful");
+
+ ////////////////////////////////////////////////////////////////
}
@@ -472,15 +494,31 @@
void delete_subfiles(uint32_t pid)
{
char buffer3[32];
- int success1 , success2, success3;
+ int success1 , success2, success3,success4;
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");
+///////////////// Added by rohit /////////////////
+ success4 = 1;
+ sprintf(buffer3, "/sd/%d_BP_ECG_avg.csv", pid);
+ success4 = remove(buffer3);
+ if (success4 == 0)
+ snd.printf("\nBP_ECG_AVG file delete : Successful");
+ else
+ snd.printf("\nBP_ECG_AVG file delete : UnSuccessful");
+
+ success4 = 1;
+ sprintf(buffer3, "/sd/%d_BP_PPG_avg.csv", pid);
+ success4 = remove(buffer3);
+ if (success4 == 0)
+ snd.printf("\nBP_PPG_AVG file delete : Successful");
+ else
+ snd.printf("\nBP_PPG_AVG file delete : UnSuccessful");
+ /////////////////////////////
success2 = 1 ;
sprintf(buffer3, "/sd/%d_GLC.csv", pid);
@@ -650,7 +688,7 @@
for(uint16_t file_start=0;file_start<sample;file_start++) //reading the raw data
{
fread(buf,sizeof(uint32_t),1,fp_read_sdcard_file);
- snd.printf("%08x\n", buf[0]);
+ snd.printf("%d\n", buf[0]);
}
/* switch(sample)
{
