aboutsummaryrefslogblamecommitdiff
path: root/src/drivers/lsm303d/iirFilter.h
blob: ab4223a8ed23d3193bbca3e76a0e12d18a85d392 (plain) (tree)


























































                                                                        
#ifndef IIRFILTER__H__
#define IIRFILTER__H__

__BEGIN_DECLS

#define MAX_LENGTH 4

typedef struct FILTER_s
{
	float denData[MAX_LENGTH];
	float numData[MAX_LENGTH];
	int denLength;
	int numLength;
	float Ts;
	float inpData[MAX_LENGTH];
	float outData[MAX_LENGTH];
	unsigned int inpCnt;
} FIL_T;

typedef struct TF_ZPG_s
{
	int    zerosLength;
	double zerosData[MAX_LENGTH + 1];
	int    polesLength;
	double polesData[MAX_LENGTH + 1];
	double gain;
	double Ts;
} TF_ZPG_t;

typedef struct TF_POLY_s
{
	int    numLength;
	double numData[MAX_LENGTH];
	int    denLength;
	double denData[MAX_LENGTH];
	double Ts;
} TF_POLY_t;

typedef struct TF_DIF_s
{
	int    numInt;
	int    numDiff;
	int    lowpassLength;
	int    highpassLength;
	double lowpassData[MAX_LENGTH];
	int    highpassData[MAX_LENGTH];
	double gain;
	double Ts;
} TF_DIF_t;

__EXPORT int testFunction(void);

__EXPORT float updateFilter(FIL_T *pFilt, float inp);

__EXPORT int initFilter(const TF_DIF_t *pDifc, double Ts, FIL_T *pFilt);

__END_DECLS

#endif