From 44a693fb94943fbe2c443ac619751d26f3c2cd39 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sun, 15 Jun 2014 04:05:12 +0000 Subject: [PATCH] added test to confirm pilot coeff match to avoid getting caught by that again git-svn-id: https://svn.code.sf.net/p/freetel/code@1652 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/octave/tfdmdv.m | 1 + codec2-dev/unittest/tfdmdv.c | 46 ++++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/codec2-dev/octave/tfdmdv.m b/codec2-dev/octave/tfdmdv.m index ed0368eb..346ba0ec 100644 --- a/codec2-dev/octave/tfdmdv.m +++ b/codec2-dev/octave/tfdmdv.m @@ -289,6 +289,7 @@ check(tx_symbols_log, tx_symbols_log_c, 'tx_symbols'); check(tx_baseband_log, tx_baseband_log_c, 'tx_baseband'); check(tx_fdm_log, tx_fdm_log_c, 'tx_fdm'); check(pilot_lut, pilot_lut_c, 'pilot_lut'); +check(pilot_coeff, pilot_coeff_c, 'pilot_coeff'); check(pilot_baseband1_log, pilot_baseband1_log_c, 'pilot lpf1'); check(pilot_baseband2_log, pilot_baseband2_log_c, 'pilot lpf2'); check(S1_log, S1_log_c, 'S1'); diff --git a/codec2-dev/unittest/tfdmdv.c b/codec2-dev/unittest/tfdmdv.c index 707cd19b..07eb896f 100644 --- a/codec2-dev/unittest/tfdmdv.c +++ b/codec2-dev/unittest/tfdmdv.c @@ -42,11 +42,13 @@ #define FRAMES 25 #define CHANNEL_BUF_SIZE (10*M) +extern float pilot_coeff[]; + int main(int argc, char *argv[]) { struct FDMDV *fdmdv; int tx_bits[FDMDV_BITS_PER_FRAME]; - COMP tx_symbols[NC+1]; + COMP tx_symbols[FDMDV_NC+1]; COMP tx_baseband[NC+1][M]; COMP tx_fdm[M]; float channel[CHANNEL_BUF_SIZE]; @@ -59,13 +61,13 @@ int main(int argc, char *argv[]) COMP rx_filt[NC+1][P+1]; float rx_timing; float env[NT*P]; - COMP rx_symbols[NC+1]; + COMP rx_symbols[FDMDV_NC+1]; int rx_bits[FDMDV_BITS_PER_FRAME]; float foff_fine; int sync_bit, reliable_sync_bit; int tx_bits_log[FDMDV_BITS_PER_FRAME*FRAMES]; - COMP tx_symbols_log[(NC+1)*FRAMES]; + COMP tx_symbols_log[(FDMDV_NC+1)*FRAMES]; COMP tx_baseband_log[(NC+1)][M*FRAMES]; COMP tx_fdm_log[M*FRAMES]; COMP pilot_baseband1_log[NPILOTBASEBAND*FRAMES]; @@ -82,9 +84,9 @@ int main(int argc, char *argv[]) int rx_filt_log_col_index; float env_log[NT*P*FRAMES]; float rx_timing_log[FRAMES]; - COMP rx_symbols_log[NC+1][FRAMES]; - float sig_est_log[NC+1][FRAMES]; - float noise_est_log[NC+1][FRAMES]; + COMP rx_symbols_log[FDMDV_NC+1][FRAMES]; + float sig_est_log[FDMDV_NC+1][FRAMES]; + float noise_est_log[FDMDV_NC+1][FRAMES]; int rx_bits_log[FDMDV_BITS_PER_FRAME*FRAMES]; float foff_fine_log[FRAMES]; int sync_bit_log[FRAMES]; @@ -111,7 +113,7 @@ int main(int argc, char *argv[]) fdmdv_get_test_bits(fdmdv, tx_bits); bits_to_dqpsk_symbols(tx_symbols, FDMDV_NC, fdmdv->prev_tx_symbols, tx_bits, &fdmdv->tx_pilot_bit, 0); - memcpy(fdmdv->prev_tx_symbols, tx_symbols, sizeof(COMP)*(NC+1)); + memcpy(fdmdv->prev_tx_symbols, tx_symbols, sizeof(COMP)*(FDMDV_NC+1)); tx_filter(tx_baseband, FDMDV_NC, tx_symbols, fdmdv->tx_filter_memory); fdm_upconvert(tx_fdm, FDMDV_NC, tx_baseband, fdmdv->phase_tx, fdmdv->freq); @@ -128,6 +130,7 @@ int main(int argc, char *argv[]) if ((f !=2) && (f != 3)) nin = M; */ + nin = M; /* add M tx samples to end of buffer */ assert((channel_count + M) < CHANNEL_BUF_SIZE); @@ -155,9 +158,11 @@ int main(int argc, char *argv[]) /* freq offset estimation and correction */ foff_coarse = rx_est_freq_offset(fdmdv, rx_fdm, nin); + foff_coarse = 0; + fdmdv->sync = 0; if (fdmdv->sync == 0) fdmdv->foff = foff_coarse; - fdmdv_freq_shift(rx_fdm_fcorr, rx_fdm, fdmdv->foff, &fdmdv->foff_rect, &fdmdv->foff_phase_rect, nin); + fdmdv_freq_shift(rx_fdm_fcorr, rx_fdm, foff_coarse, &fdmdv->foff_phase_rect, nin); /* baseband processing */ @@ -166,7 +171,7 @@ int main(int argc, char *argv[]) rx_timing = rx_est_timing(rx_symbols, FDMDV_NC, 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_NC, fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols, 0); snr_update(fdmdv->sig_est, fdmdv->noise_est, FDMDV_NC, fdmdv->phase_difference); - memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP)*(NC+1)); + memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP)*(FDMDV_NC+1)); next_nin = M; @@ -184,8 +189,8 @@ int main(int argc, char *argv[]) \*---------------------------------------------------------*/ memcpy(&tx_bits_log[FDMDV_BITS_PER_FRAME*f], tx_bits, sizeof(int)*FDMDV_BITS_PER_FRAME); - memcpy(&tx_symbols_log[(NC+1)*f], tx_symbols, sizeof(COMP)*(NC+1)); - for(c=0; csig_est[c]; noise_est_log[c][f] = fdmdv->noise_est[c]; } @@ -248,25 +253,26 @@ int main(int argc, char *argv[]) assert(fout != NULL); fprintf(fout, "# Created by tfdmdv.c\n"); octave_save_int(fout, "tx_bits_log_c", tx_bits_log, 1, FDMDV_BITS_PER_FRAME*FRAMES); - octave_save_complex(fout, "tx_symbols_log_c", tx_symbols_log, 1, (NC+1)*FRAMES, (NC+1)*FRAMES); - octave_save_complex(fout, "tx_baseband_log_c", (COMP*)tx_baseband_log, (NC+1), M*FRAMES, M*FRAMES); + octave_save_complex(fout, "tx_symbols_log_c", tx_symbols_log, 1, (FDMDV_NC+1)*FRAMES, (FDMDV_NC+1)*FRAMES); + octave_save_complex(fout, "tx_baseband_log_c", (COMP*)tx_baseband_log, (FDMDV_NC+1), M*FRAMES, M*FRAMES); octave_save_complex(fout, "tx_fdm_log_c", (COMP*)tx_fdm_log, 1, M*FRAMES, M*FRAMES); octave_save_complex(fout, "pilot_lut_c", (COMP*)fdmdv->pilot_lut, 1, NPILOT_LUT, NPILOT_LUT); octave_save_complex(fout, "pilot_baseband1_log_c", pilot_baseband1_log, 1, NPILOTBASEBAND*FRAMES, NPILOTBASEBAND*FRAMES); octave_save_complex(fout, "pilot_baseband2_log_c", pilot_baseband2_log, 1, NPILOTBASEBAND*FRAMES, NPILOTBASEBAND*FRAMES); + octave_save_float(fout, "pilot_coeff_c", pilot_coeff, 1, NPILOTCOEFF, NPILOTCOEFF); octave_save_complex(fout, "pilot_lpf1_log_c", pilot_lpf1_log, 1, NPILOTLPF*FRAMES, NPILOTLPF*FRAMES); octave_save_complex(fout, "pilot_lpf2_log_c", pilot_lpf2_log, 1, NPILOTLPF*FRAMES, NPILOTLPF*FRAMES); octave_save_complex(fout, "S1_log_c", S1_log, 1, MPILOTFFT*FRAMES, MPILOTFFT*FRAMES); octave_save_complex(fout, "S2_log_c", S2_log, 1, MPILOTFFT*FRAMES, MPILOTFFT*FRAMES); octave_save_float(fout, "foff_log_c", foff_log, 1, FRAMES, FRAMES); octave_save_float(fout, "foff_coarse_log_c", foff_coarse_log, 1, FRAMES, FRAMES); - octave_save_complex(fout, "rx_baseband_log_c", (COMP*)rx_baseband_log, (NC+1), rx_baseband_log_col_index, (M+M/P)*FRAMES); - octave_save_complex(fout, "rx_filt_log_c", (COMP*)rx_filt_log, (NC+1), rx_filt_log_col_index, (P+1)*FRAMES); + octave_save_complex(fout, "rx_baseband_log_c", (COMP*)rx_baseband_log, (FDMDV_NC+1), rx_baseband_log_col_index, (M+M/P)*FRAMES); + octave_save_complex(fout, "rx_filt_log_c", (COMP*)rx_filt_log, (FDMDV_NC+1), rx_filt_log_col_index, (P+1)*FRAMES); octave_save_float(fout, "env_log_c", env_log, 1, NT*P*FRAMES, NT*P*FRAMES); octave_save_float(fout, "rx_timing_log_c", rx_timing_log, 1, FRAMES, FRAMES); - octave_save_complex(fout, "rx_symbols_log_c", (COMP*)rx_symbols_log, (NC+1), FRAMES, FRAMES); - octave_save_float(fout, "sig_est_log_c", (float*)sig_est_log, (NC+1), FRAMES, FRAMES); - octave_save_float(fout, "noise_est_log_c", (float*)noise_est_log, (NC+1), FRAMES, FRAMES); + octave_save_complex(fout, "rx_symbols_log_c", (COMP*)rx_symbols_log, (FDMDV_NC+1), FRAMES, FRAMES); + octave_save_float(fout, "sig_est_log_c", (float*)sig_est_log, (FDMDV_NC+1), FRAMES, FRAMES); + octave_save_float(fout, "noise_est_log_c", (float*)noise_est_log, (FDMDV_NC+1), FRAMES, FRAMES); octave_save_int(fout, "rx_bits_log_c", rx_bits_log, 1, FDMDV_BITS_PER_FRAME*FRAMES); octave_save_float(fout, "foff_fine_log_c", foff_fine_log, 1, FRAMES, FRAMES); octave_save_int(fout, "sync_bit_log_c", sync_bit_log, 1, FRAMES); -- 2.25.1