summaryrefslogtreecommitdiff
path: root/cesar/ce
diff options
context:
space:
mode:
authorNicolas Schodet2012-08-01 16:33:45 +0200
committerNicolas Schodet2012-09-07 11:05:02 +0200
commita30a4443619f786688207de093308ca90710da35 (patch)
tree040fb7ebdff225dd47b693baf5dd78ed9e60dbd1 /cesar/ce
parent9da244a7d94d224497e161b27343d2440c6fa08f (diff)
cesar/ce/rx: take tonemask from MAC configuration, closes #3248
Diffstat (limited to 'cesar/ce')
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_bl.c4
-rw-r--r--cesar/ce/rx/rx.h7
-rw-r--r--cesar/ce/rx/src/rx.c12
-rw-r--r--cesar/ce/rx/src/tonemask.c7
-rw-r--r--cesar/ce/rx/stub/src/rx.c8
-rw-r--r--cesar/ce/rx/tonemask.h3
6 files changed, 34 insertions, 7 deletions
diff --git a/cesar/ce/rx/bitloading/test/src/test_bl.c b/cesar/ce/rx/bitloading/test/src/test_bl.c
index ffec2d9782..3ca35b99f4 100644
--- a/cesar/ce/rx/bitloading/test/src/test_bl.c
+++ b/cesar/ce/rx/bitloading/test/src/test_bl.c
@@ -646,7 +646,7 @@ test_suite_ce_rx_bl_initial (test_t t)
test_bl_after_nsr_sound_init (&bl);
tonemask_info_t ti, modified_ti;
ti.carrier_nb = tonemask_default (ti.tonemask);
- ce_rx_tonemask_init (&modified_ti);
+ ce_rx_tonemask_init (&modified_ti, &ti);
uint tone_diff = 0;
s64 nsr_prev = -1;
@@ -704,7 +704,7 @@ test_suite_ce_rx_bl_initial (test_t t)
tonemask_info_t ti, modified_ti;
uint i;
ti.carrier_nb = tonemask_default (ti.tonemask);
- ce_rx_tonemask_init (&modified_ti);
+ ce_rx_tonemask_init (&modified_ti, &ti);
for (i = 0; i < PHY_TONEMASK_WORDS - 1; i++)
{
diff --git a/cesar/ce/rx/rx.h b/cesar/ce/rx/rx.h
index 63393de5ee..7accfd09d8 100644
--- a/cesar/ce/rx/rx.h
+++ b/cesar/ce/rx/rx.h
@@ -40,6 +40,13 @@ void
ce_rx_uninit (ce_rx_t *ce_rx);
/**
+ * Reinitialize CE tonemask when it changed.
+ * \param ce_rx the CE in RX context.
+ */
+void
+ce_rx_init_tonemask (ce_rx_t *ce_rx);
+
+/**
* Ask for the CE RX to get the current noise NRJ (nsr) of a peer.
* \param ce_rx the CE in RX context.
* \param tei the TEI of the station from which we want the SNR.
diff --git a/cesar/ce/rx/src/rx.c b/cesar/ce/rx/src/rx.c
index 593a1e5c8c..4be4999b36 100644
--- a/cesar/ce/rx/src/rx.c
+++ b/cesar/ce/rx/src/rx.c
@@ -73,7 +73,7 @@ ce_rx_init (mac_store_t *mac_store, sar_t *sar, pbproc_t *pbproc,
ce_rx_cp_init (&ce_rx);
/* Initialize extra tonemask to mask faulty carriers
* during tonemap generation. */
- ce_rx_tonemask_init (&ce_rx.tonemask);
+ ce_rx_init_tonemask (&ce_rx);
/* Register our configuration variables.
* FIXME: this is a dirty hack. */
@@ -208,6 +208,16 @@ ce_rx_uninit (ce_rx_t *ce_rx)
}
void
+ce_rx_init_tonemask (ce_rx_t *ce_rx)
+{
+ /* Check parameters. */
+ dbg_assert (ce_rx);
+
+ /* Initialize tonemask from MAC configuration. */
+ ce_rx_tonemask_init (&ce_rx->tonemask, &ce_rx->mac_config->tonemask_info);
+}
+
+void
ce_rx_work_add (ce_rx_t *ce_rx, ce_rx_work_flag_t work)
{
/* Check parameters. */
diff --git a/cesar/ce/rx/src/tonemask.c b/cesar/ce/rx/src/tonemask.c
index b827c9e9a1..537c3f03f4 100644
--- a/cesar/ce/rx/src/tonemask.c
+++ b/cesar/ce/rx/src/tonemask.c
@@ -14,12 +14,13 @@
#include "ce/rx/tonemask.h"
void
-ce_rx_tonemask_init (tonemask_info_t *ti)
+ce_rx_tonemask_init (tonemask_info_t *ti, tonemask_info_t *ti_from)
{
- /* Check parameter. */
+ /* Check parameters. */
dbg_assert (ti);
+ dbg_assert (ti_from);
- ti->carrier_nb = tonemask_default (ti->tonemask);
+ *ti = *ti_from;
/* Disable first two carriers (see maria:#601) */
ti->tonemask[0] = ti->tonemask[0] | 0x3;
diff --git a/cesar/ce/rx/stub/src/rx.c b/cesar/ce/rx/stub/src/rx.c
index 31a05bbb9d..a51c2c19d5 100644
--- a/cesar/ce/rx/stub/src/rx.c
+++ b/cesar/ce/rx/stub/src/rx.c
@@ -51,6 +51,14 @@ ce_rx_uninit (ce_rx_t *ce_rx)
{
}
+void
+ce_rx_init_tonemask (ce_rx_t *ce_rx) __attribute__ ((weak));
+
+void
+ce_rx_init_tonemask (ce_rx_t *ce_rx)
+{
+}
+
blk_t *
ce_rx_get_nsr (ce_rx_t *ce_rx, cp_tei_t tei, uint int_index,
uint int_version, u16 *tm_ber) __attribute__ ((weak));
diff --git a/cesar/ce/rx/tonemask.h b/cesar/ce/rx/tonemask.h
index 3707286d44..d160ccd2ce 100644
--- a/cesar/ce/rx/tonemask.h
+++ b/cesar/ce/rx/tonemask.h
@@ -20,9 +20,10 @@ BEGIN_DECLS
* Initialize extra tonemask to mask faulty carriers during tonemap
* generation.
* \param ti tonemask info.
+ * \param ti_from tonemask info to copy from.
*/
void
-ce_rx_tonemask_init (tonemask_info_t *ti);
+ce_rx_tonemask_init (tonemask_info_t *ti, tonemask_info_t *ti_from);
END_DECLS