EbNodB estimate smoother now; fsk_demod stat printing now rate limited
authorbaobrien <baobrien@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 13 Mar 2016 18:59:31 +0000 (18:59 +0000)
committerbaobrien <baobrien@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 13 Mar 2016 18:59:31 +0000 (18:59 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2738 01035d8c-6547-0410-b346-abe4f91aad63

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

index 77268ac0b1ddd4c7c366bca97445afe5a179152b..366ba3fa6e5c86e9e65004a0c8db3c758fe41774 100644 (file)
@@ -757,7 +757,8 @@ void fsk2_demod(struct FSK *fsk, uint8_t rx_bits[], float fsk_in[]){
         fsk->stats->clock_offset = fsk->ppm;
         
         /* Calculate and save SNR from EbNodB estimate */
-        fsk->stats->snr_est = fsk->EbNodB + 10*log10f(((float)Rs)/((float)Rs*M));
+        fsk->stats->snr_est = .5*fsk->stats->snr_est + .5*fsk->EbNodB;//+ 10*log10f(((float)Rs)/((float)Rs*M));
+        
         
         /* Save rx timing */
         fsk->stats->rx_timing = (float)rx_timing;
index 947ac1b5ac0360721587c89e303a3712bc16392d..d3db0868b1186741e64ac873fcb2a01f82cde8e3 100644 (file)
@@ -36,7 +36,8 @@
 int main(int argc,char *argv[]){
     struct FSK *fsk;
     struct MODEM_STATS stats;
-    int Fs,Rs,M,P;
+    int Fs,Rs,M,P,stats_ctr,stats_loop;
+    float loop_time;
     int enable_stats = 0;
     int hbr = 0;
     FILE *fin,*fout;
@@ -90,10 +91,14 @@ int main(int argc,char *argv[]){
         goto cleanup;
     }
     
+    /* Check for and enable stat printing */
     if(argc>7){
        if(strcmp(argv[7],"S")==0){
            enable_stats = 1;
            fsk_setup_modem_stats(fsk,&stats);
+           loop_time = ((float)fsk_nin(fsk))/((float)Fs);
+           stats_loop = (int)(.125/loop_time);
+           stats_ctr = 0;
        }
     }
     
@@ -109,15 +114,16 @@ int main(int argc,char *argv[]){
        }
         fsk_demod(fsk,bitbuf,modbuf);
        
-       if(enable_stats){
-           fprintf(stderr,"{\"EbNodB\": %2.2f,\t\"ppm\": %d",fsk->EbNodB,(int)fsk->ppm);
+       if(enable_stats && stats_ctr <= 0){
+           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);
            if(fsk->mode == 4){
                fprintf(stderr,",\t\"f3_est\":%.1f,\t\"f4_est\":%.1f",fsk->f3_est,fsk->f4_est);
            }
            fprintf(stderr,"}\n");
+           stats_ctr = stats_loop;
        }
-       
+       stats_ctr--;
         /*for(i=0;i<fsk->Nbits;i++){
            t = (int)bitbuf[i];
        }*/