summaryrefslogtreecommitdiff
path: root/cesar
diff options
context:
space:
mode:
authorJérôme Jutteau2011-08-25 16:38:35 +0200
committerJérémy Dufour2012-09-12 16:20:37 +0200
commit3e1a6ff4703189622217232b0b20e7ef0a2502a1 (patch)
treea389e205b129ebaed7b6dae084b06780a46b814e /cesar
parentb04009c60e3f974e7a118988a8599dfb2082c081 (diff)
cesar/ce/rx: use an enum for restart dates table, refs #2376
Diffstat (limited to 'cesar')
-rw-r--r--cesar/ce/rx/bitloading/bitloading.h24
-rw-r--r--cesar/ce/rx/bitloading/inc/common.h2
-rw-r--r--cesar/ce/rx/bitloading/src/common.c5
-rw-r--r--cesar/ce/rx/bitloading/src/transition.c6
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_fsm.c14
-rw-r--r--cesar/ce/rx/src/rx.c6
6 files changed, 42 insertions, 15 deletions
diff --git a/cesar/ce/rx/bitloading/bitloading.h b/cesar/ce/rx/bitloading/bitloading.h
index 78d56928dc..1680d9b0c2 100644
--- a/cesar/ce/rx/bitloading/bitloading.h
+++ b/cesar/ce/rx/bitloading/bitloading.h
@@ -69,6 +69,25 @@ typedef enum ce_rx_bitloading_restart_reason_t
} ce_rx_bitloading_restart_reason_t;
/**
+ * Next dates we are allowed to restart the CE.
+ */
+typedef enum ce_rx_bitloading_date_criteria_t
+{
+ /**
+ * PBErrorRate criteria.
+ */
+ CE_RX_BL_DATE_CRITERIA_PBER,
+ /**
+ * BER criteria.
+ */
+ CE_RX_BL_DATE_CRITERIA_BER,
+ /**
+ * Number of date used in bit loading algorithm.
+ */
+ CE_RX_BL_DATE_CRITERIA_NB,
+} ce_rx_bitloading_date_criteria_t;
+
+/**
* Statistics of the CE/RX bit-loading.
*/
typedef struct ce_rx_bitloading_stats_t
@@ -137,9 +156,8 @@ typedef struct ce_rx_bitloading_t
uint high_pb_error_rate_frame_counter;
/** BER sliding means (-1 if they are reseted). */
s64 ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_NB];
- /** Next time we are allowed to restart the CE. First one is for
- * PBErrorRate criteria, second one is for BER criteria. */
- u32 next_date_min_for_restart_rtc_date[2];
+ /** Next time we are allowed to restart the CE. */
+ u32 next_date_min_for_restart_rtc_date[CE_RX_BL_DATE_CRITERIA_NB];
/** Optimisation table of the station, this table only contain the index
* of the carrier sorted by impact on the ber. */
blk_table_t *opti_table;
diff --git a/cesar/ce/rx/bitloading/inc/common.h b/cesar/ce/rx/bitloading/inc/common.h
index 114c81352f..48e6ce3479 100644
--- a/cesar/ce/rx/bitloading/inc/common.h
+++ b/cesar/ce/rx/bitloading/inc/common.h
@@ -25,7 +25,7 @@
* Minimum time between two restarts of the CE, in milliseconds.
* First one is for PBErrorRate criteria, second one is for BER criteria.
*/
-extern uint ce_rx_bl_min_time_between_ce_restart_ms[2];
+extern uint ce_rx_bl_min_time_between_ce_restart_ms[CE_RX_BL_DATE_CRITERIA_NB];
BEGIN_DECLS
diff --git a/cesar/ce/rx/bitloading/src/common.c b/cesar/ce/rx/bitloading/src/common.c
index 12a68f3311..06197e6aef 100644
--- a/cesar/ce/rx/bitloading/src/common.c
+++ b/cesar/ce/rx/bitloading/src/common.c
@@ -22,7 +22,8 @@
#include <cyg/kernel/kapi.h>
-uint ce_rx_bl_min_time_between_ce_restart_ms[2] = { 3000, 3000 };
+uint ce_rx_bl_min_time_between_ce_restart_ms[CE_RX_BL_DATE_CRITERIA_NB] =
+{ 3000, 3000 };
void
ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
@@ -96,7 +97,7 @@ ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
(ce_rx, sta, TONEMAP_INDEX_IS_NEGOTIATED (tmi) ? tmi : 0, 0, true);
/* Store next time the CE can restart. */
uint i;
- for (i = 0; i < COUNT (ce_rx_bl_min_time_between_ce_restart_ms); i++)
+ for (i = 0; i < CE_RX_BL_DATE_CRITERIA_NB; i++)
sta->ce_rx_bt.next_date_min_for_restart_rtc_date[i]
= cyg_current_time ()
+ MAC_MS_TO_TCK (ce_rx_bl_min_time_between_ce_restart_ms[i])
diff --git a/cesar/ce/rx/bitloading/src/transition.c b/cesar/ce/rx/bitloading/src/transition.c
index 55d778e07f..07f90aa4ca 100644
--- a/cesar/ce/rx/bitloading/src/transition.c
+++ b/cesar/ce/rx/bitloading/src/transition.c
@@ -372,7 +372,8 @@ ce_rx_bl_fsm__TRACKING__data (ce_rx_t *ce_rx,
if ((bl->high_pb_error_rate_frame_counter
>= ce_rx_bl_min_frame_with_high_pb_err_rate_)
&& lesseq_mod2p32
- (bl->next_date_min_for_restart_rtc_date[0],
+ (bl->next_date_min_for_restart_rtc_date
+ [CE_RX_BL_DATE_CRITERIA_PBER],
cyg_current_time ()))
{
ce_debug_gpio_event
@@ -406,7 +407,8 @@ ce_rx_bl_fsm__TRACKING__data (ce_rx_t *ce_rx,
(ce_rx->mac_config->tonemask_info.carrier_nb
* CE_BIT_PER_MOD[CE_MOD_COUNT - 1])))
&& lesseq_mod2p32
- (bl->next_date_min_for_restart_rtc_date[1],
+ (bl->next_date_min_for_restart_rtc_date
+ [CE_RX_BL_DATE_CRITERIA_BER],
cyg_current_time ()))
{
/* Compute lower bound. */
diff --git a/cesar/ce/rx/bitloading/test/src/test_fsm.c b/cesar/ce/rx/bitloading/test/src/test_fsm.c
index be3bab8b9d..0e1d18de51 100644
--- a/cesar/ce/rx/bitloading/test/src/test_fsm.c
+++ b/cesar/ce/rx/bitloading/test/src/test_fsm.c
@@ -153,7 +153,7 @@ test_ce_rx_bl_fsm_base (test_t t)
/* Reset statistics. */
tm.nb_pb = tm.nb_frame = 0;
ce_rx_bitloading_init (&sta.ce_rx_bt);
- for (i = 0; i < COUNT (sta.ce_rx_bt.next_date_min_for_restart_rtc_date); i++)
+ for (i = 0; i < CE_RX_BL_DATE_CRITERIA_NB; i++)
sta.ce_rx_bt.next_date_min_for_restart_rtc_date[i] = 0;
ce_rx_measure_mbox_t measure;
@@ -613,7 +613,8 @@ test_ce_rx_bl_fsm_base (test_t t)
"not restarting CE")
{
ce_rx_bitloading_init (&sta.ce_rx_bt);
- sta.ce_rx_bt.next_date_min_for_restart_rtc_date[0] = 42;
+ sta.ce_rx_bt.next_date_min_for_restart_rtc_date
+ [CE_RX_BL_DATE_CRITERIA_PBER] = 42;
test_ce_rx_bl_reset (&sta.ce_rx_bt);
test_ce_rx_bl_stats_reset (&stats);
test_ce_rx_bl_measure_empty (&measure);
@@ -654,7 +655,8 @@ test_ce_rx_bl_fsm_base (test_t t)
test_ce_rx_bl_stats (t, &stats, &sta.ce_rx_bt.stats);
/* Clean. */
ce_rx_bitloading_uninit (&sta.ce_rx_bt);
- sta.ce_rx_bt.next_date_min_for_restart_rtc_date[0] = 0;
+ sta.ce_rx_bt.next_date_min_for_restart_rtc_date
+ [CE_RX_BL_DATE_CRITERIA_PBER] = 0;
} test_end;
test_begin (t, "TRACKING, BER sliding means too low, restart CE")
@@ -719,7 +721,8 @@ test_ce_rx_bl_fsm_base (test_t t)
"not restarting CE")
{
ce_rx_bitloading_init (&sta.ce_rx_bt);
- sta.ce_rx_bt.next_date_min_for_restart_rtc_date[1] = 42;
+ sta.ce_rx_bt.next_date_min_for_restart_rtc_date
+ [CE_RX_BL_DATE_CRITERIA_BER] = 42;
test_ce_rx_bl_reset (&sta.ce_rx_bt);
test_ce_rx_bl_stats_reset (&stats);
test_ce_rx_bl_measure_empty (&measure);
@@ -759,7 +762,8 @@ test_ce_rx_bl_fsm_base (test_t t)
test_ce_rx_bl_stats (t, &stats, &sta.ce_rx_bt.stats);
/* Clean. */
ce_rx_bitloading_uninit (&sta.ce_rx_bt);
- sta.ce_rx_bt.next_date_min_for_restart_rtc_date[1] = 0;
+ sta.ce_rx_bt.next_date_min_for_restart_rtc_date
+ [CE_RX_BL_DATE_CRITERIA_BER] = 0;
} test_end;
test_begin (t, "TRACKING, BER sliding means too low, restart CE, on ROBO")
diff --git a/cesar/ce/rx/src/rx.c b/cesar/ce/rx/src/rx.c
index 4be4999b36..ff9f6244e8 100644
--- a/cesar/ce/rx/src/rx.c
+++ b/cesar/ce/rx/src/rx.c
@@ -110,11 +110,13 @@ ce_rx_init (mac_store_t *mac_store, sar_t *sar, pbproc_t *pbproc,
LIB_STATS_ACCESS_READ_WRITE,
LIB_STATS_DEBUG);
lib_stats_set_stat_value_notype ("CE_RX_BL_MIN_TIME_BETWEEN_CE_RESTART_PBER_MS",
- &ce_rx_bl_min_time_between_ce_restart_ms[0],
+ &ce_rx_bl_min_time_between_ce_restart_ms
+ [CE_RX_BL_DATE_CRITERIA_PBER],
LIB_STATS_ACCESS_READ_WRITE,
LIB_STATS_DEBUG);
lib_stats_set_stat_value_notype ("CE_RX_BL_MIN_TIME_BETWEEN_CE_RESTART_BER_MS",
- &ce_rx_bl_min_time_between_ce_restart_ms[1],
+ &ce_rx_bl_min_time_between_ce_restart_ms
+ [CE_RX_BL_DATE_CRITERIA_BER],
LIB_STATS_ACCESS_READ_WRITE,
LIB_STATS_DEBUG);
/* Get PBER config. */