Added 4 point or 8 point averaging function .

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of merged_code2_3rd_nov_2017 by nikita teggi

Revision:
8:adf2ba7e6412
Parent:
5:a3ea7c82b7e1
Child:
10:aeff3309002a
--- a/bp.cpp	Wed Apr 26 10:14:53 2017 +0000
+++ b/bp.cpp	Fri Apr 28 10:05:29 2017 +0000
@@ -1,3 +1,4 @@
+
 //BP Optimised Program for Averaging the received value from PPG and ECG & Check for SD card Storage//
 
 
@@ -5,7 +6,8 @@
 ADS1291 is a single channel ECG chip
 with a 24 bit Sigma-Delta ADC
  */
- 
+
+/* 
 #include "mbed.h"
 #include "MAX30102.h" // BP ADD
 #include <string.h>
@@ -177,7 +179,7 @@
 bc.printf( "DBP = %f\n", DBP);
 
 screen_bp1(SBP,DBP);
-
+*/
 
 //-----------------WRITE ECG &PPG
  /*  
@@ -202,4 +204,157 @@
    
 
         
- }    // End of main function
+ //}    // End of main function
+
+
+//-----------------------------------------------NEW BP code starts--------------------------------///
+
+#include "mbed.h"
+#include "MAX30102.h" // BP ADD
+#include <string.h>
+#include <stdio.h>
+//#include <iostream>
+#include "ds3231.h"
+#include "SDFileSystem.h"
+#include "rtc.h"
+#include "sdcard.h"
+#include "ec_bp.h"
+#include "bp.h"
+#include "display_modules.h"
+
+using namespace std;
+
+Serial bc(USBTX,USBRX);
+DigitalIn INTR(PTC7);
+
+Timer t; 
+
+//FILE *ecg;
+//FILE *ppg;
+    
+void bp(int pid) {
+    uint8_t uch_dummy;
+    uint32_t ppgdata; 
+
+    //int dummyconcat = 700000;
+    int concatenate_value2 = 0;
+    unsigned char chk = 1;
+
+    int drum11[64];
+    uint32_t drum21[64];
+
+    // Variables for file operations
+   // uint32_t amax=0;
+    //uint32_t bmax = 0;
+    //uint32_t a;
+    //uint32_t b;
+    
+   //int aloc = 0;
+   //int bloc = 0;
+   //int samples = 0;
+
+    bc.baud(baud_rate);
+
+    freqset();               // setting the frequency
+    setupfunc();              
+    ecgsetupfunc();
+        
+    maxim_max30102_reset();  // PPG reset
+    wait_ms(20);
+    maxim_max30102_init();
+        
+    chk = 1;
+        
+    wait(2);
+    //bc.printf("BP start\n");  
+
+    for(int i=0; i<500; i++)
+    {
+        
+        concatenate_value2= readvalue();
+        
+        maxim_max30102_read_reg(0,&uch_dummy);
+        while(INTR.read()==1); 
+        maxim_max30102_read_fifo(&ppgdata); 
+            
+    }   
+
+
+    sd_open_BP_ECGfile(pid) ; //   sd_open_BP_ECGfile(123) draft file for testing
+    sd_open_BP_PPGfile(pid) ; // sd_open_BP_PPGfile(123) draft file for testing
+
+    FILE *ecg = NULL;
+    FILE *ppg = NULL;
+    int *drum_ecg = NULL; // pointers to ecg buffer
+    uint32_t *drum_ppg = NULL; // pointer to ppg buffer
+    
+    drum_ecg = drum11;
+    drum_ppg = drum21;
+    
+    for(int j =0 ; j<16; j++) // changed to 16 from 8
+    {
+        for(int i=0; i<64; i++)
+        {
+            concatenate_value2 = readvalue();
+            drum11[i]=concatenate_value2;   //drum11[i]=concatenate_value2;      drum11[i]=dummyconcat;
+         
+            maxim_max30102_read_reg(0,&uch_dummy);
+            while(INTR.read()==1); 
+            maxim_max30102_read_fifo(&ppgdata); 
+            drum21[i]=ppgdata;    
+        }
+                           
+            ecg = sd_BP_ecgwrite(drum_ecg); //
+            ppg = sd_BP_ppgwrite(drum_ppg);
+        
+        
+    } 
+    
+    for(int j =0 ; j<10; j++) // changed to 16 from 8
+    {
+        for(int i=0; i<64; i++)
+        {
+            maxim_max30102_read_reg(0,&uch_dummy);
+            while(INTR.read()==1); 
+            maxim_max30102_read_fifo(&ppgdata); 
+            drum21[i]=ppgdata; 
+        }
+        
+         ppg = sd_BP_ppgwrite (drum_ppg);
+        
+     }  
+    fclose(ecg);
+    fclose(ppg);
+     
+    maxim_max30102_reset();
+    
+    //-----Reading from file starts //
+    
+    //std::ifstream ec1("/sd/123_BP_ECG.csv");
+    //std::ifstream pp1("/sd/123_BP_PPG.csv");
+    
+    int eloc = 0;
+    int ploc = 0;
+   
+   
+   eloc = sd_BP_ECGMAX(pid); // eloc = sd_BP_ECGMAX(123);
+   ploc = sd_BP_PPGMAX(pid); // ploc = sd_BP_PPGMAX(123);
+    
+   //bc.printf("The ECG max is at : %d", eloc);
+   //bc.printf("The PPG Max is at : %d", ploc);
+   
+   float PWV = 0;
+   int d = 210000;
+   int delta_t = 0;
+   float SBP = 0;
+   float DBP = 0;
+   
+   delta_t  = (2*(ploc - eloc));
+   PWV = d/delta_t;
+   
+    SBP = 0.0508955*PWV+62.559;
+    DBP = (0.0494*PWV + 17.480)+10;
+    
+    screen_bp1(SBP,DBP);
+ 
+ }
\ No newline at end of file