From e02ef2c0a534bec50267e2dc6bec42b4de062c36 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 4 Apr 2024 06:36:56 +1030 Subject: EsNo supplied to LDPC dec now a config param --- src/freedv_2020.c | 3 +-- src/freedv_700.c | 2 +- src/ofdm.c | 3 +++ src/ofdm_internal.h | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/freedv_2020.c b/src/freedv_2020.c index f1dee28..4a54b5b 100644 --- a/src/freedv_2020.c +++ b/src/freedv_2020.c @@ -229,8 +229,7 @@ int freedv_comprx_2020(struct freedv *f, COMP demod_in[]) { f->sync = 0; - // TODO: should be higher for 2020? - float EsNo = 3.0; + float EsNo = pow(10.0, ofdm->EsNodB / 10); /* looking for modem sync */ diff --git a/src/freedv_700.c b/src/freedv_700.c index a7d7aac..8ab0cbb 100644 --- a/src/freedv_700.c +++ b/src/freedv_700.c @@ -447,7 +447,7 @@ int freedv_comp_short_rx_ofdm(struct freedv *f, void *demod_in_8kHz, assert((demod_in_is_short == 0) || (demod_in_is_short == 1)); int rx_status = 0; - float EsNo = 3.0; /* further work: estimate this properly from signal */ + float EsNo = pow(10.0, ofdm->EsNodB / 10); f->sync = 0; /* looking for OFDM modem sync */ diff --git a/src/ofdm.c b/src/ofdm.c index ba22f3f..8f0953b 100644 --- a/src/ofdm.c +++ b/src/ofdm.c @@ -190,6 +190,7 @@ struct OFDM *ofdm_create(const struct OFDM_CONFIG *config) { ofdm->state_machine = "voice1"; ofdm->edge_pilots = 1; ofdm->codename = "HRA_112_112"; + ofdm->EsNodB = 3.0; ofdm->amp_est_mode = 0; ofdm->tx_bpf_en = true; ofdm->rx_bpf_en = false; @@ -224,6 +225,7 @@ struct OFDM *ofdm_create(const struct OFDM_CONFIG *config) { ofdm->state_machine = config->state_machine; ofdm->edge_pilots = config->edge_pilots; ofdm->codename = config->codename; + ofdm->EsNodB = config->EsNodB; ofdm->amp_est_mode = config->amp_est_mode; ofdm->tx_bpf_en = config->tx_bpf_en; ofdm->rx_bpf_en = config->rx_bpf_en; @@ -273,6 +275,7 @@ struct OFDM *ofdm_create(const struct OFDM_CONFIG *config) { ofdm->config.state_machine = ofdm->state_machine; ofdm->config.edge_pilots = ofdm->edge_pilots; ofdm->config.codename = ofdm->codename; + ofdm->config.EsNodB = ofdm->EsNodB; ofdm->config.amp_est_mode = ofdm->amp_est_mode; ofdm->config.tx_bpf_en = ofdm->tx_bpf_en; ofdm->config.rx_bpf_en = ofdm->rx_bpf_en; diff --git a/src/ofdm_internal.h b/src/ofdm_internal.h index 8007934..1da990b 100644 --- a/src/ofdm_internal.h +++ b/src/ofdm_internal.h @@ -108,6 +108,7 @@ struct OFDM_CONFIG { char *data_mode; float fmin; float fmax; + float EsNodB; /* EsNo est used for LDPC decoder */ }; struct OFDM { @@ -248,6 +249,7 @@ struct OFDM { detector */ char *codename; + float EsNodB; /* EsNo est used for LDPC decoder */ char *state_machine; }; -- cgit v1.2.3