summaryrefslogtreecommitdiff
path: root/cesar/ce
diff options
context:
space:
mode:
authorCyril Jourdan2012-11-23 10:43:18 +0100
committerCyril Jourdan2013-01-18 11:53:50 +0100
commit0c19d940cde731ef3abcacf2217d60810442d3f3 (patch)
tree872d4f55555210516ff759dfadfd8626ca913ee5 /cesar/ce
parent733972fefbb4f04509dcc1e13d8f4168dac4b6d3 (diff)
cesar/ce/rx/bl/test/fsm: correct test, refs #2366
The test needed an override for ce_rx_bl_nsr_clean function and there was some inits missing.
Diffstat (limited to 'cesar/ce')
-rw-r--r--cesar/ce/rx/bitloading/test/fsm/override/ce/rx/bitloading/nsr.h48
-rw-r--r--cesar/ce/rx/bitloading/test/fsm/src/test_fsm.c13
2 files changed, 58 insertions, 3 deletions
diff --git a/cesar/ce/rx/bitloading/test/fsm/override/ce/rx/bitloading/nsr.h b/cesar/ce/rx/bitloading/test/fsm/override/ce/rx/bitloading/nsr.h
new file mode 100644
index 0000000000..dc4e4cd54a
--- /dev/null
+++ b/cesar/ce/rx/bitloading/test/fsm/override/ce/rx/bitloading/nsr.h
@@ -0,0 +1,48 @@
+#ifndef ce_rx_bitloading_test_fsm_override_ce_rx_bitloading_nsr_h
+#define ce_rx_bitloading_test_fsm_override_ce_rx_bitloading_nsr_h
+/* Cesar project {{{
+ *
+ * Copyright (C) 2011 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file ce/rx/bitloading/test/fsm/override/ce/rx/bitloading/nsr.h
+ * \brief override for ce/rx/bitloading/nsr.h
+ * \ingroup ce_rx_bl_test
+ */
+
+#include "ce/rx/bitloading/context.h"
+
+/**
+ * NSR must be rescaled before used by BER vs polynomials.
+ * Rescaling is not the same if NSR is based on sound or data.
+ */
+#define CE_RX_BL_NSR_SOUND_RESCALE (2)
+
+BEGIN_DECLS
+
+/**
+ * Clean NSR mean.
+ * \param bl the bit loading context of the peer
+ */
+extern inline void
+ce_rx_bl_nsr_clean (ce_rx_bitloading_t *bl)
+{
+ if (bl->noise_nrj_blk_count)
+ blk_release_desc_range_nb (bl->noise_nrj, bl->noise_nrj_blk_count);
+ bl->noise_nrj_blk_count = 0;
+}
+
+/**
+ * Get the current NSR used by the bit loading.
+ * \param ctx the bit loading context of the station.
+ * \return the NSR if available (NULL otherwise).
+ */
+blk_t *
+ce_rx_bl_get_nsr (ce_rx_bitloading_t *bl);
+
+END_DECLS
+
+#endif /* ce_rx_bitloading_test_fsm_override_ce_rx_bitloading_nsr_h */
diff --git a/cesar/ce/rx/bitloading/test/fsm/src/test_fsm.c b/cesar/ce/rx/bitloading/test/fsm/src/test_fsm.c
index 6073f86c80..388db3283f 100644
--- a/cesar/ce/rx/bitloading/test/fsm/src/test_fsm.c
+++ b/cesar/ce/rx/bitloading/test/fsm/src/test_fsm.c
@@ -161,22 +161,26 @@ test_ce_rx_bl_ber_margin_update (test_t t,
scenario_entry_t scenario_end = SCENARIO_END;
uint i;
int pos = 0;
- uint nb_frames = CE_RX_BL_TEST_BMU_NB_FRAMES;
tonemap_t tm;
ce_rx_measure_mbox_t measure;
- scenario_entry_t scenario_test[(u16) -1];
+ /* There is 3 scenario entries for each frame.
+ * We add margin for last entries. */
+ scenario_entry_t scenario_test[4 * CE_RX_BL_TEST_BMU_NB_FRAMES];
for (i = 0; i < TONEMAP_INDEX_NB; i++)
{
rx_tms.tm[i] = NULL;
tx_tms.tm[i] = NULL;
}
+ sta.intervals = NULL;
sta.rx_tonemaps = &rx_tms;
sta.tx_tonemaps = &tx_tms;
rx_tms.tm[tmi_av] = &tm;
rx_tms.default_tmi = tmi_av;
tm.bits_per_symbol = 1;
+ tm.ber_target = 1;
tm.ber_target_reached = 1;
+ tm.fecrate = PHY_FEC_RATE_16_21;
ce_rx_bitloading_init (&sta.ce_rx_bt);
test_ce_rx_bl_reset (&sta.ce_rx_bt);
@@ -185,6 +189,8 @@ test_ce_rx_bl_ber_margin_update (test_t t,
sta.ce_rx_bt.bmu.ber_margin[tm.fecrate] = -10;
sta.ce_rx_bt.pber.mean_q16 = pberr;
sta.ce_rx_bt.bmu.oscillation_counter = oscillation_count;
+ for (i = 0; i < CE_RX_BL_DATE_CRITERIA_NB; i++)
+ sta.ce_rx_bt.next_date_min_for_restart_rtc_date[i] = 0;
if (enough_time)
sta.ce_rx_bt.next_date_min_for_restart_rtc_date
[CE_RX_BL_DATE_BER_MARGIN_UPDATE] = 0;
@@ -192,7 +198,7 @@ test_ce_rx_bl_ber_margin_update (test_t t,
sta.ce_rx_bt.next_date_min_for_restart_rtc_date
[CE_RX_BL_DATE_BER_MARGIN_UPDATE] = 42;
- for (i = 0; i < nb_frames; i++)
+ for (i = 0; i < CE_RX_BL_TEST_BMU_NB_FRAMES; i++)
{
scenario_test[pos++] = (scenario_entry_t)
SCENARIO_ACTION (TRACKING__data,
@@ -276,6 +282,7 @@ test_ce_rx_bl_fsm_base (test_t t)
rx_tms.tm[i] = NULL;
tx_tms.tm[i] = NULL;
}
+ sta.intervals = NULL;
sta.rx_tonemaps = &rx_tms;
sta.tx_tonemaps = &tx_tms;
tonemap_t tm;