txt working with 700D
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 30 Apr 2018 08:40:23 +0000 (08:40 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 30 Apr 2018 08:40:23 +0000 (08:40 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3538 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/freedv_api.c
codec2-dev/src/freedv_tx.c
codec2-dev/src/interldpc.c

index 8bc36328ae6bb5d7e58d0f4884f98385c922b079..f348094b9477e2ec370836ea518c5c92de0cb2b9 100644 (file)
@@ -1776,19 +1776,11 @@ static int freedv_comprx_700d(struct freedv *f, COMP demod_in_8kHz[], int *valid
         /* If modem is synced we can demodulate txt bits, these are
            uninterleaved, uncoded QPSK symbols near the start of each
            modem frame */
-
-        short txt_bits[OFDM_NTXTBITS];
-        int   bits[2];
-        int   uw_offset = OFDM_NUWBITS/OFDM_BPS;
-        for(i=0; i<OFDM_NTXTBITS/OFDM_BPS; i++) {
-            complex float s = codeword_symbols[uw_offset+i].real + I*codeword_symbols[uw_offset+i].imag;
-            qpsk_demod(s, bits);
-            txt_bits[OFDM_BPS*i]   = bits[1];
-            txt_bits[OFDM_BPS*i+1] = bits[0];
-        }
         
-        for(k=0; k<OFDM_NTXTBITS; k++)  { 
-            n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, &txt_bits[k], 1, 1);
+        for(k=0, i=OFDM_NUWBITS; k<OFDM_NTXTBITS; k++,i++)  { 
+            //fprintf(stderr, "txt_bits[%d] = %d\n", k, rx_bits[i]);
+            short arx_bit = rx_bits[i];
+            n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, &arx_bit, 1, 1);
             if (n_ascii && (f->freedv_put_next_rx_char != NULL)) {
                 (*f->freedv_put_next_rx_char)(f->callback_state, ascii_out);
             }
index b180486a93d1bb4bb4c7782d8aab60df8bb53e8d..adbd2f4593e0c55d05e41d392096b65572b70bf0 100644 (file)
@@ -44,6 +44,8 @@ char my_get_next_tx_char(void *callback_state) {
     struct my_callback_state* pstate = (struct my_callback_state*)callback_state;
     char  c = *pstate->ptx_str++;
 
+    //fprintf(stderr, "my_get_next_tx_char: %c\n", c);
+
     if (*pstate->ptx_str == 0) {
         pstate->ptx_str = pstate->tx_str;
     }
index eb1c9d1c9330e4ee126a1f7a707e56c6b82a7e4b..e3da534cb1c89cc0bff6aa9ac34f73a8f1a8ccaa 100644 (file)
@@ -217,9 +217,9 @@ void ofdm_ldpc_interleave_tx(struct OFDM *ofdm, struct LDPC *ldpc, complex float
     }
     gp_interleave_comp(coded_symbols_inter, coded_symbols, interleave_frames*coded_syms_per_frame);
     for (j=0; j<interleave_frames; j++) {            
+        /* todo: we don't need to build modulated UW every time, just txt bits */
+        build_modulated_uw(ofdm, tx_symbols, &txt_bits[OFDM_NTXTBITS*j]);
         for(i=0; i<coded_syms_per_frame; i++) {
-            /* todo: we don't need to build modulated UW every time, just txt bits */
-            build_modulated_uw(ofdm, tx_symbols, &txt_bits[OFDM_NTXTBITS*j]);
             tx_symbols[(OFDM_NUWBITS+OFDM_NTXTBITS)/OFDM_BPS+i] = coded_symbols_inter[j*coded_syms_per_frame+i].real
                 + I * coded_symbols_inter[j*coded_syms_per_frame+i].imag;
         }
@@ -241,6 +241,7 @@ void build_modulated_uw(struct OFDM *ofdm, complex float tx_symbols[], uint8_t t
     /* clear txt bits for now, they can be added in later */
     for(j=0; j<OFDM_NTXTBITS; j++,i++) {
         uw_txt_bits[i] = txt_bits[j];
+        //fprintf(stderr, "txt_bits[%d] = %d\n", j, txt_bits[j]);
     }    
     qpsk_modulate_frame(uw_txt_syms, uw_txt_bits, (OFDM_NUWBITS+OFDM_NTXTBITS)/OFDM_BPS);
     for(i=0; i<(OFDM_NUWBITS+OFDM_NTXTBITS)/OFDM_BPS; i++) {