added test to confirm pilot coeff match to avoid getting caught by that again
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 15 Jun 2014 04:05:12 +0000 (04:05 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 15 Jun 2014 04:05:12 +0000 (04:05 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1652 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/tfdmdv.m
codec2-dev/unittest/tfdmdv.c

index ed0368ebc126cd4381f1765a690366980c3837ce..346ba0ec26760c108ccda93b3a5a8bc0cd29e4fb 100644 (file)
@@ -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');
index 707cd19b1710599fa6b040a758add0e9ccb3536f..07eb896ff1ba2a4a3a660558538d0bedb67c7773 100644 (file)
 #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; c<NC+1; c++)
+       memcpy(&tx_symbols_log[(FDMDV_NC+1)*f], tx_symbols, sizeof(COMP)*(FDMDV_NC+1));
+       for(c=0; c<FDMDV_NC+1; c++)
            for(i=0; i<M; i++)
                tx_baseband_log[c][f*M+i] = tx_baseband[c][i]; 
        memcpy(&tx_fdm_log[M*f], tx_fdm, sizeof(COMP)*M);
@@ -222,13 +227,13 @@ int main(int argc, char *argv[])
        memcpy(&env_log[NT*P*f], env, sizeof(float)*NT*P);
        rx_timing_log[f] = rx_timing;
        nin_log[f] = nin;
-       for(c=0; c<NC+1; c++)
+       for(c=0; c<FDMDV_NC+1; c++)
            rx_symbols_log[c][f] = rx_symbols[c];
        
        /* qpsk_to_bits() */
 
        memcpy(&rx_bits_log[FDMDV_BITS_PER_FRAME*f], rx_bits, sizeof(int)*FDMDV_BITS_PER_FRAME);
-       for(c=0; c<NC+1; c++) {
+       for(c=0; c<FDMDV_NC+1; c++) {
            sig_est_log[c][f] = fdmdv->sig_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);