summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading/test/src/test_intervals.c
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/ce/rx/bitloading/test/src/test_intervals.c')
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_intervals.c179
1 files changed, 179 insertions, 0 deletions
diff --git a/cesar/ce/rx/bitloading/test/src/test_intervals.c b/cesar/ce/rx/bitloading/test/src/test_intervals.c
index 545a866499..8b58b5de82 100644
--- a/cesar/ce/rx/bitloading/test/src/test_intervals.c
+++ b/cesar/ce/rx/bitloading/test/src/test_intervals.c
@@ -21,6 +21,7 @@
#include "ce/rx/bitloading/inc/intervals.h"
#include "ce_rx_bl_fsm_defs.h"
#include "mac/common/timings.h"
+#include "ce/rx/bitloading/fsm/fsm.h"
/**
* Test suite for intervals init and uninit.
@@ -219,6 +220,182 @@ test_suite_ce_rx_bl_intervals_measure_to_interval (test_t t)
}
void
+test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ test_t t,
+ int sound,
+ bool intervals,
+ bool mea_interval,
+ ce_rx_bl_fsm_event_type_t *event,
+ int *fsm_id)
+{
+ sta_t sta;
+ tonemaps_t* tms;
+ ce_rx_measure_mbox_t measure;
+ ce_rx_bitloading_fsm_event_param_t data;
+ int i;
+ uint bp;
+
+ ce_rx_bitloading_init (&sta.ce_rx_bt);
+ tms = tonemaps_alloc ();
+ bp = MAC_TCK_TO_ATU (BSU_ACLF_BP_50HZ_TCK);
+ if (intervals)
+ for (i = 1; i <= 24; i++)
+ mac_interval_append (tms, bp * i / 24, i);
+ else
+ mac_interval_append (tms, bp, 4);
+ mac_interval_commit_changes (tms);
+ sta.rx_tonemaps = tms;
+ sta.intervals = NULL;
+ data.measure = &measure;
+
+ /* Configure measure. */
+ measure.rx_params.sound = sound;
+ measure.rx_params.sound_complete = 0;
+ measure.rx_params.preamble_ntb = 0;
+ measure.rx_params.beacon_period_start_ntb = 0;
+ /* Measure is global. */
+ if (!mea_interval)
+ measure.rx_params.fl_tck = 30000000;
+ /* Measure is located on an interval */
+ else
+ measure.rx_params.fl_tck = bp / 25;
+
+ *event = ce_rx_bl_fsm_measure_to_event (&sta, data);
+ *fsm_id = measure.fsm_id;
+
+ /* Clean. */
+ tonemaps_release (tms);
+ ce_rx_bitloading_uninit (&sta.ce_rx_bt);
+}
+
+void
+test_suite_ce_rx_bl_intervals_measure_to_event (test_t t)
+{
+ ce_rx_bl_fsm_event_type_t out;
+ int fsm_id;
+ test_begin (t, "Measure to event conversion, sound, no interval, "
+ "big measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 1,
+ /* RX contains intervals ? */
+ false,
+ /* Measure is positioned on an interval ? */
+ false,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_sound);
+ test_fail_if (fsm_id != -1);
+ } test_end;
+ test_begin (t, "Measure to event conversion, sound, no interval, "
+ "small measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 1,
+ /* RX contains intervals ? */
+ false,
+ /* Measure is positioned on an interval ? */
+ true,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_sound);
+ test_fail_if (fsm_id != -1);
+ } test_end;
+ test_begin (t, "Measure to event conversion, sound, intervals, "
+ "big measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 1,
+ /* RX contains intervals ? */
+ true,
+ /* Measure is positioned on an interval ? */
+ false,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_sound);
+ test_fail_if (fsm_id != -1);
+ } test_end;
+ test_begin (t, "Measure to event conversion, sound, intervals, "
+ "small measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 1,
+ /* RX contains intervals ? */
+ true,
+ /* Measure is positioned on an interval ? */
+ true,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_interval_sound);
+ test_fail_if (fsm_id != 0);
+ } test_end;
+ test_begin (t, "Measure to event conversion, not sound, no interval, "
+ "big measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 0,
+ /* RX contains intervals ? */
+ false,
+ /* Measure is positioned on an interval ? */
+ false,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_data);
+ test_fail_if (fsm_id != -1);
+ } test_end;
+ test_begin (t, "Measure to event conversion, not sound, no interval, "
+ "small measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 0,
+ /* RX contains intervals ? */
+ false,
+ /* Measure is positioned on an interval ? */
+ true,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_data);
+ test_fail_if (fsm_id != -1);
+ } test_end;
+ test_begin (t, "Measure to event conversion, not sound, intervals, "
+ "big measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 0,
+ /* RX contains intervals ? */
+ true,
+ /* Measure is positioned on an interval ? */
+ false,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_data);
+ test_fail_if (fsm_id != -1);
+ } test_end;
+ test_begin (t, "Measure to event conversion, not sound, intervals, "
+ "small measure")
+ {
+ test_suite_ce_rx_bl_intervals_measure_to_event_master_test (
+ t,
+ /* Sound ? */
+ 0,
+ /* RX contains intervals ? */
+ true,
+ /* Measure is positioned on an interval ? */
+ true,
+ &out, &fsm_id);
+ test_fail_if (out != CE_RX_BL_FSM_EVENT_TYPE_interval_data);
+ test_fail_if (fsm_id != 0);
+ } test_end;
+}
+
+void
test_suite_ce_rx_bl_intervals (test_t t)
{
/* Intervals init and uninit. */
@@ -227,4 +404,6 @@ test_suite_ce_rx_bl_intervals (test_t t)
test_suite_ce_rx_bl_intervals_measure_to_date (t);
/* Measure to interval computation. */
test_suite_ce_rx_bl_intervals_measure_to_interval (t);
+ /* Measure to event computation */
+ test_suite_ce_rx_bl_intervals_measure_to_event (t);
}