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>
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef _SYNTHESIS_H_
 | 
						|
#define _SYNTHESIS_H_
 | 
						|
 | 
						|
#include "ChannelizerBase.h"
 | 
						|
 | 
						|
class Synthesis : public ChannelizerBase {
 | 
						|
public:
 | 
						|
	/** Constructor for synthesis filterbank
 | 
						|
	    @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
 | 
						|
	*/
 | 
						|
	Synthesis(size_t m, size_t blockLen, size_t hLen = 16);
 | 
						|
	~Synthesis();
 | 
						|
 | 
						|
	/* Return required input and output buffer lengths */
 | 
						|
	size_t inputLen() const;
 | 
						|
	size_t outputLen() const;
 | 
						|
 | 
						|
	/** Rotate "output commutator" and drive samples through filterbank
 | 
						|
	    @param out complex output vector 
 | 
						|
	    @param oLen number of samples in buffer (must match block length * m)
 | 
						|
	    @return false on error and true otherwise
 | 
						|
	*/
 | 
						|
	bool rotate(float *out, size_t oLen);
 | 
						|
 | 
						|
	/** Get buffer for an input path
 | 
						|
	    @param chan channel number of filterbank
 | 
						|
            @return NULL on error and pointer to buffer otherwise
 | 
						|
	*/
 | 
						|
	float *inputBuffer(size_t chan) const;
 | 
						|
	bool resetBuffer(size_t chan);
 | 
						|
};
 | 
						|
 | 
						|
#endif /* _SYNTHESIS_H_ */
 |