aboutsummaryrefslogtreecommitdiff
path: root/src/filter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/filter.h')
-rw-r--r--src/filter.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/filter.h b/src/filter.h
new file mode 100644
index 0000000..ba48424
--- /dev/null
+++ b/src/filter.h
@@ -0,0 +1,48 @@
+/*
+ Copyright (C) 2018 James C. Ahlstrom
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation. This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __FILTER__
+#define __FILTER__
+
+#include <complex.h>
+
+struct quisk_cfFilter { // Structure to hold the static data for FIR filters
+ float * dCoefs; // real filter coefficients
+ complex float * cpxCoefs; // complex filter coefficients
+ int nBuf; // dimension of cBuf
+ int nTaps; // dimension of dSamples, cSamples, dCoefs
+ int decim_index; // index of next sample for decimation
+ complex float * cSamples; // storage for old samples
+ complex float * ptcSamp; // next available position in cSamples
+ complex float * cBuf; // auxiliary buffer for interpolation
+} ;
+
+extern int quisk_cfInterpDecim(complex float *, int, struct quisk_cfFilter *, int, int);
+extern void quisk_filt_cfInit(struct quisk_cfFilter *, float *, int);
+extern void quisk_filt_destroy(struct quisk_cfFilter *);
+extern void quisk_cfTune(struct quisk_cfFilter *, float);
+extern void quisk_ccfFilter(complex float *, complex float *, int, struct quisk_cfFilter *);
+
+extern float filtP400S600[100];
+extern float filtP550S750[160];
+extern float filtP650S900[100];
+extern float filtP900S1100[100];
+extern float filtP1100S1300[100];
+extern float filtP200S400[100];
+extern float quiskFilt120t480[480];
+
+#endif