aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/ChannelizerBase.h
blob: 7da506b0bdb641987ffe0089fbe3765301ecb6b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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_ */