mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-trx.git
				synced 2025-11-03 21:53:18 +00:00 
			
		
		
		
	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>
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef _CHANNELIZER_RX_H_
 | 
						|
#define _CHANNELIZER_RX_H_
 | 
						|
 | 
						|
#include "ChannelizerBase.h"
 | 
						|
 | 
						|
class Channelizer : public ChannelizerBase {
 | 
						|
public:
 | 
						|
	/** Constructor for channelizing filter bank
 | 
						|
	    @param m number of physical channels
 | 
						|
	    @param blockLen number of samples per output of each iteration
 | 
						|
	    @param hLen number of taps in each constituent filter path
 | 
						|
	*/
 | 
						|
	Channelizer(size_t m, size_t blockLen, size_t hLen = 16);
 | 
						|
	~Channelizer();
 | 
						|
 | 
						|
	/* Return required input and output buffer lengths */
 | 
						|
	size_t inputLen() const;
 | 
						|
	size_t outputLen() const;
 | 
						|
 | 
						|
	/** Rotate "input commutator" and drive samples through filterbank
 | 
						|
	    @param in complex input vector 
 | 
						|
	    @param iLen number of samples in buffer (must match block length)
 | 
						|
	    @return false on error and true otherwise
 | 
						|
	*/
 | 
						|
	bool rotate(const float *in, size_t iLen);
 | 
						|
 | 
						|
	/** Get buffer for an output path
 | 
						|
	    @param chan channel number of filterbank
 | 
						|
            @return NULL on error and pointer to buffer otherwise
 | 
						|
	*/
 | 
						|
	float *outputBuffer(size_t chan) const;
 | 
						|
};
 | 
						|
 | 
						|
#endif /* _CHANNELIZER_RX_H_ */
 |