From 15222ee766e909f8d5f626029b7e2fb733e3ce1d Mon Sep 17 00:00:00 2001 From: baobrien Date: Sun, 13 Mar 2016 18:59:31 +0000 Subject: [PATCH] EbNodB estimate smoother now; fsk_demod stat printing now rate limited git-svn-id: https://svn.code.sf.net/p/freetel/code@2738 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/fsk.c | 3 ++- codec2-dev/src/fsk_demod.c | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/codec2-dev/src/fsk.c b/codec2-dev/src/fsk.c index 77268ac0..366ba3fa 100644 --- a/codec2-dev/src/fsk.c +++ b/codec2-dev/src/fsk.c @@ -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; diff --git a/codec2-dev/src/fsk_demod.c b/codec2-dev/src/fsk_demod.c index 947ac1b5..d3db0868 100644 --- a/codec2-dev/src/fsk_demod.c +++ b/codec2-dev/src/fsk_demod.c @@ -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;iNbits;i++){ t = (int)bitbuf[i]; }*/ -- 2.25.1