20 #ifndef INCLUDE_LFAST_FIR_FILTER_LFAST_H_
21 #define INCLUDE_LFAST_FIR_FILTER_LFAST_H_
23 #include <gnuradio/gr_complex.h>
25 #include <boost/thread/thread.hpp>
26 #include <volk/volk.h>
34 template<
class io_type,
class tap_type>
44 Filter(
const std::vector<tap_type>& newTaps);
47 virtual void setTaps(
const std::vector<tap_type>& newTaps);
49 inline virtual void set_taps(
const std::vector<tap_type>& newTaps) { setTaps(newTaps); };
50 virtual std::vector<tap_type> getTaps()
const;
51 inline virtual std::vector<tap_type>
taps()
const {
return getTaps();};
52 inline virtual long ntaps() {
return numTaps;};
55 virtual long filter(io_type *outputBuffer,
const io_type *inputBuffer,
long numSamples) {
return 0;};
68 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
71 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
73 virtual gr_complex filter(
const gr_complex *inputBuffer);
76 virtual long filterCPU(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
89 virtual long filterN(
float *outputBuffer,
const float *inputBuffer,
long numSamples);
92 virtual long filterNdec(
float *outputBuffer,
const float *inputBuffer,
long numSamples,
int decimation);
94 virtual gr_complex filter(
const float *inputBuffer);
97 virtual long filterCPU(
float *outputBuffer,
const float *inputBuffer,
long numSamples);
110 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
113 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
115 virtual gr_complex filter(
const gr_complex *inputBuffer);
118 virtual long filterCPU(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
131 template<
class io_type>
138 boost::thread *threads[16];
139 bool threadRunning[16];
151 inline virtual void setDecimation(
int newDecimation) { decimation = newDecimation; };
153 inline virtual bool decimating() {
if (decimation > 1)
return true;
else return false; };
155 virtual long calcDecimationBlockSize(
long numSamples);
160 virtual long calcDecimationIndex(
long blockStartIndex);
164 virtual void setThreads(
int nthreads);
166 virtual bool anyThreadRunning();
174 virtual void runThread1(
long startIndex,
long numSamples);
175 virtual void runThread2(
long startIndex,
long numSamples);
176 virtual void runThread3(
long startIndex,
long numSamples);
177 virtual void runThread4(
long startIndex,
long numSamples);
178 virtual void runThread5(
long startIndex,
long numSamples);
179 virtual void runThread6(
long startIndex,
long numSamples);
180 virtual void runThread7(
long startIndex,
long numSamples);
181 virtual void runThread8(
long startIndex,
long numSamples);
182 virtual void runThread9(
long startIndex,
long numSamples);
183 virtual void runThread10(
long startIndex,
long numSamples);
184 virtual void runThread11(
long startIndex,
long numSamples);
185 virtual void runThread12(
long startIndex,
long numSamples);
186 virtual void runThread13(
long startIndex,
long numSamples);
187 virtual void runThread14(
long startIndex,
long numSamples);
188 virtual void runThread15(
long startIndex,
long numSamples);
189 virtual void runThread16(
long startIndex,
long numSamples);
197 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
200 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
209 virtual void runThread1(
long startIndex,
long numSamples);
210 virtual void runThread2(
long startIndex,
long numSamples);
211 virtual void runThread3(
long startIndex,
long numSamples);
212 virtual void runThread4(
long startIndex,
long numSamples);
213 virtual void runThread5(
long startIndex,
long numSamples);
214 virtual void runThread6(
long startIndex,
long numSamples);
215 virtual void runThread7(
long startIndex,
long numSamples);
216 virtual void runThread8(
long startIndex,
long numSamples);
217 virtual void runThread9(
long startIndex,
long numSamples);
218 virtual void runThread10(
long startIndex,
long numSamples);
219 virtual void runThread11(
long startIndex,
long numSamples);
220 virtual void runThread12(
long startIndex,
long numSamples);
221 virtual void runThread13(
long startIndex,
long numSamples);
222 virtual void runThread14(
long startIndex,
long numSamples);
223 virtual void runThread15(
long startIndex,
long numSamples);
224 virtual void runThread16(
long startIndex,
long numSamples);
232 virtual long filterN(
float *outputBuffer,
const float *inputBuffer,
long numSamples);
235 virtual long filterNdec(
float *outputBuffer,
const float *inputBuffer,
long numSamples,
int decimation);
243 virtual void runThread1(
long startIndex,
long numSamples);
244 virtual void runThread2(
long startIndex,
long numSamples);
245 virtual void runThread3(
long startIndex,
long numSamples);
246 virtual void runThread4(
long startIndex,
long numSamples);
247 virtual void runThread5(
long startIndex,
long numSamples);
248 virtual void runThread6(
long startIndex,
long numSamples);
249 virtual void runThread7(
long startIndex,
long numSamples);
250 virtual void runThread8(
long startIndex,
long numSamples);
251 virtual void runThread9(
long startIndex,
long numSamples);
252 virtual void runThread10(
long startIndex,
long numSamples);
253 virtual void runThread11(
long startIndex,
long numSamples);
254 virtual void runThread12(
long startIndex,
long numSamples);
255 virtual void runThread13(
long startIndex,
long numSamples);
256 virtual void runThread14(
long startIndex,
long numSamples);
257 virtual void runThread15(
long startIndex,
long numSamples);
258 virtual void runThread16(
long startIndex,
long numSamples);
266 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
269 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
Definition: fir_filter_lfast.h:241
const io_type * pInputBuffer
Definition: fir_filter_lfast.h:134
int decimation
Definition: fir_filter_lfast.h:142
virtual long filter(io_type *outputBuffer, const io_type *inputBuffer, long numSamples)
Definition: fir_filter_lfast.h:55
int d_nthreads
Definition: fir_filter_lfast.h:141
Definition: fir_filter_lfast.h:35
int numThreads()
Definition: fir_filter_lfast.h:149
Definition: fir_filter_lfast.h:132
Definition: fir_filter_lfast.h:172
virtual long ntaps()
Definition: fir_filter_lfast.h:52
std::vector< tap_type > d_taps
Definition: fir_filter_lfast.h:39
Definition: fir_filter_lfast.h:82
bool threadReady
Definition: fir_filter_lfast.h:140
long numTaps
Definition: fir_filter_lfast.h:40
Definition: fir_filter_lfast.h:103
io_type * pOutputBuffer
Definition: fir_filter_lfast.h:135
virtual void setDecimation(int newDecimation)
Definition: fir_filter_lfast.h:151
Definition: fir_filter_lfast.h:61
io_type * singlePointBuffer
Definition: fir_filter_lfast.h:38
Definition: fir_filter_lfast.h:207
virtual std::vector< tap_type > taps() const
Definition: fir_filter_lfast.h:51
tap_type * alignedTaps
Definition: fir_filter_lfast.h:37
virtual void set_taps(const std::vector< tap_type > &newTaps)
Definition: fir_filter_lfast.h:49
virtual bool decimating()
Definition: fir_filter_lfast.h:153
virtual int getDecimation()
Definition: fir_filter_lfast.h:152