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>
31 Filter(
const std::vector<tap_type>& newTaps);
34 virtual void setTaps(
const std::vector<tap_type>& newTaps);
36 inline virtual void set_taps(
const std::vector<tap_type>& newTaps) { setTaps(newTaps); };
37 virtual std::vector<tap_type> getTaps()
const;
38 inline virtual std::vector<tap_type>
taps()
const {
return getTaps();};
39 inline virtual long ntaps() {
return numTaps;};
42 virtual long filter(io_type *outputBuffer,
const io_type *inputBuffer,
long numSamples) {
return 0;};
55 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
58 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
60 virtual gr_complex filter(
const gr_complex *inputBuffer);
63 virtual long filterCPU(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
76 virtual long filterN(
float *outputBuffer,
const float *inputBuffer,
long numSamples);
79 virtual long filterNdec(
float *outputBuffer,
const float *inputBuffer,
long numSamples,
int decimation);
81 virtual gr_complex filter(
const float *inputBuffer);
84 virtual long filterCPU(
float *outputBuffer,
const float *inputBuffer,
long numSamples);
97 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
100 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
102 virtual gr_complex filter(
const gr_complex *inputBuffer);
105 virtual long filterCPU(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
118 template<
class io_type>
125 boost::thread *threads[16];
126 bool threadRunning[16];
138 inline virtual void setDecimation(
int newDecimation) { decimation = newDecimation; };
140 inline virtual bool decimating() {
if (decimation > 1)
return true;
else return false; };
142 virtual long calcDecimationBlockSize(
long numSamples);
147 virtual long calcDecimationIndex(
long blockStartIndex);
151 virtual void setThreads(
int nthreads);
153 virtual bool anyThreadRunning();
161 virtual void runThread1(
long startIndex,
long numSamples);
162 virtual void runThread2(
long startIndex,
long numSamples);
163 virtual void runThread3(
long startIndex,
long numSamples);
164 virtual void runThread4(
long startIndex,
long numSamples);
165 virtual void runThread5(
long startIndex,
long numSamples);
166 virtual void runThread6(
long startIndex,
long numSamples);
167 virtual void runThread7(
long startIndex,
long numSamples);
168 virtual void runThread8(
long startIndex,
long numSamples);
169 virtual void runThread9(
long startIndex,
long numSamples);
170 virtual void runThread10(
long startIndex,
long numSamples);
171 virtual void runThread11(
long startIndex,
long numSamples);
172 virtual void runThread12(
long startIndex,
long numSamples);
173 virtual void runThread13(
long startIndex,
long numSamples);
174 virtual void runThread14(
long startIndex,
long numSamples);
175 virtual void runThread15(
long startIndex,
long numSamples);
176 virtual void runThread16(
long startIndex,
long numSamples);
184 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
187 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
196 virtual void runThread1(
long startIndex,
long numSamples);
197 virtual void runThread2(
long startIndex,
long numSamples);
198 virtual void runThread3(
long startIndex,
long numSamples);
199 virtual void runThread4(
long startIndex,
long numSamples);
200 virtual void runThread5(
long startIndex,
long numSamples);
201 virtual void runThread6(
long startIndex,
long numSamples);
202 virtual void runThread7(
long startIndex,
long numSamples);
203 virtual void runThread8(
long startIndex,
long numSamples);
204 virtual void runThread9(
long startIndex,
long numSamples);
205 virtual void runThread10(
long startIndex,
long numSamples);
206 virtual void runThread11(
long startIndex,
long numSamples);
207 virtual void runThread12(
long startIndex,
long numSamples);
208 virtual void runThread13(
long startIndex,
long numSamples);
209 virtual void runThread14(
long startIndex,
long numSamples);
210 virtual void runThread15(
long startIndex,
long numSamples);
211 virtual void runThread16(
long startIndex,
long numSamples);
219 virtual long filterN(
float *outputBuffer,
const float *inputBuffer,
long numSamples);
222 virtual long filterNdec(
float *outputBuffer,
const float *inputBuffer,
long numSamples,
int decimation);
230 virtual void runThread1(
long startIndex,
long numSamples);
231 virtual void runThread2(
long startIndex,
long numSamples);
232 virtual void runThread3(
long startIndex,
long numSamples);
233 virtual void runThread4(
long startIndex,
long numSamples);
234 virtual void runThread5(
long startIndex,
long numSamples);
235 virtual void runThread6(
long startIndex,
long numSamples);
236 virtual void runThread7(
long startIndex,
long numSamples);
237 virtual void runThread8(
long startIndex,
long numSamples);
238 virtual void runThread9(
long startIndex,
long numSamples);
239 virtual void runThread10(
long startIndex,
long numSamples);
240 virtual void runThread11(
long startIndex,
long numSamples);
241 virtual void runThread12(
long startIndex,
long numSamples);
242 virtual void runThread13(
long startIndex,
long numSamples);
243 virtual void runThread14(
long startIndex,
long numSamples);
244 virtual void runThread15(
long startIndex,
long numSamples);
245 virtual void runThread16(
long startIndex,
long numSamples);
253 virtual long filterN(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples);
256 virtual long filterNdec(gr_complex *outputBuffer,
const gr_complex *inputBuffer,
long numSamples,
int decimation);
Definition: fir_filter_lfast.h:228
const io_type * pInputBuffer
Definition: fir_filter_lfast.h:121
int decimation
Definition: fir_filter_lfast.h:129
virtual long filter(io_type *outputBuffer, const io_type *inputBuffer, long numSamples)
Definition: fir_filter_lfast.h:42
int d_nthreads
Definition: fir_filter_lfast.h:128
Definition: fir_filter_lfast.h:22
int numThreads()
Definition: fir_filter_lfast.h:136
Definition: fir_filter_lfast.h:119
Definition: fir_filter_lfast.h:159
virtual long ntaps()
Definition: fir_filter_lfast.h:39
std::vector< tap_type > d_taps
Definition: fir_filter_lfast.h:26
Definition: AutoDopplerCorrect.h:28
Definition: fir_filter_lfast.h:69
bool threadReady
Definition: fir_filter_lfast.h:127
long numTaps
Definition: fir_filter_lfast.h:27
Definition: fir_filter_lfast.h:90
io_type * pOutputBuffer
Definition: fir_filter_lfast.h:122
virtual void setDecimation(int newDecimation)
Definition: fir_filter_lfast.h:138
Definition: fir_filter_lfast.h:48
io_type * singlePointBuffer
Definition: fir_filter_lfast.h:25
Definition: fir_filter_lfast.h:194
tap_type * alignedTaps
Definition: fir_filter_lfast.h:24
virtual std::vector< tap_type > taps() const
Definition: fir_filter_lfast.h:38
virtual void set_taps(const std::vector< tap_type > &newTaps)
Definition: fir_filter_lfast.h:36
virtual bool decimating()
Definition: fir_filter_lfast.h:140
virtual int getDecimation()
Definition: fir_filter_lfast.h:139