summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c5
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_bl.c2
-rw-r--r--cesar/ce/rx/test/src/test_rx.c6
3 files changed, 12 insertions, 1 deletions
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index 5853d373d5..1e0109168a 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -55,7 +55,10 @@ ce_rx_bl_get_nsr (ce_rx_bitloading_t *bl)
{
/* We can only get noise after bit loading initial. */
case CE_RX_BL_FSM_STATE_TRACKING:
- return bl->noise_nrj;
+ if (bl->noise_nrj_blk_count)
+ return bl->noise_nrj;
+ else
+ return NULL;
break;
default:
return NULL;
diff --git a/cesar/ce/rx/bitloading/test/src/test_bl.c b/cesar/ce/rx/bitloading/test/src/test_bl.c
index dfd219016a..d71e13e058 100644
--- a/cesar/ce/rx/bitloading/test/src/test_bl.c
+++ b/cesar/ce/rx/bitloading/test/src/test_bl.c
@@ -772,6 +772,7 @@ test_suite_ce_rx_bl_get_snr (test_t t)
blk_t * const fake_nsr = INVALID_PTR;
bl.noise_nrj = fake_nsr;
+ bl.noise_nrj_blk_count = 1;
test_begin (t, "check SNR available only in certain states")
{
@@ -792,6 +793,7 @@ test_suite_ce_rx_bl_get_snr (test_t t)
/* Clean. */
bl.noise_nrj = NULL;
+ bl.noise_nrj_blk_count = 0;
ce_rx_bitloading_uninit (&bl);
}
diff --git a/cesar/ce/rx/test/src/test_rx.c b/cesar/ce/rx/test/src/test_rx.c
index 8f3514d634..433f3170ea 100644
--- a/cesar/ce/rx/test/src/test_rx.c
+++ b/cesar/ce/rx/test/src/test_rx.c
@@ -361,16 +361,22 @@ test_ce_rx_get_snr (test_t t)
test_begin (t, "get SNR, bit loading initial done")
{
sta->ce_rx_bt.fsm = CE_RX_BL_FSM_STATE_TRACKING;
+ test_fail_if (ce_rx_get_nsr (ce_rx, tei, 0, 0, &ber) != NULL);
+ sta->ce_rx_bt.noise_nrj_blk_count = 1;
test_fail_if (ce_rx_get_nsr (ce_rx, tei, 0, 0, &ber) != INVALID_PTR);
test_fail_if (ber != 0);
+ sta->ce_rx_bt.noise_nrj_blk_count = 0;
} test_end;
test_begin (t, "get SNR, intervals version")
{
sta->rx_tonemaps->intervals->version = 0x42;
test_fail_if (ce_rx_get_nsr (ce_rx, tei, 0, 0, &ber) != NULL);
+ test_fail_if (ce_rx_get_nsr (ce_rx, tei, 0, 0x42, &ber) != NULL);
+ sta->ce_rx_bt.noise_nrj_blk_count = 1;
test_fail_if (ce_rx_get_nsr (ce_rx, tei, 0, 0x42, &ber) !=
INVALID_PTR);
+ sta->ce_rx_bt.noise_nrj_blk_count = 0;
} test_end;
/* Clean. */