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_ */
|