MNE-CPP  beta 0.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
realtimemultisamplearray_new.cpp
Go to the documentation of this file.
1 //=============================================================================================================
36 //*************************************************************************************************************
37 //=============================================================================================================
38 // INCLUDES
39 //=============================================================================================================
40 
42 
43 
44 //*************************************************************************************************************
45 //=============================================================================================================
46 // QT INCLUDES
47 //=============================================================================================================
48 
49 #include <QDebug>
50 
51 
52 //*************************************************************************************************************
53 //=============================================================================================================
54 // USED NAMESPACES
55 //=============================================================================================================
56 
57 using namespace XMEASLIB;
58 //using namespace IOBuffer;
59 
60 
61 //*************************************************************************************************************
62 //=============================================================================================================
63 // DEFINE MEMBER METHODS
64 //=============================================================================================================
65 
68 , m_dSamplingRate(0)
69 , m_ucMultiArraySize(10)
70 {
71 
72 }
73 
74 
75 //*************************************************************************************************************
76 
78 {
79 
80 }
81 
82 
83 //*************************************************************************************************************
84 
85 void RealTimeMultiSampleArrayNew::init(unsigned int uiNumChannels)
86 {
87  m_qListChInfo.clear();
88 
89  for(quint32 i = 0; i < uiNumChannels; ++i)
90  {
91  RealTimeSampleArrayChInfo initChInfo;
92  m_qListChInfo.append(initChInfo);
93  }
94 }
95 
96 
97 //*************************************************************************************************************
98 
100 {
101  m_qListChInfo.clear();
102 
103  bool t_bIsBabyMEG = false;
104 
105  if(p_pFiffInfo->acq_pars == "BabyMEG")
106  t_bIsBabyMEG = true;
107 
108  for(qint32 i = 0; i < p_pFiffInfo->nchan; ++i)
109  {
110  RealTimeSampleArrayChInfo initChInfo;
111  initChInfo.setChannelName(p_pFiffInfo->chs[i].ch_name);
112 
113  initChInfo.setUnit(p_pFiffInfo->chs[i].unit);
114 
115  //Treat stimulus channels different
116  if(p_pFiffInfo->chs[i].kind == FIFFV_STIM_CH)
117  {
118  initChInfo.setMinValue(0);
119  initChInfo.setMaxValue(1.0e6);
120  }
121 // else
122 // {
124 
125 // //Unit
126 // switch(p_pFiffInfo->chs[i].unit)
127 // {
128 // case 101:
129 // initChInfo.setUnit("Hz");
130 // break;
131 // case 102:
132 // initChInfo.setUnit("N");
133 // break;
134 // case 103:
135 // initChInfo.setUnit("Pa");
136 // break;
137 // case 104:
138 // initChInfo.setUnit("J");
139 // break;
140 // case 105:
141 // initChInfo.setUnit("W");
142 // break;
143 // case 106:
144 // initChInfo.setUnit("C");
145 // break;
146 // case 107:
147 // initChInfo.setUnit("V");
148 // initChInfo.setMinValue(0);
149 // initChInfo.setMaxValue(1.0e-3);
150 // break;
151 // case 108:
152 // initChInfo.setUnit("F");
153 // break;
154 // case 109:
155 // initChInfo.setUnit("Ohm");
156 // break;
157 // case 110:
158 // initChInfo.setUnit("MHO");
159 // break;
160 // case 111:
161 // initChInfo.setUnit("Wb");
162 // break;
163 // case 112:
164 // initChInfo.setUnit("T");
165 // if(t_bIsBabyMEG)
166 // {
167 // initChInfo.setMinValue(-1.0e-4);
168 // initChInfo.setMaxValue(1.0e-4);
169 // }
170 // else
171 // {
172 // initChInfo.setMinValue(-1.0e-10);
173 // initChInfo.setMaxValue(1.0e-10);
174 // }
175 // break;
176 // case 113:
177 // initChInfo.setUnit("H");
178 // break;
179 // case 114:
180 // initChInfo.setUnit("Cel");
181 // break;
182 // case 115:
183 // initChInfo.setUnit("Lm");
184 // break;
185 // case 116:
186 // initChInfo.setUnit("Lx");
187 // break;
188 // case 201:
189 // initChInfo.setUnit("T/m");
190 // if(t_bIsBabyMEG)
191 // {
192 // initChInfo.setMinValue(-1.0e-4);
193 // initChInfo.setMaxValue(1.0e-4);
194 // }
195 // else
196 // {
197 // initChInfo.setMinValue(-1.0e-10);
198 // initChInfo.setMaxValue(1.0e-10);
199 // }
200 // break;
201 // case 202:
202 // initChInfo.setUnit("Am");
203 // break;
204 // default:
205 // initChInfo.setUnit("");
206 // }
207 // }
208 
209  // set channel Kind
210  initChInfo.setKind(p_pFiffInfo->chs[i].kind);
211 
212  m_qListChInfo.append(initChInfo);
213  }
214 
215  //Sampling rate
216  m_dSamplingRate = p_pFiffInfo->sfreq;
217 
218 
219  m_pFiffInfo_orig = p_pFiffInfo;
220 }
221 
222 
223 //*************************************************************************************************************
224 
226 {
227  return m_vecValue;
228 }
229 
230 
231 //*************************************************************************************************************
232 
234 {
235  //check vector size
236  if(v.size() != m_qListChInfo.size())
237  qCritical() << "Error Occured in RealTimeMultiSampleArrayNew::setVector: Vector size does not matche the number of channels! ";
238 
239  //Check if maximum exceeded //ToDo speed this up
240  for(qint32 i = 0; i < v.size(); ++i)
241  {
242  if(v[i] < m_qListChInfo[i].getMinValue()) v[i] = m_qListChInfo[i].getMinValue();
243  else if(v[i] > m_qListChInfo[i].getMaxValue()) v[i] = m_qListChInfo[i].getMaxValue();
244  }
245 
246  //Store
247  m_vecValue = v;
248  m_matSamples.push_back(m_vecValue);
249  if(m_matSamples.size() >= m_ucMultiArraySize && notifyEnabled)
250  {
251  notify();
252  m_matSamples.clear();
253  }
254 }
static bool notifyEnabled
Channel Info for RealTimeSampleArray.
Contains the declaration of the RealTimeMultiSampleArrayNew class.
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
The MltChnMeasurement class is the base class of every MltChnMeasurement.
void setChannelName(QString p_qStringChName)
void initFromFiffInfo(FiffInfo::SPtr &p_pFiffInfo)
void notify()