From d4fdaf44e909e612f284730f796c21f848a8db12 Mon Sep 17 00:00:00 2001 From: Jalil Chemseddine Date: Thu, 11 Oct 2012 16:56:01 +0200 Subject: cesar/ce/rx/bl: create structure for ber configuration, refs #3251 --- cesar/ce/rx/bitloading/src/ber.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'cesar/ce/rx/bitloading/src/ber.c') diff --git a/cesar/ce/rx/bitloading/src/ber.c b/cesar/ce/rx/bitloading/src/ber.c index bdb74ee0cd..2397aa1d68 100644 --- a/cesar/ce/rx/bitloading/src/ber.c +++ b/cesar/ce/rx/bitloading/src/ber.c @@ -19,6 +19,11 @@ #include "ce/rx/bitloading/inc/poly.h" #include "ce/rx/ce_rx_param.h" +/** + * The configuration of the BER module. + */ +ce_rx_bl_ber_conf_t ce_rx_bl_ber_conf; + /** * Default value of margin to apply to BER target. * This value is apparently quantified on 53 bits. @@ -59,12 +64,6 @@ static const u8 ce_rx_bl_ber_consign_degrees_eoc[PHY_FEC_RATE_NB] = CE_RX_BL_BER_CONSIGN_DEGREES_EOC }; -static const u16 -ce_rx_bl_ber_sliding_mean_factor[CE_RX_BL_BER_SLIDING_MEAN_NB] = { - CE_RX_BL_BER_SLIDING_MEAN_FAST_FACTOR, - CE_RX_BL_BER_SLIDING_MEAN_SLOW_FACTOR -}; - const u64 ce_rx_bl_initial_bpt[PHY_FEC_RATE_NB] = { 10 * CE_RX_BL_BPT_QUANT_FACTOR, 10 * CE_RX_BL_BPT_QUANT_FACTOR @@ -206,6 +205,7 @@ ce_rx_bl_ber_sliding_mean_update (ce_rx_bitloading_t *bl, u64 ber) dbg_assert (bl); uint i; + /* First value? */ if (bl->ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_FAST] == -1) { @@ -217,17 +217,22 @@ ce_rx_bl_ber_sliding_mean_update (ce_rx_bitloading_t *bl, u64 ber) } else { - for (i = 0; i < CE_RX_BL_BER_SLIDING_MEAN_NB; i++) - { - /* Update sliding means. */ - bl->ber_sliding_mean[i] - = ((u64) ce_rx_bl_ber_sliding_mean_factor[i] - * bl->ber_sliding_mean[i] + /* Update fast sliding mean. */ + bl->ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_FAST] + = ((u64) ce_rx_bl_ber_conf.sliding_mean_fast_factor + * bl->ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_FAST] + (CE_RX_BL_BER_SLIDING_MEAN_FACTOR_DIV - - ce_rx_bl_ber_sliding_mean_factor[i]) - * ber) - / CE_RX_BL_BER_SLIDING_MEAN_FACTOR_DIV; - } + - ce_rx_bl_ber_conf.sliding_mean_fast_factor) * ber) + / CE_RX_BL_BER_SLIDING_MEAN_FACTOR_DIV; + + /* Update slow sliding mean. */ + bl->ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_SLOW] + = ((u64) ce_rx_bl_ber_conf.sliding_mean_slow_factor + * bl->ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_SLOW] + + (CE_RX_BL_BER_SLIDING_MEAN_FACTOR_DIV + - ce_rx_bl_ber_conf.sliding_mean_slow_factor) * ber) + / CE_RX_BL_BER_SLIDING_MEAN_FACTOR_DIV; + } } -- cgit v1.2.3