From: drowe67 Date: Tue, 1 May 2012 06:03:49 +0000 (+0000) Subject: fdmdv_put_test_bits working, and reasonable output from fdmdv_demod.c, although not... X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=5fa7fb401d95833187240b215a1f67dc29e9c163;p=freetel-svn-tracking.git fdmdv_put_test_bits working, and reasonable output from fdmdv_demod.c, although not quitethe same as Octave, more work rqd, but good first pass git-svn-id: https://svn.code.sf.net/p/freetel/code@388 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/octave/README_fdmdv.txt b/codec2-dev/octave/README_fdmdv.txt index 459801cc..2f874672 100644 --- a/codec2-dev/octave/README_fdmdv.txt +++ b/codec2-dev/octave/README_fdmdv.txt @@ -46,8 +46,11 @@ TODO $ ./fdmdv_mod test.c2 test.raw $ play -r 8000 -s -2 test.raw - Two seconds of test frame data out of sound device: + Two seconds of test frame data modulated and sent out of sound device: $ ./fdmdv_get_test_bits - 2800 | ./fdmdv_mod - - | play -t raw -r 8000 -s -2 - + + Count errors in two seconds of test frame data: + $ ./fdmdv_get_test_bits - 2800 | ./fdmdv_put_test_bits - [ ] PAPR idea + automatically weak phases to reduce PAPR, e.g. slow variations in freq... diff --git a/codec2-dev/octave/fdmdv_demod.m b/codec2-dev/octave/fdmdv_demod.m index 791ca03b..7a21d0dc 100644 --- a/codec2-dev/octave/fdmdv_demod.m +++ b/codec2-dev/octave/fdmdv_demod.m @@ -1,7 +1,7 @@ % fdmdv_demod.m % -% Demodulator function for FDMDV modem. Requires 8kHz sample rate raw files -% as input +% Demodulator function for FDMDV modem (Octave version). Requires +% 8kHz sample rate raw files as input % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License diff --git a/codec2-dev/octave/fdmdv_demod_c.m b/codec2-dev/octave/fdmdv_demod_c.m new file mode 100644 index 00000000..05f1fc17 --- /dev/null +++ b/codec2-dev/octave/fdmdv_demod_c.m @@ -0,0 +1,45 @@ +% fdmdv_demod_c.m +% +% Plots Octave dump file information from C FDMDV demodulator program, +% to give a similar set of plots to fdmdv_demod.m. Useful for off +% line analysis of demod performance. +% +% Copyright David Rowe 2012 +% This program is distributed under the terms of the GNU General Public License +% Version 2 +% + +function fdmdv_demod_c(dumpfilename, bits) + + fdmdv; % include modem code + frames = bits/(Nc*Nb); + + load(dumpfilename); + + % --------------------------------------------------------------------- + % Plots + % --------------------------------------------------------------------- + + xt = (1:frames)/Rs; + secs = frames/Rs; + + figure(1) + clf; + plot(real(rx_symbols_log_c(1:Nc+1,30:frames)),imag(rx_symbols_log_c(1:Nc+1,30:frames)),'+') + axis([-2 2 -2 2]); + title('Scatter Diagram'); + + figure(2) + clf; + subplot(211) + plot(xt, rx_timing_log_c(1:frames)) + title('timing offset (samples)'); + subplot(212) + plot(xt, foff_log_c(1:frames)) + hold on; + plot(xt, coarse_fine_log_c(1:frames)*75, 'r'); + hold off; + title('Freq offset (Hz)'); + grid + +endfunction diff --git a/codec2-dev/src/Makefile.am b/codec2-dev/src/Makefile.am index a2230685..c8b81b51 100644 --- a/codec2-dev/src/Makefile.am +++ b/codec2-dev/src/Makefile.am @@ -122,7 +122,7 @@ libcodec2_la_LDFLAGS = $(LIBS) library_includedir = $(prefix)/include library_include_HEADERS = codec2.h -bin_PROGRAMS = c2demo c2enc c2dec c2sim fdmdv_get_test_bits fdmdv_mod fdmdv_demod +bin_PROGRAMS = c2demo c2enc c2dec c2sim fdmdv_get_test_bits fdmdv_mod fdmdv_demod fdmdv_put_test_bits c2demo_SOURCES = c2demo.c c2demo_LDADD = $(lib_LTLIBRARIES) @@ -148,3 +148,7 @@ fdmdv_mod_LDFLAGS = $(LIBS) fdmdv_demod_SOURCES = fdmdv_demod.c fdmdv.c fft.c kiss_fft.c octave.c fdmdv_demod_LDFLAGS = $(LIBS) + +fdmdv_put_test_bits_SOURCES = fdmdv_put_test_bits.c fdmdv.c fft.c kiss_fft.c +fdmdv_put_test_bits_LDFLAGS = $(LIBS) + diff --git a/codec2-dev/src/Makefile.in b/codec2-dev/src/Makefile.in index 8e3e2d79..621088cb 100644 --- a/codec2-dev/src/Makefile.in +++ b/codec2-dev/src/Makefile.in @@ -41,7 +41,7 @@ host_triplet = @host@ noinst_PROGRAMS = generate_codebook$(EXEEXT) genlspdtcb$(EXEEXT) bin_PROGRAMS = c2demo$(EXEEXT) c2enc$(EXEEXT) c2dec$(EXEEXT) \ c2sim$(EXEEXT) fdmdv_get_test_bits$(EXEEXT) fdmdv_mod$(EXEEXT) \ - fdmdv_demod$(EXEEXT) + fdmdv_demod$(EXEEXT) fdmdv_put_test_bits$(EXEEXT) subdir = src DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @@ -100,6 +100,10 @@ am_fdmdv_mod_OBJECTS = fdmdv_mod.$(OBJEXT) fdmdv.$(OBJEXT) \ fft.$(OBJEXT) kiss_fft.$(OBJEXT) fdmdv_mod_OBJECTS = $(am_fdmdv_mod_OBJECTS) fdmdv_mod_LDADD = $(LDADD) +am_fdmdv_put_test_bits_OBJECTS = fdmdv_put_test_bits.$(OBJEXT) \ + fdmdv.$(OBJEXT) fft.$(OBJEXT) kiss_fft.$(OBJEXT) +fdmdv_put_test_bits_OBJECTS = $(am_fdmdv_put_test_bits_OBJECTS) +fdmdv_put_test_bits_LDADD = $(LDADD) generate_codebook_SOURCES = generate_codebook.c generate_codebook_OBJECTS = generate_codebook.$(OBJEXT) generate_codebook_LDADD = $(LDADD) @@ -120,11 +124,13 @@ LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ SOURCES = $(libcodec2_la_SOURCES) $(c2dec_SOURCES) $(c2demo_SOURCES) \ $(c2enc_SOURCES) $(c2sim_SOURCES) $(fdmdv_demod_SOURCES) \ $(fdmdv_get_test_bits_SOURCES) $(fdmdv_mod_SOURCES) \ - generate_codebook.c genlspdtcb.c + $(fdmdv_put_test_bits_SOURCES) generate_codebook.c \ + genlspdtcb.c DIST_SOURCES = $(libcodec2_la_SOURCES) $(c2dec_SOURCES) \ $(c2demo_SOURCES) $(c2enc_SOURCES) $(c2sim_SOURCES) \ $(fdmdv_demod_SOURCES) $(fdmdv_get_test_bits_SOURCES) \ - $(fdmdv_mod_SOURCES) generate_codebook.c genlspdtcb.c + $(fdmdv_mod_SOURCES) $(fdmdv_put_test_bits_SOURCES) \ + generate_codebook.c genlspdtcb.c library_includeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(library_include_HEADERS) ETAGS = etags @@ -333,6 +339,8 @@ fdmdv_mod_SOURCES = fdmdv_mod.c fdmdv.c fft.c kiss_fft.c fdmdv_mod_LDFLAGS = $(LIBS) fdmdv_demod_SOURCES = fdmdv_demod.c fdmdv.c fft.c kiss_fft.c octave.c fdmdv_demod_LDFLAGS = $(LIBS) +fdmdv_put_test_bits_SOURCES = fdmdv_put_test_bits.c fdmdv.c fft.c kiss_fft.c +fdmdv_put_test_bits_LDFLAGS = $(LIBS) all: all-am .SUFFIXES: @@ -451,6 +459,9 @@ fdmdv_get_test_bits$(EXEEXT): $(fdmdv_get_test_bits_OBJECTS) $(fdmdv_get_test_bi fdmdv_mod$(EXEEXT): $(fdmdv_mod_OBJECTS) $(fdmdv_mod_DEPENDENCIES) @rm -f fdmdv_mod$(EXEEXT) $(LINK) $(fdmdv_mod_LDFLAGS) $(fdmdv_mod_OBJECTS) $(fdmdv_mod_LDADD) $(LIBS) +fdmdv_put_test_bits$(EXEEXT): $(fdmdv_put_test_bits_OBJECTS) $(fdmdv_put_test_bits_DEPENDENCIES) + @rm -f fdmdv_put_test_bits$(EXEEXT) + $(LINK) $(fdmdv_put_test_bits_LDFLAGS) $(fdmdv_put_test_bits_OBJECTS) $(fdmdv_put_test_bits_LDADD) $(LIBS) generate_codebook$(EXEEXT): $(generate_codebook_OBJECTS) $(generate_codebook_DEPENDENCIES) @rm -f generate_codebook$(EXEEXT) $(LINK) $(generate_codebook_LDFLAGS) $(generate_codebook_OBJECTS) $(generate_codebook_LDADD) $(LIBS) @@ -472,6 +483,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdmdv_demod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdmdv_get_test_bits.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdmdv_mod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdmdv_put_test_bits.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate_codebook.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genlspdtcb.Po@am__quote@ diff --git a/codec2-dev/src/fdmdv.c b/codec2-dev/src/fdmdv.c index f0501dde..8c30a02d 100644 --- a/codec2-dev/src/fdmdv.c +++ b/codec2-dev/src/fdmdv.c @@ -893,10 +893,9 @@ float rx_est_timing(COMP rx_symbols[], \*---------------------------------------------------------------------------*/ -float qpsk_to_bits(int rx_bits[], int *sync_bit, COMP prev_rx_symbols[], COMP rx_symbols[]) +float qpsk_to_bits(int rx_bits[], int *sync_bit, COMP phase_difference[], COMP prev_rx_symbols[], COMP rx_symbols[]) { int c; - COMP phase_difference[NC+1]; COMP pi_on_4; COMP d; int msb=0, lsb=0; @@ -957,31 +956,36 @@ float qpsk_to_bits(int rx_bits[], int *sync_bit, COMP prev_rx_symbols[], COMP rx \*---------------------------------------------------------------------------*/ -void fdmdv_put_test_bits(struct FDMDV *f, int *sync, int *bit_errors, int rx_bits[]) +void fdmdv_put_test_bits(struct FDMDV *f, int *sync, int *bit_errors, int *ntest_bits, int rx_bits[]) { int i,j; float ber; /* Append to our memory */ - for(i=0,j=FDMDV_BITS_PER_FRAME; irx_test_bits_mem[i] = f->rx_test_bits_mem[j]; - for(i=NTEST_BITS-FDMDV_BITS_PER_FRAME,j=0; irx_test_bits_mem[i] = rx_bits[j]; /* see how many bit errors we get when checked against test sequence */ *bit_errors = 0; - for(i=0; irx_test_bits_mem[i]; + //printf("%d %d %d %d\n", i, test_bits[i], f->rx_test_bits_mem[i], test_bits[i] ^ f->rx_test_bits_mem[i]); + } /* if less than a thresh we are aligned and in sync with test sequence */ - ber = *bit_errors/NTEST_BITS; + ber = (float)*bit_errors/NTEST_BITS; *sync = 0; if (ber < 0.2) *sync = 1; + + *ntest_bits = NTEST_BITS; + } /*---------------------------------------------------------------------------*\ @@ -1091,6 +1095,7 @@ void fdmdv_demod(struct FDMDV *fdmdv, int rx_bits[], int *sync_bit, float rx_fdm COMP rx_fdm_fcorr[M+M/P]; COMP rx_baseband[NC+1][M+M/P]; COMP rx_filt[NC+1][P+1]; + COMP rx_symbols[NC+1]; float env[NT*P]; /* freq offset estimation and correction */ @@ -1104,9 +1109,9 @@ void fdmdv_demod(struct FDMDV *fdmdv, int rx_bits[], int *sync_bit, float rx_fdm fdm_downconvert(rx_baseband, rx_fdm_fcorr, fdmdv->phase_rx, fdmdv->freq, *nin); rx_filter(rx_filt, rx_baseband, fdmdv->rx_filter_memory, *nin); - fdmdv->rx_timing = rx_est_timing(fdmdv->rx_symbols, rx_filt, rx_baseband, fdmdv->rx_filter_mem_timing, env, fdmdv->rx_baseband_mem_timing, *nin); - foff_fine = qpsk_to_bits(rx_bits, sync_bit, fdmdv->prev_rx_symbols, fdmdv->rx_symbols); - memcpy(fdmdv->prev_rx_symbols, fdmdv->rx_symbols, sizeof(COMP)*(NC+1)); + fdmdv->rx_timing = rx_est_timing(rx_symbols, rx_filt, rx_baseband, fdmdv->rx_filter_mem_timing, env, fdmdv->rx_baseband_mem_timing, *nin); + foff_fine = qpsk_to_bits(rx_bits, sync_bit, fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols); + memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP)*(NC+1)); /* freq offset estimation state machine */ @@ -1138,12 +1143,11 @@ void fdmdv_get_demod_stats(struct FDMDV *fdmdv, struct FDMDV_STATS *fdmdv_stats) fdmdv_stats->rx_timing = fdmdv->rx_timing/M; fdmdv_stats->clock_offset = 0.0; /* TODO - implement clock offset estimation */ - /* adjust for phase offset to make suitable for scatter plot */ - assert((NC+1) == FDMDV_NSYM); - for(c=0; crx_symbols[c] = cmult(cmult(fdmdv->rx_symbols[c], cconj(fdmdv->prev_rx_symbols[c])), pi_on_4); + for(c=0; crx_symbols[c] = fdmdv->phase_difference[c]; + } } diff --git a/codec2-dev/src/fdmdv.h b/codec2-dev/src/fdmdv.h index 5f9e9458..34634962 100644 --- a/codec2-dev/src/fdmdv.h +++ b/codec2-dev/src/fdmdv.h @@ -64,7 +64,7 @@ void fdmdv_mod(struct FDMDV *fdmdv_state, COMP tx_fdm[], int tx_bits[], void fdmdv_demod(struct FDMDV *fdmdv_state, int rx_bits[], int *sync_bit, float rx_fdm[], int *nin); void fdmdv_get_test_bits(struct FDMDV *fdmdv_state, int tx_bits[]); -void fdmdv_put_test_bits(struct FDMDV *f, int *sync, int *bit_errors, int rx_bits[]); +void fdmdv_put_test_bits(struct FDMDV *f, int *sync, int *bit_errors, int *ntest_bits, int rx_bits[]); void fdmdv_get_demod_stats(struct FDMDV *fdmdv_state, struct FDMDV_STATS *fdmdv_stats); void fdmdv_get_waterfall_line(struct FDMDV *fdmdv_state, float magnitudes[], int *magnitude_points); diff --git a/codec2-dev/src/fdmdv_demod.c b/codec2-dev/src/fdmdv_demod.c index d91715dc..ce44536a 100644 --- a/codec2-dev/src/fdmdv_demod.c +++ b/codec2-dev/src/fdmdv_demod.c @@ -46,8 +46,6 @@ #define MAX_FRAMES 50*60 /* 1 minute at 50 symbols/s */ -void dump_to_octave(struct FDMDV *fdmdv, FILE *f); - int main(int argc, char *argv[]) { FILE *fin, *fout; @@ -63,7 +61,7 @@ int main(int argc, char *argv[]) int state, next_state; int frames; - FILE *foct; + FILE *foct = NULL; struct FDMDV_STATS stats; COMP rx_symbols_log[FDMDV_NSYM][MAX_FRAMES]; int coarse_fine_log[MAX_FRAMES]; @@ -162,7 +160,7 @@ int main(int argc, char *argv[]) /* Optional dump to Octave log file */ - if ( (foct = fopen(argv[3],"wt")) == NULL ) { + if ( strcmp(argv[3],"|") && (foct = fopen(argv[3],"wt")) == NULL ) { fprintf(stderr, "Error opening Octave dump file: %s: %s.\n", argv[3], strerror(errno)); exit(1); diff --git a/codec2-dev/src/fdmdv_internal.h b/codec2-dev/src/fdmdv_internal.h index 827fa9f6..435244fd 100644 --- a/codec2-dev/src/fdmdv_internal.h +++ b/codec2-dev/src/fdmdv_internal.h @@ -117,7 +117,7 @@ struct FDMDV { COMP rx_filter_mem_timing[NC+1][NT*P]; COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING]; float rx_timing; - COMP rx_symbols[NC+1]; + COMP phase_difference[NC+1]; COMP prev_rx_symbols[NC+1]; /* freq est state machine */ @@ -149,7 +149,7 @@ float rx_est_timing(COMP rx_symbols[], float env[], COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING], int nin); -float qpsk_to_bits(int rx_bits[], int *sync_bit, COMP prev_rx_symbols[], COMP rx_symbols[]); +float qpsk_to_bits(int rx_bits[], int *sync_bit, COMP phase_difference[], COMP prev_rx_symbols[], COMP rx_symbols[]); int freq_state(int sync_bit, int *state); #endif diff --git a/codec2-dev/src/fdmdv_put_test_bits.c b/codec2-dev/src/fdmdv_put_test_bits.c new file mode 100644 index 00000000..ed773e7c --- /dev/null +++ b/codec2-dev/src/fdmdv_put_test_bits.c @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: fdmdv_put_test_bits.c + AUTHOR......: David Rowe + DATE CREATED: 1 May 2012 + + Using a file of packed test bits as input, determines bit error + rate. Useful for testing fdmdv_demod. + +\*---------------------------------------------------------------------------*/ + + +/* + 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, 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 . +*/ + +#include +#include +#include +#include +#include +#include + +#include "fdmdv.h" + +#define BITS_PER_CODEC_FRAME (2*FDMDV_BITS_PER_FRAME) +#define BYTES_PER_CODEC_FRAME (BITS_PER_CODEC_FRAME/8) + +int main(int argc, char *argv[]) +{ + FILE *fin; + struct FDMDV *fdmdv; + char packed_bits[BYTES_PER_CODEC_FRAME]; + int rx_bits[2*FDMDV_BITS_PER_FRAME]; + int i, bit, byte; + int test_frame_sync, bit_errors, total_bit_errors, total_bits, ntest_bits; + + if (argc < 2) { + printf("usage: %s InputBitFile\n", argv[0]); + printf("e.g %s test.c2\n", argv[0]); + exit(1); + } + + if (strcmp(argv[1], "-") == 0) fin = stdin; + else if ( (fin = fopen(argv[1],"rb")) == NULL ) { + fprintf(stderr, "Error opening input bit file: %s: %s.\n", + argv[1], strerror(errno)); + exit(1); + } + + fdmdv = fdmdv_create(); + total_bit_errors = 0; + total_bits = 0; + + while(fread(packed_bits, sizeof(char), BYTES_PER_CODEC_FRAME, fin) == BYTES_PER_CODEC_FRAME) { + /* unpack bits, MSB first */ + + bit = 7; byte = 0; + for(i=0; i> bit) & 0x1; + //printf("%d 0x%x %d\n", i, packed_bits[byte], rx_bits[i]); + bit--; + if (bit < 0) { + bit = 7; + byte++; + } + } + assert(byte == BYTES_PER_CODEC_FRAME); + + fdmdv_put_test_bits(fdmdv, &test_frame_sync, &bit_errors, &ntest_bits, rx_bits); + if (test_frame_sync == 1) { + total_bit_errors += bit_errors; + total_bits = total_bits + ntest_bits; + printf("+"); + } + else + printf("-"); + fdmdv_put_test_bits(fdmdv, &test_frame_sync, &bit_errors, &ntest_bits, &rx_bits[FDMDV_BITS_PER_FRAME]); + if (test_frame_sync == 1) { + total_bit_errors += bit_errors; + total_bits = total_bits + ntest_bits; + printf("+"); + } + else + printf("-"); + + /* if this is in a pipeline, we probably don't want the usual + buffering to occur */ + + if (fin == stdin) fflush(stdin); + } + + fclose(fin); + fdmdv_destroy(fdmdv); + + printf("\nbits %d errors %d BER %1.4f\n", total_bits, total_bit_errors, (float)total_bit_errors/(1E-6+total_bits) ); + return 0; +} + diff --git a/codec2-dev/unittest/Makefile.in b/codec2-dev/unittest/Makefile.in index b705e5b3..00af6dcb 100644 --- a/codec2-dev/unittest/Makefile.in +++ b/codec2-dev/unittest/Makefile.in @@ -75,7 +75,7 @@ am_tcodec2_OBJECTS = tcodec2.$(OBJEXT) quantise.$(OBJEXT) \ tcodec2_OBJECTS = $(am_tcodec2_OBJECTS) tcodec2_DEPENDENCIES = am_tfdmdv_OBJECTS = tfdmdv.$(OBJEXT) fdmdv.$(OBJEXT) fft.$(OBJEXT) \ - kiss_fft.$(OBJEXT) + kiss_fft.$(OBJEXT) octave.$(OBJEXT) tfdmdv_OBJECTS = $(am_tfdmdv_OBJECTS) tfdmdv_DEPENDENCIES = am_tinterp_OBJECTS = tinterp.$(OBJEXT) sine.$(OBJEXT) fft.$(OBJEXT) \ @@ -270,7 +270,7 @@ tcodec2_LDFLAGS = $(LIBS) scalarlsptest_SOURCES = scalarlsptest.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c $(CODEBOOKS) scalarlsptest_LDADD = $(lib_LTLIBRARIES) scalarlsptest_LDFLAGS = $(LIBS) -tfdmdv_SOURCES = tfdmdv.c ../src/fdmdv.c ../src/fft.c ../src/kiss_fft.c +tfdmdv_SOURCES = tfdmdv.c ../src/fdmdv.c ../src/fft.c ../src/kiss_fft.c ../src/octave.c tfdmdv_LDADD = $(lib_LTLIBRARIES) tfdmdv_LDFLAGS = $(LIBS) all: all-am @@ -375,6 +375,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lpc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/octave.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phase.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postfilter.Po@am__quote@ @@ -705,6 +706,20 @@ fdmdv.obj: ../src/fdmdv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fdmdv.obj `if test -f '../src/fdmdv.c'; then $(CYGPATH_W) '../src/fdmdv.c'; else $(CYGPATH_W) '$(srcdir)/../src/fdmdv.c'; fi` +octave.o: ../src/octave.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT octave.o -MD -MP -MF "$(DEPDIR)/octave.Tpo" -c -o octave.o `test -f '../src/octave.c' || echo '$(srcdir)/'`../src/octave.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/octave.Tpo" "$(DEPDIR)/octave.Po"; else rm -f "$(DEPDIR)/octave.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../src/octave.c' object='octave.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o octave.o `test -f '../src/octave.c' || echo '$(srcdir)/'`../src/octave.c + +octave.obj: ../src/octave.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT octave.obj -MD -MP -MF "$(DEPDIR)/octave.Tpo" -c -o octave.obj `if test -f '../src/octave.c'; then $(CYGPATH_W) '../src/octave.c'; else $(CYGPATH_W) '$(srcdir)/../src/octave.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/octave.Tpo" "$(DEPDIR)/octave.Po"; else rm -f "$(DEPDIR)/octave.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../src/octave.c' object='octave.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o octave.obj `if test -f '../src/octave.c'; then $(CYGPATH_W) '../src/octave.c'; else $(CYGPATH_W) '$(srcdir)/../src/octave.c'; fi` + mostlyclean-libtool: -rm -f *.lo diff --git a/codec2-dev/unittest/tfdmdv.c b/codec2-dev/unittest/tfdmdv.c index e502088e..63370014 100644 --- a/codec2-dev/unittest/tfdmdv.c +++ b/codec2-dev/unittest/tfdmdv.c @@ -126,7 +126,7 @@ int main(int argc, char *argv[]) fdm_downconvert(rx_baseband, rx_fdm_fcorr, fdmdv->phase_rx, fdmdv->freq, nin); rx_filter(rx_filt, rx_baseband, fdmdv->rx_filter_memory, nin); rx_timing = rx_est_timing(rx_symbols, rx_filt, rx_baseband, fdmdv->rx_filter_mem_timing, env, fdmdv->rx_baseband_mem_timing, nin); - foff_fine = qpsk_to_bits(rx_bits, &sync_bit, fdmdv->prev_rx_symbols, rx_symbols); + foff_fine = qpsk_to_bits(rx_bits, &sync_bit, fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols); memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP)*(NC+1)); fdmdv->coarse_fine = freq_state(sync_bit, &fdmdv->fest_state); fdmdv->foff -= TRACK_COEFF*foff_fine; @@ -218,7 +218,7 @@ int main(int argc, char *argv[]) octave_save_int(fout, "coarse_fine_log_c", coarse_fine_log, 1, FRAMES); fclose(fout); - codec2_destroy(fdmdv); + fdmdv_destroy(fdmdv); return 0; }