7 #ifndef INCLUDE_LFAST_FIR_FILTER_LFAST_H_ 8 #define INCLUDE_LFAST_FIR_FILTER_LFAST_H_ 10 #include <gnuradio/gr_complex.h> 12 #include <boost/thread/thread.hpp> 13 #include <volk/volk.h> 21 template <
class io_type,
class tap_type>
class Filter {
30 Filter(
const std::vector<tap_type> &newTaps);
33 virtual void setTaps(
const std::vector<tap_type> &newTaps);
35 inline virtual void set_taps(
const std::vector<tap_type> &newTaps) {
38 virtual std::vector<tap_type> getTaps()
const;
39 inline virtual std::vector<tap_type>
taps()
const {
return getTaps(); };
40 inline virtual long ntaps() {
return numTaps; };
43 virtual long filter(io_type *outputBuffer,
const io_type *inputBuffer,
60 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
64 virtual long filterNdec(gr_complex *outputBuffer,
65 const gr_complex *inputBuffer,
long numSamples,
68 virtual gr_complex filter(
const gr_complex *inputBuffer);
72 virtual long filterCPU(gr_complex *outputBuffer,
73 const gr_complex *inputBuffer,
long numSamples);
87 virtual long filterN(
float *outputBuffer,
const float *inputBuffer,
91 virtual long filterNdec(
float *outputBuffer,
const float *inputBuffer,
92 long numSamples,
int decimation);
94 virtual gr_complex filter(
const float *inputBuffer);
98 virtual long filterCPU(
float *outputBuffer,
const float *inputBuffer,
113 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
117 virtual long filterNdec(gr_complex *outputBuffer,
118 const gr_complex *inputBuffer,
long numSamples,
121 virtual gr_complex filter(
const gr_complex *inputBuffer);
125 virtual long filterCPU(gr_complex *outputBuffer,
126 const gr_complex *inputBuffer,
long numSamples);
144 boost::thread *threads[16];
145 bool threadRunning[16];
157 decimation = newDecimation;
167 virtual long calcDecimationBlockSize(
long numSamples);
173 virtual long calcDecimationIndex(
long blockStartIndex);
177 virtual void setThreads(
int nthreads);
179 virtual bool anyThreadRunning();
187 virtual void runThread1(
long startIndex,
long numSamples);
188 virtual void runThread2(
long startIndex,
long numSamples);
189 virtual void runThread3(
long startIndex,
long numSamples);
190 virtual void runThread4(
long startIndex,
long numSamples);
191 virtual void runThread5(
long startIndex,
long numSamples);
192 virtual void runThread6(
long startIndex,
long numSamples);
193 virtual void runThread7(
long startIndex,
long numSamples);
194 virtual void runThread8(
long startIndex,
long numSamples);
195 virtual void runThread9(
long startIndex,
long numSamples);
196 virtual void runThread10(
long startIndex,
long numSamples);
197 virtual void runThread11(
long startIndex,
long numSamples);
198 virtual void runThread12(
long startIndex,
long numSamples);
199 virtual void runThread13(
long startIndex,
long numSamples);
200 virtual void runThread14(
long startIndex,
long numSamples);
201 virtual void runThread15(
long startIndex,
long numSamples);
202 virtual void runThread16(
long startIndex,
long numSamples);
211 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
215 virtual long filterNdec(gr_complex *outputBuffer,
216 const gr_complex *inputBuffer,
long numSamples,
225 virtual void runThread1(
long startIndex,
long numSamples);
226 virtual void runThread2(
long startIndex,
long numSamples);
227 virtual void runThread3(
long startIndex,
long numSamples);
228 virtual void runThread4(
long startIndex,
long numSamples);
229 virtual void runThread5(
long startIndex,
long numSamples);
230 virtual void runThread6(
long startIndex,
long numSamples);
231 virtual void runThread7(
long startIndex,
long numSamples);
232 virtual void runThread8(
long startIndex,
long numSamples);
233 virtual void runThread9(
long startIndex,
long numSamples);
234 virtual void runThread10(
long startIndex,
long numSamples);
235 virtual void runThread11(
long startIndex,
long numSamples);
236 virtual void runThread12(
long startIndex,
long numSamples);
237 virtual void runThread13(
long startIndex,
long numSamples);
238 virtual void runThread14(
long startIndex,
long numSamples);
239 virtual void runThread15(
long startIndex,
long numSamples);
240 virtual void runThread16(
long startIndex,
long numSamples);
249 virtual long filterN(
float *outputBuffer,
const float *inputBuffer,
253 virtual long filterNdec(
float *outputBuffer,
const float *inputBuffer,
254 long numSamples,
int decimation);
262 virtual void runThread1(
long startIndex,
long numSamples);
263 virtual void runThread2(
long startIndex,
long numSamples);
264 virtual void runThread3(
long startIndex,
long numSamples);
265 virtual void runThread4(
long startIndex,
long numSamples);
266 virtual void runThread5(
long startIndex,
long numSamples);
267 virtual void runThread6(
long startIndex,
long numSamples);
268 virtual void runThread7(
long startIndex,
long numSamples);
269 virtual void runThread8(
long startIndex,
long numSamples);
270 virtual void runThread9(
long startIndex,
long numSamples);
271 virtual void runThread10(
long startIndex,
long numSamples);
272 virtual void runThread11(
long startIndex,
long numSamples);
273 virtual void runThread12(
long startIndex,
long numSamples);
274 virtual void runThread13(
long startIndex,
long numSamples);
275 virtual void runThread14(
long startIndex,
long numSamples);
276 virtual void runThread15(
long startIndex,
long numSamples);
277 virtual void runThread16(
long startIndex,
long numSamples);
286 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
290 virtual long filterNdec(gr_complex *outputBuffer,
291 const gr_complex *inputBuffer,
long numSamples,
Definition: fir_filter_lfast.h:260
const io_type * pInputBuffer
Definition: fir_filter_lfast.h:140
int decimation
Definition: fir_filter_lfast.h:148
virtual long filter(io_type *outputBuffer, const io_type *inputBuffer, long numSamples)
Definition: fir_filter_lfast.h:43
int d_nthreads
Definition: fir_filter_lfast.h:147
Definition: fir_filter_lfast.h:21
int numThreads()
Definition: fir_filter_lfast.h:154
Definition: fir_filter_lfast.h:138
Definition: fir_filter_lfast.h:185
virtual long ntaps()
Definition: fir_filter_lfast.h:40
std::vector< tap_type > d_taps
Definition: fir_filter_lfast.h:25
Definition: AutoDopplerCorrect.h:27
Definition: fir_filter_lfast.h:79
bool threadReady
Definition: fir_filter_lfast.h:146
long numTaps
Definition: fir_filter_lfast.h:26
Definition: fir_filter_lfast.h:105
io_type * pOutputBuffer
Definition: fir_filter_lfast.h:141
virtual void setDecimation(int newDecimation)
Definition: fir_filter_lfast.h:156
Definition: fir_filter_lfast.h:52
io_type * singlePointBuffer
Definition: fir_filter_lfast.h:24
Definition: fir_filter_lfast.h:223
tap_type * alignedTaps
Definition: fir_filter_lfast.h:23
virtual std::vector< tap_type > taps() const
Definition: fir_filter_lfast.h:39
virtual void set_taps(const std::vector< tap_type > &newTaps)
Definition: fir_filter_lfast.h:35
virtual bool decimating()
Definition: fir_filter_lfast.h:160
virtual int getDecimation()
Definition: fir_filter_lfast.h:159