Added FFT printout to fsk_demod JSON debug/stat stream
authorbaobrien <baobrien@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 5 Nov 2016 05:49:52 +0000 (05:49 +0000)
committerbaobrien <baobrien@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 5 Nov 2016 05:49:52 +0000 (05:49 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2900 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/notes_and_todo_tdma
codec2-dev/src/fsk.c
codec2-dev/src/fsk_demod.c

index 8047b126b1e33a64c61cd86a6eb97b57aefbb030..7830df912b16524dc01e8d95415ef120bbfee701 100644 (file)
@@ -38,7 +38,7 @@ TDMA_sched_tx(slot_n,tx_frame,tx_samps_out,tx_time_out) - Schedule a frame trans
     
 Random TODOs:
 [ ] Deframer work:
-  [ ] Framer for shorter frames (minus padding bits)
+  [x] Framer for shorter frames (minus padding bits)
   [ ] New deframer for extracting burst frames and keeping slot sync state
         [ ] Looks +/- a few symbols in a demodulated chunk instead of pulling frames out of a steram
         [ ] Provides frame location feedback to the TDMA part for coarse sync tracking
index 14fec2bf728b9dcff56fe53f6127df86fa3e4698..7f6a15c21059df9130c159466315b337eb715e70 100644 (file)
@@ -556,7 +556,9 @@ void fsk2_demod(struct FSK *fsk, uint8_t rx_bits[], float rx_sd[], float fsk_in[
     int i,j,dc_i,cbuf_i;
     float ft1;
     int nstash = fsk->nstash;
+    
     COMP *f1_int, *f2_int;
+    
     COMP t1,t2;
     COMP phi1_c = fsk->phi1_c;
     COMP phi2_c = fsk->phi2_c;
@@ -567,7 +569,9 @@ void fsk2_demod(struct FSK *fsk, uint8_t rx_bits[], float rx_sd[], float fsk_in[
     float rx_timing,norm_rx_timing,old_norm_rx_timing,d_norm_rx_timing,appm;
     int using_old_samps;
     float *sample_src;
+    
     COMP *f1_intbuf,*f2_intbuf;
+    
     float f_est[M],fc_avg,fc_tx;
     float meanebno,stdebno,eye_max;
     int neyesamp,neyeoffset;
index 69a91cf23f15183367cea6074787d0a5e9688824..e51d6ba129384d4764971a398a676df9851af4b3 100644 (file)
@@ -44,7 +44,7 @@ int main(int argc,char *argv[]){
     uint8_t *bitbuf;
     int16_t *rawbuf;
     float *modbuf,*sdbuf;
-    int i,j;
+    int i,j,Ndft;
     int soft_dec_mode = 0;
     stats_loop = 0;
     
@@ -130,23 +130,35 @@ int main(int argc,char *argv[]){
         }
         
         if(enable_stats && stats_ctr <= 0){
+           /* Print standard 2FSK stats */
             fprintf(stderr,"{\"EbNodB\": %2.2f,\t\"ppm\": %d,",stats.snr_est,(int)fsk->ppm);
             fprintf(stderr,"\t\"f1_est\":%.1f,\t\"f2_est\":%.1f",fsk->f1_est,fsk->f2_est);
+           /* Print 4FSK stats if in 4FSK mode */
             if(fsk->mode == 4){
                 fprintf(stderr,",\t\"f3_est\":%.1f,\t\"f4_est\":%.1f",fsk->f3_est,fsk->f4_est);
             }
+           
+           /* Print the eye diagram */
             fprintf(stderr,",\t\"eye_diagram\":[");
             for(i=0;i<stats.neyetr;i++){
                 fprintf(stderr,"[");
                 for(j=0;j<stats.neyesamp;j++){
-                    fprintf(stderr,"%f",stats.rx_eye[i][j]);
+                    fprintf(stderr,"%f ",stats.rx_eye[i][j]);
                     if(j<stats.neyesamp-1) fprintf(stderr,",");
                 }
                 fprintf(stderr,"]");
                 if(i<stats.neyetr-1) fprintf(stderr,",");
             }
-            
-            fprintf(stderr,"]}\n");
+            fprintf(stderr,"],\n");
+           
+           /* Print a sample of the FFT from the freq estimator */
+           fprintf(stderr,"\"samp_fft\":[");
+           Ndft = fsk->Ndft/2;
+           for(i=0; i<Ndft; i++){
+               fprintf(stderr,"%f ",(fsk->fft_est)[i]);
+               if(i<Ndft-1) fprintf(stderr,",");
+           }
+           fprintf(stderr,"]}\n");
             stats_ctr = stats_loop;
         }
         stats_ctr--;