MNE-CPP  beta 1.0
ecgproducer.cpp
Go to the documentation of this file.
1 //=============================================================================================================
36 //*************************************************************************************************************
37 //=============================================================================================================
38 // INCLUDES
39 //=============================================================================================================
40 
41 #include "ecgproducer.h"
42 #include "ecgsimulator.h"
43 
44 #include <QDebug>
45 
46 
47 //*************************************************************************************************************
48 //=============================================================================================================
49 // USED NAMESPACES
50 //=============================================================================================================
51 
52 using namespace ECGSimulatorPlugin;
53 
54 
55 //*************************************************************************************************************
56 //=============================================================================================================
57 // DEFINE MEMBER METHODS
58 //=============================================================================================================
59 
60 ECGProducer::ECGProducer(ECGSimulator* simulator, dBuffer::SPtr& buffer_I, dBuffer::SPtr& buffer_II, dBuffer::SPtr& buffer_III)
61 : m_pECGSimulator(simulator)
62 , m_pdBuffer_I(buffer_I)
63 , m_pdBuffer_II(buffer_II)
64 , m_pdBuffer_III(buffer_III)
65 , m_bIsRunning(true)
66 
67 {
68 
69 }
70 
71 
72 //*************************************************************************************************************
73 
75 {
76 
77 }
78 
79 
80 //*************************************************************************************************************
81 
83 {
84  m_bIsRunning = false;
85  QThread::wait();
86 }
87 
88 
89 //*************************************************************************************************************
90 
92 {
93  unsigned int uiSamplePeriod = (unsigned int) (1000000.0/(m_pECGSimulator->m_fSamplingRate));
94  int uiCounter_I = 0;
95  int uiCounter_II = 0;
96  int uiCounter_III = 0;
97  m_bIsRunning = true;
98 
99  double value_I;
100  double value_II;
101  double value_III;
102 
103  while(m_bIsRunning)
104  {
105  usleep(uiSamplePeriod);
106 
107  //ECG I
108  if(m_pECGSimulator->m_pECGChannel_ECG_I->isEnabled())
109  {
110  if(uiCounter_I >= (m_pECGSimulator->m_pECGChannel_ECG_I->getSamples().size()-1))
111  uiCounter_I = 0;
112 
113  value_I = 0;
114 
115  for(unsigned char i = 0; i < m_pECGSimulator->m_iDownsamplingFactor; ++i)
116  {
117  value_I = value_I + m_pECGSimulator->m_pECGChannel_ECG_I->getSamples()[uiCounter_I];
118  }
119 
120  value_I = value_I / m_pECGSimulator->m_iDownsamplingFactor;
121  m_pdBuffer_I->push(value_I);
122 
123  uiCounter_I = uiCounter_I + m_pECGSimulator->m_iDownsamplingFactor;
124 
125  }
126  //ECG II
127  if(m_pECGSimulator->m_pECGChannel_ECG_II->isEnabled())
128  {
129  if(uiCounter_II >= (m_pECGSimulator->m_pECGChannel_ECG_II->getSamples().size()-1))
130  uiCounter_II = 0;
131 
132  value_II = 0;
133 
134  for(unsigned char i = 0; i < m_pECGSimulator->m_iDownsamplingFactor; ++i)
135  {
136  value_II = value_II + m_pECGSimulator->m_pECGChannel_ECG_II->getSamples()[uiCounter_II];
137  }
138 
139  value_II = value_II / m_pECGSimulator->m_iDownsamplingFactor;
140  m_pdBuffer_II->push(value_II);
141 
142  uiCounter_II = uiCounter_II + m_pECGSimulator->m_iDownsamplingFactor;
143  }
144 
145  //ECG III
146  if(m_pECGSimulator->m_pECGChannel_ECG_III->isEnabled())
147  {
148  if(uiCounter_III >= (m_pECGSimulator->m_pECGChannel_ECG_III->getSamples().size()-1))
149  uiCounter_III = 0;
150 
151  value_III = 0;
152 
153  for(unsigned char i = 0; i < m_pECGSimulator->m_iDownsamplingFactor; ++i)
154  {
155 
156  value_III = value_III + m_pECGSimulator->m_pECGChannel_ECG_III->getSamples()[uiCounter_III];
157  }
158 
159  value_III = value_III / m_pECGSimulator->m_iDownsamplingFactor;
160  m_pdBuffer_III->push(value_III);
161 
162  uiCounter_III = uiCounter_III + m_pECGSimulator->m_iDownsamplingFactor;
163  }
164 
165  }
166 }
Contains the declaration of the ECGProducer class.
The ECGSimulator class provides a ECG simulator.
Definition: ecgsimulator.h:97
Contains the declaration of the ECGSimulator class.
ECGProducer(ECGSimulator *simulator, dBuffer::SPtr &buffer_I, dBuffer::SPtr &buffer_II, dBuffer::SPtr &buffer_III)
Definition: ecgproducer.cpp:60