kasturi rangan raghavan / Mbed 2 deprecated QRS_cpp

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // Author: kasturir@ucla.edu (Kasturi Rangan Raghavan)
00002 // \file
00003 // QRSDet library ported to OOP
00004 // Allows easy adjustment of sampling rates
00005 
00006 #include <mbed.h>
00007 #include <scmRTOS.h>
00008 #include <qrsdet/qrsdet2-inl.h>
00009 
00010 AnalogIn ecg_in(p20);
00011 DigitalOut led1(LED1);
00012 DigitalOut led2(LED2);
00013 PwmOut led3(LED3);
00014 DigitalOut led4(LED4);
00015 
00016 
00017 typedef OS::process<OS::pr0, 200> TEcgSampler;
00018 
00019 TEcgSampler EcgSampler;
00020 
00021 OS::TEventFlag ecg_sampler_ef;
00022 
00023 int main() {
00024     OS::Run();
00025 }
00026 
00027 template<> OS_PROCESS void TEcgSampler::Exec() {
00028   float float_val;
00029   int int_val;
00030   qrsdet::QRSFilterParams qrs_filter_params(8.0);
00031   qrsdet::QRSDet2 *qrs_filter =
00032     new qrsdet::QRSDet2(qrs_filter_params);
00033   qrsdet::DelayFilter *delay_filter = new qrsdet::DelayFilter(45);
00034   for(;;) {
00035     ecg_sampler_ef.Wait();
00036     led2 = !led2;
00037     float_val = ecg_in.read();
00038     int_val = float_val * 128;
00039     int qrs_val = qrs_filter->Process(int_val);
00040     int delay_val = delay_filter->Process(int_val);
00041     led3 = delay_val/128.0;
00042     if (qrs_val > 0) led4 = !led4;
00043     
00044   }
00045 }
00046 
00047 void OS::SystemTimerUserHook() {
00048     static int cnt=0;
00049     if (++cnt == 8) {
00050         cnt = 0;
00051         led1 = !led1;
00052         ecg_sampler_ef.Signal();
00053     }
00054 }
00055 
00056 void OS::IdleProcessUserHook() {
00057     __WFI();
00058 }