From aaa9b2f15d1d73ba9e35d6515411d26f582f6338 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Mon, 23 Apr 2012 22:09:52 +0000 Subject: [PATCH] removed ((unused)) for MSVC compat, we will need to find another way to handle compiler warnings git-svn-id: https://svn.code.sf.net/p/freetel/code@377 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/fdmdv.c | 114 +++++++++++++++++++++++++++++++- codec2-dev/src/fdmdv_internal.h | 12 +++- codec2-dev/src/nlp.c | 6 +- codec2-dev/src/quantise.c | 12 ++-- codec2-dev/src/sine.c | 2 +- 5 files changed, 133 insertions(+), 13 deletions(-) diff --git a/codec2-dev/src/fdmdv.c b/codec2-dev/src/fdmdv.c index 13f6c20f..3f691d8f 100644 --- a/codec2-dev/src/fdmdv.c +++ b/codec2-dev/src/fdmdv.c @@ -166,10 +166,19 @@ struct FDMDV *fdmdv_create(void) f->phase_tx[c].real = cos(2.0*PI*c/(NC+1)); f->phase_tx[c].imag = sin(2.0*PI*c/(NC+1)); + f->phase_rx[c].real = 1.0; f->phase_rx[c].imag = 0.0; - } + for(k=0; krx_filter_mem_timing[c][k].real = 0.0; + f->rx_filter_mem_timing[c][k].imag = 0.0; + } + for(k=0; krx_baseband_mem_timing[c][k].real = 0.0; + f->rx_baseband_mem_timing[c][k].imag = 0.0; + } + } /* Set up frequency of each carrier */ @@ -726,3 +735,106 @@ void rx_filter(COMP rx_filt[NC+1][P+1], COMP rx_baseband[NC+1][M+M/P], COMP rx_f assert(j <= (P+1)); /* check for any over runs */ } + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: rx_est_timing() + AUTHOR......: David Rowe + DATE CREATED: 23/4/2012 + + Estimate optimum timing offset, re-filter receive symbols at optimum + timing estimate. + +\*---------------------------------------------------------------------------*/ + +float rx_est_timing(COMP rx_symbols[], + COMP rx_filt[NC+1][P+1], + COMP rx_baseband[NC+1][M+M/P], + COMP rx_filter_mem_timing[NC+1][NT*P], + float env[], + COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING], + int nin) +{ + int c,i,j,k; + int adjust, s; + COMP x, phase, freq; + float rx_timing; + + /* + nin adjust + -------------------------------- + 120 -1 (one less rate P sample) + 160 0 (nominal) + 200 1 (one more rate P sample) + */ + + adjust = P - nin*P/M; + + /* update buffer of NT rate P filtered symbols */ + + for(c=0; c M) + rx_timing -= M; + if (rx_timing < -M) + rx_timing += M; + + /* rx_filt_mem_timing contains M + Nfilter + M samples of the + baseband signal at rate M this enables us to resample the + filtered rx symbol with M sample precision once we have + rx_timing */ + + for(c=0; c