HARDT - The Ham Radio DSP Toolkit
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
HIirFilter< T > Class Template Reference

#include <hiirfilter.h>

Inheritance diagram for HIirFilter< T >:
Inheritance graph
[legend]
Collaboration diagram for HIirFilter< T >:
Collaboration graph
[legend]

Public Member Functions

 HIirFilter (HWriter< T > *writer, float *coefficients, int length, size_t blocksize, HProbe< T > *prope=NULL)
 
 HIirFilter (HWriterConsumer< T > *consumer, float *coefficients, int length, size_t blocksize, HProbe< T > *probe=NULL)
 
 HIirFilter (HReader< T > *reader, float *coefficients, int length, size_t blocksize, HProbe< T > *probe=NULL)
 
 ~HIirFilter ()
 
virtual void Filter (T *src, T *dest, size_t blocksize)
 
void SetCoefficients (float *coefficients, int length)
 
std::vector< float > GetCoefficients ()
 
- Public Member Functions inherited from HFilter< T >
 ~HFilter ()
 
int Write (T *src, size_t blocksize)
 
int Read (T *dest, size_t blocksize)
 
bool Start ()
 
bool Stop ()
 
bool Command (HCommand *command)
 
void Enable ()
 
void Disable ()
 
bool GetEnabled ()
 
- Public Member Functions inherited from HObject
 HObject ()
 
- Public Member Functions inherited from HWriter< T >
virtual ~HWriter ()=default
 
HWriter< T > * Writer ()
 
- Public Member Functions inherited from HReader< T >
virtual ~HReader ()=default
 
HReader< T > * Reader ()
 
- Public Member Functions inherited from HWriterConsumer< T >
HWriterConsumer< T > * Consumer ()
 

Static Public Member Functions

static HIirFilter< T > * Create (HWriter< T > *writer, size_t blocksize, char *coeffsFilename)
 
static HIirFilter< T > * Create (HWriterConsumer< T > *consumer, size_t blocksize, char *coeffsFilename)
 
static HIirFilter< T > * Create (HReader< T > *reader, size_t blocksize, char *coeffsFilename)
 
- Static Public Member Functions inherited from HFilter< T >
static std::vector< float > ReadCoeffsFromFile (std::string filename)
 
static std::vector< float > ReadCoeffsFromFile (char *filename)
 

Protected Member Functions

void Init (float *coefficients, int length)
 
- Protected Member Functions inherited from HFilter< T >
 HFilter (HWriter< T > *writer, size_t blocksize, HProbe< T > *probe=NULL)
 
 HFilter (HWriterConsumer< T > *consumer, size_t blocksize, HProbe< T > *probe=NULL)
 
 HFilter (HReader< T > *reader, size_t blocksize, HProbe< T > *probe=NULL)
 
void SetWriter (HWriter< T > *writer)
 

Additional Inherited Members

- Protected Attributes inherited from HFilter< T >
int _blocksize
 

Detailed Description

template<class T>
class HIirFilter< T >

Generic IIR filter. The filter is implemented in the first direct form.

The coefficients for the filter must be given in the floating point array, and the coefficients must be ordered this way:

b0, b1, b2, b..., bN, a1, a2, a..., aN

Constructor & Destructor Documentation

◆ HIirFilter() [1/3]

template<class T >
HIirFilter< T >::HIirFilter ( HWriter< T > *  writer,
float *  coefficients,
int  length,
size_t  blocksize,
HProbe< T > *  prope = NULL 
)

Construct a new HIIrFilter that writes to a writer

◆ HIirFilter() [2/3]

template<class T >
HIirFilter< T >::HIirFilter ( HWriterConsumer< T > *  consumer,
float *  coefficients,
int  length,
size_t  blocksize,
HProbe< T > *  probe = NULL 
)

Construct a new HIIrFilter that registers with an upstream writer

◆ HIirFilter() [3/3]

template<class T >
HIirFilter< T >::HIirFilter ( HReader< T > *  reader,
float *  coefficients,
int  length,
size_t  blocksize,
HProbe< T > *  probe = NULL 
)

Construct a new HIirFilter that reads from a reader

◆ ~HIirFilter()

template<class T >
HIirFilter< T >::~HIirFilter

Default destructor

Member Function Documentation

◆ Create() [1/3]

template<class T >
static HIirFilter<T>* HIirFilter< T >::Create ( HReader< T > *  reader,
size_t  blocksize,
char *  coeffsFilename 
)
inlinestatic

Factory function: Create a new HIirFilter that reads from a reader, by reading the coefficients from a file

◆ Create() [2/3]

template<class T >
static HIirFilter<T>* HIirFilter< T >::Create ( HWriter< T > *  writer,
size_t  blocksize,
char *  coeffsFilename 
)
inlinestatic

Factory function: Create a new HIirFilter, that writes to a writer, by reading the coefficients from a file

◆ Create() [3/3]

template<class T >
static HIirFilter<T>* HIirFilter< T >::Create ( HWriterConsumer< T > *  consumer,
size_t  blocksize,
char *  coeffsFilename 
)
inlinestatic

Factory function: Create a new HIirFilter, that registers with an upstream writer, by reading the coefficients from a file

◆ Filter()

template<class T >
void HIirFilter< T >::Filter ( T *  src,
T *  dest,
size_t  blocksize 
)
virtual

Run a block of samples through the filter

Implements HFilter< T >.

Reimplemented in HBiQuadFilter< BIQUAD, T >, HBiQuadFilter< HLowpassBiQuad< T >, T >, and HBiQuadFilter< HHighpassBiQuad< T >, T >.

◆ GetCoefficients()

template<class T >
std::vector<float> HIirFilter< T >::GetCoefficients ( )
inline

Get the filter coefficients. The coefficients is returned in the order: b0, b1, b2, ..., bN, a1, a2, ..., aN

◆ Init()

template<class T >
void HIirFilter< T >::Init ( float *  coefficients,
int  length 
)
protected

Initialize the filter

◆ SetCoefficients()

template<class T >
void HIirFilter< T >::SetCoefficients ( float *  coefficients,
int  length 
)

Set the coefficients of the filter. The coefficients must be provided in the order: b0, b1, b2, ..., bN, a1, a2, ..., aN


The documentation for this class was generated from the following files: