if ((strcmp(ofdm->sync_state,"synced") == 0) || (strcmp(ofdm->sync_state,"trial") == 0) ) {
ofdm_demod(ofdm, rx_bits, rxbuf_in);
- fdmdv_get_demod_stats(f->fdmdv, &f->stats);
f->sync = 1;
+ ofdm_get_demod_stats(f->ofdm, &f->stats);
f->snr_est = f->stats.snr_est;
-
+
assert((OFDM_NUWBITS+OFDM_NTXTBITS+coded_bits_per_frame) == OFDM_BITSPERFRAME);
/* now we need to buffer for de-interleaving -------------------------------------*/
/* no valid FreeDV signal - squelch output */
-
- int sync = !strcmp(ofdm->sync_state_interleaver,"synced") || !strcmp(ofdm->sync_state_interleaver,"synced");
+
+ int sync = !strcmp(ofdm->sync_state,"synced") || !strcmp(ofdm->sync_state,"trial");
if (!sync) {
- if (f->squelch_en) {
- *valid = 0;
- }
+ if (f->squelch_en) {
+ *valid = 0;
+ }
+ f->snr_est = 0.0;
f->snr_est = 0.0;
}
- fprintf(stderr, "sync: %d valid: %d SNR: %3.2f\n", sync, *valid, f->snr_est);
+
+ //fprintf(stderr, "sync: %d valid: %d snr: %3.2f\n", f->sync, *valid, f->snr_est);
return nout;
}
if ((f->mode == FREEDV_MODE_700) || (f->mode == FREEDV_MODE_700B) || (f->mode == FREEDV_MODE_700C)) {
cohpsk_get_demod_stats(f->cohpsk, stats);
}
+
if (f->mode == FREEDV_MODE_700D) {
ofdm_get_demod_stats(f->ofdm, stats);
}
+
#endif
}
fwrite(speech_out, sizeof(short), nout, fout);
freedv_get_modem_stats(freedv, &sync, &snr_est);
- freedv_get_modem_extended_stats(freedv,&stats);
+ freedv_get_modem_extended_stats(freedv, &stats);
int total_bit_errors = freedv_get_total_bit_errors(freedv);
clock_offset = stats.clock_offset;
#include "kiss_fft.h"
#define MODEM_STATS_NC_MAX 20
-#define MODEM_STATS_NR_MAX 10
+#define MODEM_STATS_NR_MAX 8
#define MODEM_STATS_ET_MAX 8
#define MODEM_STATS_NSPEC 512
#define MODEM_STATS_MAX_F_HZ 4000
float snr_est = 10*log10((ofdm->sig_var/ofdm->noise_var)*OFDM_NC*OFDM_RS/3000);
stats->snr_est = 0.9*stats->snr_est + 0.1*snr_est;
-
- stats->sync = !strcpy(ofdm->sync_state, "synced") || !strcpy(ofdm->sync_state, "trial");
+ stats->sync = !strcmp(ofdm->sync_state, "synced") || !strcmp(ofdm->sync_state, "trial");
+ //fprintf(stderr, "sync: %d %s\n", stats->sync, ofdm->sync_state);
stats->foff = ofdm->foff_est_hz;
stats->rx_timing = ofdm->timing_est;
stats->clock_offset = 0.0; /* TODO: work out sample clock offset */
- assert(OFDM_ROWSPERFRAME <= MODEM_STATS_NR_MAX);
+ assert(OFDM_ROWSPERFRAME < MODEM_STATS_NR_MAX);
stats->nr = OFDM_ROWSPERFRAME;
for(c=0; c<OFDM_NC; c++) {
for (r=0; r<OFDM_ROWSPERFRAME; r++) {