diff options
author | Tom Tsou <tom.tsou@ettus.com> | 2016-06-22 16:16:30 -0700 |
---|---|---|
committer | Tom Tsou <tom.tsou@ettus.com> | 2016-07-01 03:07:27 -0700 |
commit | 35222296fef378977a83a4ee89d8c3ef9bc62a3f (patch) | |
tree | c5551e02f5e9f30e970de1fabdbefeb3bc4842aa /Transceiver52M/ChannelizerBase.h | |
parent | 28670fb5dad8e48ff74051a5bbe0c8309b04c817 (diff) |
mcbts: Add multi-ARFCN channelizing filters
Introduce polyphase channelizer (Rx) and synthesis (Tx) filterbanks,
which serve as the signal processing backend for multi-carrier GSM.
Fast Fourier Transform (FFT) is used internally. FFTW is added as
a new build dependency.
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Diffstat (limited to 'Transceiver52M/ChannelizerBase.h')
-rw-r--r-- | Transceiver52M/ChannelizerBase.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Transceiver52M/ChannelizerBase.h b/Transceiver52M/ChannelizerBase.h new file mode 100644 index 0000000..7da506b --- /dev/null +++ b/Transceiver52M/ChannelizerBase.h @@ -0,0 +1,39 @@ +#ifndef _CHANNELIZER_BASE_H_ +#define _CHANNELIZER_BASE_H_ + +class ChannelizerBase { +protected: + ChannelizerBase(size_t m, size_t blockLen, size_t hLen); + ~ChannelizerBase(); + + /* Channelizer parameters */ + size_t m; + size_t hLen; + size_t blockLen; + + /* Channelizer filterbank sub-filters */ + float **subFilters; + + /* Input/Output buffers */ + float **hInputs, **hOutputs, **hist; + float *fftInput, *fftOutput; + + /* Pointer to opaque FFT instance */ + struct fft_hdl *fftHandle; + + /* Initializer internals */ + bool initFilters(); + bool initFFT(); + void releaseFilters(); + + /* Map overlapped FFT and filter I/O buffers */ + bool mapBuffers(); + + /* Buffer length validity checking */ + bool checkLen(size_t innerLen, size_t outerLen); +public: + /* Initilize channelizer/synthesis filter internals */ + bool init(); +}; + +#endif /* _CHANNELIZER_BASE_H_ */ |