Back to C-ASPT Contents Page
asptTdftaf32f
API Summary
API to create and delete asptTdftaf32f filters
- DT32S tdftaf32fInit(asptTdftaf32f *tdftaf,DT32S L,DT32S R,DT32F mu,DT32S *ip,DT32F *w)
- DT32S tdftaf32fInitStatic(asptTdftaf32f *tdftaf,DT32S L,DT32S R,DT32F mu,DT32F *pCof,DT32F *pDat,DT32S *ip,DT32F *w)
- void tdftaf32fFree(asptTdftaf32f *tdftaf)
API to filter and update asptTdftaf32f filters
API to retrieve the properties of asptTdftaf32f filters
API to set the properties of asptTdftaf32f filters
- DT32S tdftaf32fReset(asptTdftaf32f *tdftaf)
- DT32S tdftaf32fResetDelayLine(asptTdftaf32f *tdftaf)
- DT32S tdftaf32fResize(asptTdftaf32f *tdftaf, DT32S newLen, DT32S newR)
- DT32S tdftaf32fSetCoef(asptTdftaf32f *tdftaf, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- DT32S tdftaf32fSetDelayLine(asptTdftaf32f *tdftaf, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- tdftaf32fSetStepSize( asptTdftaf32f
*tdftaf, newSs )
Description
Implements the Transform-Domain Fault Tolerant Adaptive Filter (TDFTAF) algorithm.
Copyright
Copyright (c) DSP ALGORITHMS 2003; all rights reserved.
<< Back to top
tdftaf32fInit
DT32S tdftaf32fInit(asptTdftaf32f *tdftaf,DT32S L,DT32S R,DT32F mu,DT32S *ip,DT32F *w)
Initializes an asptTdftaf32f filter and allocates its necessary storage buffers - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- tdftaf : pointer to asptTdftaf32f filter to be initialized
- L : number of time domain filter coefficients
- R : number of redundant filter coefficients
- mu : step size.
- ip : fft bit reversal table
- w : fft twiddle factor table.
- Output Parameters :
- tdftaf is initialized using the given input arguments.
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : ip/w is a NULL pointer
- ASPT_RANGE_ERR : L/R is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
<< Back to top
tdftaf32fInitStatic
DT32S tdftaf32fInitStatic(asptTdftaf32f *tdftaf,DT32S L,DT32S R,DT32F mu,DT32F *pCof,DT32F *pDat,DT32S *ip,DT32F *w)
Initializes an asptTdftaf32f filter to use pre-allocated memory blocks - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- tdftaf : pointer to aspttdftaf32f filter to be initialized
- L : number of time domain filter coefficients
- R : number of redundant filter coefficients
- mu : step size.
- pCof : pointer to a pre-allocated memory in program memory
of at least [fftLength] DT32F locations to be used for the filter coefficients.
- pDat : pointer to a pre-allocated memory in data memory of at least
[L+2*fftLength + 2] DT32F locations to be used for data storage.
- ip : fft bit reversal table
- w : fft twiddle factor table.
- Output Parameters :
- tdftaf is initialized using the given input arguments.
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : ip/w is a NULL pointer
- ASPT_RANGE_ERR : L/M is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
- Remarks :
-
fftLength = 2^(nextpow2(L-1)).
<< Back to top
tdftaf32fFilterUpdate
DT32F tdftaf32fFilterUpdate(asptTdftaf32f *tdftaf, DT32F inp, DT32F des)
Calculates the filter output and updates the filter coefficients for the asptTdftaf32f filter.- Returns :
- Input Parameters :
- tdftaf : asptTdftaf32f filter to be processed
- inp : new input sample
- des : new desired sample
- Remarks :
-
Error sample is stored internally and can be obtained by calling tdftaf32fGetLastErrorSample().
<< Back to top
tdftaf32fFilterOnly
DT32F tdftaf32fFilterOnly(asptTdftaf32f *tdftaf, DT32F inp)
Calculates the filter output but does not update the filter coefficients for the asptTdftaf32f filter. It also updates the internal buffers and power estimate.- Returns :
- Input Parameters :
- tdftaf : asptTdftaf32f filter to be processed
- inp : pointer to the new block of input samples
- Remarks :
-
Error sample not calculated.
<< Back to top
tdftaf32fLCFilterUpdate
DT32F tdftaf32fLCFilterUpdate(asptTdftaf32f *tdftaf, DT32F des)
Calculates the filter output and updates the coefficients vector according to the TDFTAF algorithm for the Linear Combiner filter configuration. Assumes the delay line has been already updated before calling this function. - Returns :
-
The filter output sample.
- Input Parameters :
- tdftaf : pointer to the asptTdftaf32f filter
- des : new desired sample
- Remarks :
-
The error sample is stored internally and can be retrieved by calling tdftaf32fGetLastErrorSample().
<< Back to top
tdftaf32fLCFilterOnly
DT32F tdftaf32fLCFilterOnly(asptTdftaf32f *tdftaf)
Calculates the filter output but does not update Calculates the filter output but does not updates the coefficients. It also updates the input power for the Linear Combiner filter configuration. Assumes the delay line has been already updated before calling this function. - Returns :
-
The filter output sample.
- Input Parameters :
- tdftaf : pointer to the asptTdftaf32f filter
- Remarks :
-
error sample is not calculated.
<< Back to top
tdftaf32fFree
void tdftaf32fFree(asptTdftaf32f *tdftaf)
Frees the allocated memory for this asptTdftaf32f filter. - Returns :
- Input Parameters :
- tdftaf : pointer to the asptTdftaf32f filter
- Remarks :
-
Use this function only with filters created with tdftaf32fInit(). Do not use with asptTdftaf32f filters created using tdftaf32fInitStatic().
<< Back to top
tdftaf32fReset
DT32S tdftaf32fReset(asptTdftaf32f *tdftaf)
Resets all filter coefficients to zero.- Returns :
- Input Parameters :
- tdftaf : pointer to an asptTdftaf32f filter to be reset.
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
tdftaf32fResetDelayLine
DT32S tdftaf32fResetDelayLine(asptTdftaf32f *tdftaf)
Resets the internal delay line to zeros.- Returns :
- Input Parameters :
- tdftaf : pointer to an asptTdftaf32f filter to be reset.
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
tdftaf32fGetCoef
DT32S tdftaf32fGetCoef(asptTdftaf32f *tdftaf, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
Copies N internal filter coefficients starting from coef[ind] to dstBuf. - Returns :
-
On success returns the number of coefficients copied, otherwise the error code (negative int).
- Input Parameters :
- tdftaf : pointer to an asptTdftaf32f filter.
- dstBuf : destination buffer.
- ind : index to the first coefficient to be copied.
- N : number of coefficients to be copied.
- flip : if not 0, will flip the coefficients order.
- Error Conditions
- ASPT_NULL_PTR_ERR : dstBuf/tdftaf->wFreq is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
tdftaf32fSetCoef
DT32S tdftaf32fSetCoef(asptTdftaf32f *tdftaf, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal (time domain) filter coefficients starting from coef[ind] to the contents of newCoef. - Returns :
-
On success returns the number of coefficients copied, otherwise the error code (negative int).
- Input Parameters :
- tdftaf : pointer to an asptTdftaf32f filter to be set.
- newCoef : new coefficients vector.
- ind : index to the first coefficient to be set.
- N : number of coefficients to be set.
- flip : if not 0, will copy the coefficients in reverse order.
- Error Conditions
- ASPT_NULL_PTR_ERR : newCoef/tdftaf->wFreq is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
tdftaf32fGetDelayLine
DT32S tdftaf32fGetDelayLine(asptTdftaf32f *tdftaf, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
Copies N internal delay line samples starting from delayLine[ind] to dstBuf. - Returns :
-
On success returns the number of samples copied, otherwise the error code (negative int).
- Input Parameters :
- tdftaf : pointer to the asptTdftaf32f filter.
- dstBuf : destination buffer.
- ind : index to the first sample to be copied.
- N : number of samples to be copied.
- flip : if not 0, will flip the samples order.
- Output Parameters :
- Error Conditions
- ASPT_NULL_PTR_ERR : dstBuf/tdftaf->xTime is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
- Remarks :
-
Samples are stored in dstBuf with newest sample at index 0, and oldest at index N-1, when flip == 0.
<< Back to top
tdftaf32fSetDelayLine
DT32S tdftaf32fSetDelayLine(asptTdftaf32f *tdftaf, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal delay line samples starting from delayLine[ind] to the contents of the given array. - Returns :
-
On success returns the number of samples initialized, otherwise the error code (negative int).
- Input Parameters :
- tdftaf : pointer to an asptTdftaf32f filter.
- newBuf : new data buffer.
- ind : index to the first sample to be copied.
- N : number of samples to be copied.
- flip : if not 0, will flip the samples order.
- Output Parameters :
- Error Conditions
- ASPT_NULL_PTR_ERR : newBuf/tdftaf->xTime is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
- Remarks :
-
Samples assumed to be stored in newBuf with newest sample at index 0, and oldest at index N-1, when flip == 0.
<< Back to top
tdftaf32fResize
DT32S tdftaf32fResize(asptTdftaf32f *tdftaf, DT32S newLen, DT32S newR)
Resizes an asptTdftaf32f filter keeping as much of the filter state as possible. - Returns :
- Input Parameters :
- tdftaf : pointer to the asptTdftaf32f filter to be resized.
- newLen : required new filter length
- newR : required new redundant coefficients
- Error Conditions
- ASPT_NO_ERR : Resizing is successful
- ASPT_NULL_PTR_ERR : NULL pointer error
- ASPT_RANGE_ERR : newLength is not a valid input value
- ASPT_NO_MEM_ERR : Could not allocate the necessary filter storage
- Remarks :
-
Use this function only with dynamically allocated asptTdftaf32f filters.