summaryrefslogtreecommitdiff
path: root/cesar/ce/rx
diff options
context:
space:
mode:
authorThierry Carré2013-06-06 17:29:09 +0200
committerThierry Carré2013-06-06 17:39:56 +0200
commit392c546385c28a094f8875864a28c222bca2a967 (patch)
treefd3beb18cc20be4397b8ecf218dfb4a7c1229d26 /cesar/ce/rx
parentd73f53ee5a8e8d0ff0b4b2a330b17b7e84389bcc (diff)
parentf3d99072b557fde172cc490ecae64f2059b03afe (diff)
Merge branch 't4007' into eoc-drv
Diffstat (limited to 'cesar/ce/rx')
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c3
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_bl.c2
-rw-r--r--cesar/ce/rx/src/rx.c12
-rw-r--r--cesar/ce/rx/test/src/test_rx.c4
4 files changed, 16 insertions, 5 deletions
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index 6d721f674c..b31addcc56 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -49,7 +49,8 @@ ce_rx_bl_get_nsr (ce_rx_bitloading_t *bl)
switch (bl->fsm)
{
- /* We can only get noise after bit loading initial. */
+ case CE_RX_BL_FSM_STATE_INTERVALS:
+ case CE_RX_BL_FSM_STATE_INTERVAL_TRACKING:
case CE_RX_BL_FSM_STATE_TRACKING:
if (bl->noise_nrj_blk_count)
return bl->noise_nrj;
diff --git a/cesar/ce/rx/bitloading/test/src/test_bl.c b/cesar/ce/rx/bitloading/test/src/test_bl.c
index afe8e45920..39eb65511d 100644
--- a/cesar/ce/rx/bitloading/test/src/test_bl.c
+++ b/cesar/ce/rx/bitloading/test/src/test_bl.c
@@ -781,6 +781,8 @@ test_suite_ce_rx_bl_get_snr (test_t t)
blk_t *nsr = ce_rx_bl_get_nsr (&bl);
switch (bl.fsm)
{
+ case CE_RX_BL_FSM_STATE_INTERVALS:
+ case CE_RX_BL_FSM_STATE_INTERVAL_TRACKING:
case CE_RX_BL_FSM_STATE_TRACKING:
test_fail_if (nsr != fake_nsr);
break;
diff --git a/cesar/ce/rx/src/rx.c b/cesar/ce/rx/src/rx.c
index 132ef79de5..31ebebb7db 100644
--- a/cesar/ce/rx/src/rx.c
+++ b/cesar/ce/rx/src/rx.c
@@ -440,21 +440,25 @@ ce_rx_get_nsr (ce_rx_t *ce_rx, cp_tei_t tei, uint int_index,
blk_t *ret = NULL;
/* Check if interval version is valid. */
- if (sta->rx_tonemaps->intervals->version == int_version)
+ if (sta->rx_tonemaps->intervals->version == int_version
+ && int_index < (ce_rx_bl_intervals_fsm_count_ *
+ ce_rx_bl_intervals_repetition_count_))
{
ce_rx_bitloading_t *bt;
if (ce_rx_behavior == CE_RX_BEHAVIOR_INTERVALS_ENABLE)
{
dbg_assert (sta->intervals);
- dbg_assert (int_index < CE_RX_INTERVAL_MAX_FSM_COUNT);
+ uint int_index_fsm = int_index % ce_rx_bl_intervals_fsm_count_;
+
if (sta->rx_tonemaps->default_tmi
- == sta->intervals->tmi[int_index])
+ == sta->intervals->tmi[int_index_fsm])
bt = &sta->ce_rx_bt;
else
- bt = sta->intervals->intervals[int_index];
+ bt = sta->intervals->intervals[int_index_fsm];
}
else
bt = &sta->ce_rx_bt;
+
ret = ce_rx_bl_get_nsr (bt);
/* FIXME: set BER for the moment being. */
if (ret)
diff --git a/cesar/ce/rx/test/src/test_rx.c b/cesar/ce/rx/test/src/test_rx.c
index de398e9b7e..626e1de4bd 100644
--- a/cesar/ce/rx/test/src/test_rx.c
+++ b/cesar/ce/rx/test/src/test_rx.c
@@ -400,6 +400,10 @@ test_ce_rx_get_snr (test_t t)
* the NSR of the interval tonemap should be used. */
test_fail_if (ce_rx_get_nsr (ce_rx, tei, 0, 0x42, &ber) !=
(void*) 0xDEADCAFE);
+ /* Same result with ce_rx_bl_intervals_fsm_count_ requested. */
+ test_fail_if (ce_rx_get_nsr (
+ ce_rx, tei, ce_rx_bl_intervals_fsm_count_, 0x42, &ber) !=
+ (void*) 0xDEADCAFE);
/* Clean all the state of the modified interval for this test. */
sta->ce_rx_bt.noise_nrj_blk_count = 0;
sta->intervals = NULL;