libcodec2_la_LDFLAGS = $(LIBS)
library_includedir = $(prefix)/include
-library_include_HEADERS = codec2.h
+library_include_HEADERS = codec2.h codec2_fdmdv.h codec2_fifo.h
bin_PROGRAMS = c2demo c2enc c2dec c2sim fdmdv_get_test_bits fdmdv_mod fdmdv_demod fdmdv_put_test_bits fdmdv_interleave
--- /dev/null
+/*---------------------------------------------------------------------------*\
+
+ FILE........: codec2_fdmdv.h
+ AUTHOR......: David Rowe
+ DATE CREATED: April 14 2012
+
+ A 1400 bit/s Frequency Division Multiplexed Digital Voice (FDMDV)
+ modem. Used for digital audio over HF SSB. See README_fdmdv.txt for
+ more information, and fdmdv_mod.c and fdmdv_demod.c for example
+ usage.
+
+ The name codec2_fdmdv.h is used to make it unique when "make
+ installed".
+
+ References:
+
+ [1] http://n1su.com/fdmdv/FDMDV_Docs_Rel_1_4b.pdf
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ 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 __FDMDV__
+#define __FDMDV__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* set up the calling convention for DLL function import/export for
+ WIN32 cross compiling */
+
+#ifdef __CODEC2_WIN32__
+#ifdef __CODEC2_BUILDING_DLL__
+#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall
+#else
+#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall
+#endif
+#else
+#define CODEC2_WIN32SUPPORT
+#endif
+
+#include "comp.h"
+
+#define FDMDV_BITS_PER_FRAME 28 /* 20ms frames, 1400 bit/s */
+#define FDMDV_NOM_SAMPLES_PER_FRAME 160 /* modulator output samples/frame and nominal demod samples/frame */
+ /* at 8000 Hz sample rate */
+#define FDMDV_MAX_SAMPLES_PER_FRAME 200 /* max demod samples/frame, use this to allocate storage */
+#define FDMDV_SCALE 1000 /* suggested scaling for 16 bit shorts */
+#define FDMDV_NSYM 15
+#define FDMDV_FCENTRE 1500 /* Centre frequency, Nc/2 carriers below this, Nc/2 carriers above (Hz) */
+
+/* 8 to 48 kHz sample rate conversion */
+
+#define FDMDV_OS 6 /* oversampling rate */
+#define FDMDV_OS_TAPS 48 /* number of OS filter taps */
+
+/* FFT points */
+
+#define FDMDV_NSPEC 512
+#define FDMDV_MAX_F_HZ 4000
+
+/* FDMDV states and stats structures */
+
+struct FDMDV;
+
+struct FDMDV_STATS {
+ float snr_est; /* estimated SNR of rx signal in dB (3 kHz noise BW) */
+ COMP rx_symbols[FDMDV_NSYM]; /* latest received symbols, for scatter plot */
+ int fest_coarse_fine; /* freq est state, 0-coarse 1-fine */
+ float foff; /* estimated freq offset in Hz */
+ float rx_timing; /* estimated optimum timing offset in samples */
+ float clock_offset; /* Estimated tx/rx sample clock offset in ppm */
+};
+
+struct FDMDV * CODEC2_WIN32SUPPORT fdmdv_create(void);
+void CODEC2_WIN32SUPPORT fdmdv_destroy(struct FDMDV *fdmdv_state);
+
+void CODEC2_WIN32SUPPORT fdmdv_mod(struct FDMDV *fdmdv_state, COMP tx_fdm[], int tx_bits[], int *sync_bit);
+void CODEC2_WIN32SUPPORT fdmdv_demod(struct FDMDV *fdmdv_state, int rx_bits[], int *sync_bit, COMP rx_fdm[], int *nin);
+
+void CODEC2_WIN32SUPPORT fdmdv_get_test_bits(struct FDMDV *fdmdv_state, int tx_bits[]);
+void CODEC2_WIN32SUPPORT fdmdv_put_test_bits(struct FDMDV *f, int *sync, int *bit_errors, int *ntest_bits, int rx_bits[]);
+
+void CODEC2_WIN32SUPPORT fdmdv_get_demod_stats(struct FDMDV *fdmdv_state, struct FDMDV_STATS *fdmdv_stats);
+void CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV *fdmdv_state, float mag_dB[], COMP rx_fdm[], int nin);
+
+void CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[], int n);
+void CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[], int n);
+
+void CODEC2_WIN32SUPPORT fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP *foff_rect, COMP *foff_phase_rect, int nin);
+
+/* debug/development function(s) */
+
+void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
--- /dev/null
+/*---------------------------------------------------------------------------*\
+
+ FILE........: codec2_fifo.h
+ AUTHOR......: David Rowe
+ DATE CREATED: Oct 15 2012
+
+ A FIFO design useful in gluing the FDMDV modem and codec together in
+ integrated applications.
+
+ The name codec2_fifo.h is used to make it unique when "make
+ installed".
+
+\*---------------------------------------------------------------------------*/
+
+/*
+ Copyright (C) 2012 David Rowe
+
+ 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 __FIFO__
+#define __FIFO__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct FIFO;
+
+struct FIFO *fifo_create(int nshort);
+void fifo_destroy(struct FIFO *fifo);
+int fifo_write(struct FIFO *fifo, short data[], int n);
+int fifo_read(struct FIFO *fifo, short data[], int n);
+int fifo_used(struct FIFO *fifo);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
#include <math.h>
#include "fdmdv_internal.h"
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#include "rn.h"
#include "test_bits.h"
#include "pilot_coeff.h"
+++ /dev/null
-/*---------------------------------------------------------------------------*\
-
- FILE........: fdmdv.h
- AUTHOR......: David Rowe
- DATE CREATED: April 14 2012
-
- A 1400 bit/s Frequency Division Multiplexed Digital Voice (FDMDV)
- modem. Used for digital audio over HF SSB. See README_fdmdv.txt for
- more information, and fdmdv_mod.c and fdmdv_demod.c for example
- usage.
-
- References:
-
- [1] http://n1su.com/fdmdv/FDMDV_Docs_Rel_1_4b.pdf
-
-\*---------------------------------------------------------------------------*/
-
-/*
- Copyright (C) 2012 David Rowe
-
- 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 __FDMDV__
-#define __FDMDV__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* set up the calling convention for DLL function import/export for
- WIN32 cross compiling */
-
-#ifdef __CODEC2_WIN32__
-#ifdef __CODEC2_BUILDING_DLL__
-#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall
-#else
-#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall
-#endif
-#else
-#define CODEC2_WIN32SUPPORT
-#endif
-
-#include "comp.h"
-
-#define FDMDV_BITS_PER_FRAME 28 /* 20ms frames, 1400 bit/s */
-#define FDMDV_NOM_SAMPLES_PER_FRAME 160 /* modulator output samples/frame and nominal demod samples/frame */
- /* at 8000 Hz sample rate */
-#define FDMDV_MAX_SAMPLES_PER_FRAME 200 /* max demod samples/frame, use this to allocate storage */
-#define FDMDV_SCALE 1000 /* suggested scaling for 16 bit shorts */
-#define FDMDV_NSYM 15
-#define FDMDV_FCENTRE 1500 /* Centre frequency, Nc/2 carriers below this, Nc/2 carriers above (Hz) */
-
-/* 8 to 48 kHz sample rate conversion */
-
-#define FDMDV_OS 6 /* oversampling rate */
-#define FDMDV_OS_TAPS 48 /* number of OS filter taps */
-
-/* FFT points */
-
-#define FDMDV_NSPEC 512
-#define FDMDV_MAX_F_HZ 4000
-
-/* FDMDV states and stats structures */
-
-struct FDMDV;
-
-struct FDMDV_STATS {
- float snr_est; /* estimated SNR of rx signal in dB (3 kHz noise BW) */
- COMP rx_symbols[FDMDV_NSYM]; /* latest received symbols, for scatter plot */
- int fest_coarse_fine; /* freq est state, 0-coarse 1-fine */
- float foff; /* estimated freq offset in Hz */
- float rx_timing; /* estimated optimum timing offset in samples */
- float clock_offset; /* Estimated tx/rx sample clock offset in ppm */
-};
-
-struct FDMDV * CODEC2_WIN32SUPPORT fdmdv_create(void);
-void CODEC2_WIN32SUPPORT fdmdv_destroy(struct FDMDV *fdmdv_state);
-
-void CODEC2_WIN32SUPPORT fdmdv_mod(struct FDMDV *fdmdv_state, COMP tx_fdm[], int tx_bits[], int *sync_bit);
-void CODEC2_WIN32SUPPORT fdmdv_demod(struct FDMDV *fdmdv_state, int rx_bits[], int *sync_bit, COMP rx_fdm[], int *nin);
-
-void CODEC2_WIN32SUPPORT fdmdv_get_test_bits(struct FDMDV *fdmdv_state, int tx_bits[]);
-void CODEC2_WIN32SUPPORT fdmdv_put_test_bits(struct FDMDV *f, int *sync, int *bit_errors, int *ntest_bits, int rx_bits[]);
-
-void CODEC2_WIN32SUPPORT fdmdv_get_demod_stats(struct FDMDV *fdmdv_state, struct FDMDV_STATS *fdmdv_stats);
-void CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV *fdmdv_state, float mag_dB[], COMP rx_fdm[], int nin);
-
-void CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[], int n);
-void CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[], int n);
-
-void CODEC2_WIN32SUPPORT fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP *foff_rect, COMP *foff_phase_rect, int nin);
-
-/* debug/development function(s) */
-
-void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
#include <math.h>
#include <errno.h>
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#include "octave.h"
#define BITS_PER_CODEC_FRAME (2*FDMDV_BITS_PER_FRAME)
#include <math.h>
#include <errno.h>
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#define BITS_PER_CODEC_FRAME (2*FDMDV_BITS_PER_FRAME)
#define BYTES_PER_CODEC_FRAME (BITS_PER_CODEC_FRAME/8)
#include <math.h>
#include <errno.h>
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#define MAX_INTERLEAVER 1024
#define __FDMDV_INTERNAL__
#include "comp.h"
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#include "kiss_fft.h"
/*---------------------------------------------------------------------------*\
#include <math.h>
#include <errno.h>
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#define BITS_PER_CODEC_FRAME (2*FDMDV_BITS_PER_FRAME)
#define BYTES_PER_CODEC_FRAME (BITS_PER_CODEC_FRAME/8)
#include <math.h>
#include <errno.h>
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#define BITS_PER_CODEC_FRAME (2*FDMDV_BITS_PER_FRAME)
#define BYTES_PER_CODEC_FRAME (BITS_PER_CODEC_FRAME/8)
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
-#include "fifo.h"
+#include "codec2_fifo.h"
struct FIFO {
short *buf;
+++ /dev/null
-/*---------------------------------------------------------------------------*\
-
- FILE........: fifo.h
- AUTHOR......: David Rowe
- DATE CREATED: Oct 15 2012
-
- A FIFO design useful in gluing the FDMDV modem and codec together in
- integrated applications.
-
-\*---------------------------------------------------------------------------*/
-
-/*
- Copyright (C) 2012 David Rowe
-
- 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 __FIFO__
-#define __FIFO__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct FIFO;
-
-struct FIFO *fifo_create(int nshort);
-void fifo_destroy(struct FIFO *fifo);
-int fifo_write(struct FIFO *fifo, short data[], int n);
-int fifo_read(struct FIFO *fifo, short data[], int n);
-int fifo_used(struct FIFO *fifo);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#define N8 160 /* procssing buffer size at 8 kHz */
#define N48 (N8*FDMDV_OS)
#include <math.h>
#include "fdmdv_internal.h"
-#include "fdmdv.h"
+#include "codec2_fdmdv.h"
#include "octave.h"
#define FRAMES 25
#include <assert.h>
#include <stdio.h>
#include <pthread.h>
-#include "fifo.h"
+#include "codec2_fifo.h"
#define FIFO_SZ 1024
#define WRITE_SZ 10