summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading/src
diff options
context:
space:
mode:
authorJalil Chemseddine2012-06-12 15:09:42 +0200
committerJalil Chemseddine2012-06-20 15:41:03 +0200
commit792b9ed42008e4d682b3efd4197eca961944fa3e (patch)
treeb994a9d949197395d58f7e050b005b6a661eb6d1 /cesar/ce/rx/bitloading/src
parentfd43428ce1580b21eae6f33a70fffb73db375b5b (diff)
cesar/ce/rx add new tone mask to handle faulty carriers, closes #3095
Add a new tone mask which disable faulty carriers in CE bit-loading computation. This tone mask differs from the general tone mask in the station and is only used in bit-loading.
Diffstat (limited to 'cesar/ce/rx/bitloading/src')
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c10
-rw-r--r--cesar/ce/rx/bitloading/src/common.c3
-rw-r--r--cesar/ce/rx/bitloading/src/initial.c5
3 files changed, 11 insertions, 7 deletions
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index 614c3e0628..948487fa6e 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -255,6 +255,7 @@ tonemap_t *
ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
uint iteration_max,
tonemask_info_t *tonemask,
+ tonemask_info_t *reducedtm,
ce_rx_bitloading_t *bl)
{
/* Check parameters. */
@@ -267,6 +268,7 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
/* Dynamic table size is not possible (because of compiler bug on stack).
* For the moment being we use a define (even if table is too big). */
dbg_assert (tonemask && tonemask->carrier_nb <= PHY_CARRIER_NB);
+ dbg_assert (reducedtm && reducedtm->carrier_nb <= PHY_CARRIER_NB);
ce_rx_bl_ber_impact_t opti[PHY_FEC_RATE_NB][PHY_CARRIER_NB];
u16 opti_cursor[PHY_FEC_RATE_NB];
uint cpt;
@@ -295,19 +297,19 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
{
/* Make the tone map reach the BER consign, no optimization. */
u64 ber_weighted_sum_q49 =
- ce_rx_bl_update_tone_map_under_ber_consign (ber_cur, tonemask,
+ ce_rx_bl_update_tone_map_under_ber_consign (ber_cur, reducedtm,
fec_rate, bl,
tm[fec_rate],
opti[fec_rate],
&tone_en);
/* Sort optimization table. */
- ce_rx_bl_sort_optimization (opti[fec_rate], tonemask->carrier_nb);
+ ce_rx_bl_sort_optimization (opti[fec_rate], reducedtm->carrier_nb);
/* Optimize tone map to reach BER consign. */
opti_cursor[fec_rate] =
ce_rx_bl_update_tone_map_at_ber_consign (ber_cur,
- tonemask,
+ reducedtm,
bl,
tm[fec_rate],
opti[fec_rate],
@@ -326,7 +328,7 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
/* Get new BER consign. */
ber_cur =
ce_rx_bl_ber_pt_bpt (fec_rate,
- tonemask->carrier_nb,
+ reducedtm->carrier_nb,
(tm[fec_rate]->bits_per_symbol *
CE_RX_BL_BPT_QUANT_FACTOR) / tone_en);
}
diff --git a/cesar/ce/rx/bitloading/src/common.c b/cesar/ce/rx/bitloading/src/common.c
index 0b9c933b63..12a68f3311 100644
--- a/cesar/ce/rx/bitloading/src/common.c
+++ b/cesar/ce/rx/bitloading/src/common.c
@@ -36,7 +36,8 @@ ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_BL_WORKING, true);
/* Compute initial tone map. */
- tonemap_t *initial_tm = ce_rx_bl_initial (ts, &sta->ce_rx_bt);
+ tonemap_t *initial_tm = ce_rx_bl_initial (ts, &ce_rx->tonemask,
+ &sta->ce_rx_bt);
/* Dump tone map in trace. */
if (CONFIG_TRACE)
diff --git a/cesar/ce/rx/bitloading/src/initial.c b/cesar/ce/rx/bitloading/src/initial.c
index 82818370d2..30c78869f3 100644
--- a/cesar/ce/rx/bitloading/src/initial.c
+++ b/cesar/ce/rx/bitloading/src/initial.c
@@ -20,9 +20,10 @@
#include "ce/rx/bitloading/inc/initial.h"
tonemap_t *
-ce_rx_bl_initial (tonemask_info_t *tonemask, ce_rx_bitloading_t *bl)
+ce_rx_bl_initial (tonemask_info_t *tonemask, tonemask_info_t *reducedtm,
+ ce_rx_bitloading_t *bl)
{
/* Only one iteration. */
return ce_rx_bl_compute_tone_map_iterative (ce_rx_bl_initial_bpt, 1,
- tonemask, bl);
+ tonemask, reducedtm, bl);
}