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;
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;
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;
}
}
}
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];
}*/