summaryrefslogtreecommitdiff
path: root/cesar/ce
diff options
context:
space:
mode:
authordufour2010-03-23 14:16:19 +0000
committerdufour2010-03-23 14:16:19 +0000
commitb2b84077929fa0df4c4c0fabd1841d9d87723239 (patch)
tree4341dd98cfa1026b64fff411ad4c69a9c18cb625 /cesar/ce
parent586c1bf1de8c0d5524cc95f1af5eb79618887691 (diff)
cesar/ce/rx/cp: add function to send a MME to restart initial CE, closes #1270
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@6835 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/ce')
-rw-r--r--cesar/ce/rx/cp/mme.h9
-rw-r--r--cesar/ce/rx/cp/src/mme.c9
-rw-r--r--cesar/ce/rx/cp/stub/src/cp.c9
-rw-r--r--cesar/ce/rx/cp/test/src/test_mme.c13
4 files changed, 40 insertions, 0 deletions
diff --git a/cesar/ce/rx/cp/mme.h b/cesar/ce/rx/cp/mme.h
index 7a5e480269..7d9d2d7e38 100644
--- a/cesar/ce/rx/cp/mme.h
+++ b/cesar/ce/rx/cp/mme.h
@@ -69,6 +69,15 @@ ce_rx_mme_refresh_tone_map_list (cp_t *ctx, cp_sta_t *sta, u32 tmi_list, u8
default_tmi, tonemap_intervals_t *int_list,
tonemaps_t *tms);
+/**
+ * Send a CM_TM_UPDATE.IND to restart initial CE.
+ * \param ctx the Control Plane context.
+ * \param sta the destination of the MME.
+ * \param tms the tone maps structure (in RX).
+ */
+void
+ce_rx_mme_restart_initial_ce (cp_t *ctx, cp_sta_t *sta, tonemaps_t *tms);
+
END_DECLS
#endif /* ce_rx_cp_mme_h */
diff --git a/cesar/ce/rx/cp/src/mme.c b/cesar/ce/rx/cp/src/mme.c
index 6395eef34b..98157a9d69 100644
--- a/cesar/ce/rx/cp/src/mme.c
+++ b/cesar/ce/rx/cp/src/mme.c
@@ -523,3 +523,12 @@ ce_rx_mme_refresh_tone_map_list (cp_t *ctx, cp_sta_t *sta, u32 tmi_list, u8
else
tms->refresh_counter_s = 0;
}
+
+void
+ce_rx_mme_restart_initial_ce (cp_t *ctx, cp_sta_t *sta, tonemaps_t *tms)
+{
+ ce_rx_mme_send_cm_tm_update_ind (ctx, sta, tms, 0, 0, 0, 0,
+ tms->intervals);
+ /* Disable expiration timer. */
+ tms->refresh_counter_s = 0;
+}
diff --git a/cesar/ce/rx/cp/stub/src/cp.c b/cesar/ce/rx/cp/stub/src/cp.c
index 906787e21e..8ef1ea4100 100644
--- a/cesar/ce/rx/cp/stub/src/cp.c
+++ b/cesar/ce/rx/cp/stub/src/cp.c
@@ -13,6 +13,7 @@
#include "common/std.h"
#include "ce/rx/cp/cp.h"
+#include "cp/sta/mgr/sta.h"
void
ce_rx_cp_set_cp_signal_work_callback (ce_rx_t *ce_rx,
@@ -44,3 +45,11 @@ ce_rx_cp_send_mme_new_tone_map (ce_rx_t *ce_rx, sta_t *peer, u8 new_tmi,
{
}
+void
+ce_rx_mme_restart_initial_ce (cp_t *ctx, cp_sta_t *sta, tonemaps_t *tms)
+ __attribute__ ((weak));
+
+void
+ce_rx_mme_restart_initial_ce (cp_t *ctx, cp_sta_t *sta, tonemaps_t *tms)
+{
+}
diff --git a/cesar/ce/rx/cp/test/src/test_mme.c b/cesar/ce/rx/cp/test/src/test_mme.c
index de09b17eea..11cba0a688 100644
--- a/cesar/ce/rx/cp/test/src/test_mme.c
+++ b/cesar/ce/rx/cp/test/src/test_mme.c
@@ -492,6 +492,19 @@ mme_test_suite (test_t t)
/* Clean. */
tms->tm[default_tmi] = 0;
} test_end;
+ test_begin (t, "CM_TM_UPDATE.IND: restart initial CE")
+ {
+ tms->refresh_counter_s = CE_RX_REFRESH_TONE_MAP_S;
+ cp.vect_size = mme_test_generate_cm_tm_update_ind (&cp, tms, 0, 0,
+ NULL, 0);
+ mme_test_generate_end_cm_chan_est_ind (&cp);
+ /* No interval. */
+ tonemap_intervals_t int_list;
+ int_list.intervals_nb = 0;
+ ce_rx_mme_restart_initial_ce (&cp, &sta, tms);
+ /* No need to refresh when there is an empty TMI list. */
+ test_fail_if (tms->refresh_counter_s != 0);
+ } test_end;
/* Clean. */
tonemap_free (tm);