summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading/src
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/ce/rx/bitloading/src')
-rw-r--r--cesar/ce/rx/bitloading/src/ber.c37
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c2
-rw-r--r--cesar/ce/rx/bitloading/src/transition.c2
3 files changed, 23 insertions, 18 deletions
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
@@ -20,6 +20,11 @@
#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;
+
}
}
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index 11d14fb614..5853d373d5 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -31,7 +31,7 @@ uint ce_rx_bl_pb_false_factor_ = CE_RX_BL_PB_FALSE_FACTOR;
uint ce_rx_bl_pb_total_factor_ = CE_RX_BL_PB_TOTAL_FACTOR;
uint ce_rx_bl_min_pb_per_frame_ = CE_RX_BL_MIN_PB_PER_FRAME;
uint ce_rx_bl_min_frame_with_high_pb_err_rate_ = CE_RX_BL_MIN_FRAME_WITH_HIGH_PB_ERR_RATE;
-uint ce_rx_bl_ber_lower_bound_ = CE_RX_BL_BER_LOWER_BOUND;
+
/**
* Number of LSB to remove of the BER to compute the BER weighted sum.
diff --git a/cesar/ce/rx/bitloading/src/transition.c b/cesar/ce/rx/bitloading/src/transition.c
index 8e2e01d31f..febbb0d4a8 100644
--- a/cesar/ce/rx/bitloading/src/transition.c
+++ b/cesar/ce/rx/bitloading/src/transition.c
@@ -427,7 +427,7 @@ ce_rx_bl_fsm__TRACKING__data (ce_rx_t *ce_rx,
}
u64 lower_bound = ber_target
- - (ber_target * ce_rx_bl_ber_lower_bound_
+ - (ber_target * ce_rx_bl_ber_conf.lower_bound
/ CE_RX_BL_BER_LOWER_BOUND_UNIT);
/* Get BER sliding means. */
s64 *bsm = bl->ber_sliding_mean;