summaryrefslogtreecommitdiff
path: root/cesar
diff options
context:
space:
mode:
authorjelisavcic2009-09-28 13:53:36 +0000
committerjelisavcic2009-09-28 13:53:36 +0000
commit9464cd33f16306b88871dd1e5e99d755bf4dac2f (patch)
tree058f16e69dfe9bf4f2893862f33fa4e7b9fea8f8 /cesar
parente1ab369755b65478df765bc1f8054eab0eb7aae8 (diff)
[CESAR][MAC][PBPROC][EOC]
Update FSM for lost messages (both sound and ordinary data). Update tests. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@5792 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar')
-rw-r--r--cesar/mac/pbproc/src/fsm_tx_data.c4
-rw-r--r--cesar/mac/pbproc/src/fsm_tx_sound.c4
-rw-r--r--cesar/mac/pbproc/src/prep_mpdu.c4
-rw-r--r--cesar/mac/pbproc/test/pbproc_eoc/src/prep_mpdu.c4
-rw-r--r--cesar/mac/pbproc/test/pbproc_eoc/src/rx_data.c5
-rw-r--r--cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_2sta.py4
-rw-r--r--cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_multista.py7
7 files changed, 22 insertions, 10 deletions
diff --git a/cesar/mac/pbproc/src/fsm_tx_data.c b/cesar/mac/pbproc/src/fsm_tx_data.c
index fe990afb7e..b35374afe8 100644
--- a/cesar/mac/pbproc/src/fsm_tx_data.c
+++ b/cesar/mac/pbproc/src/fsm_tx_data.c
@@ -257,6 +257,10 @@ pbproc_ftda__tx_wait_sackd__access (pbproc_t *ctx)
dbg_claim (ctx);
pbproc_prep_mpdu_cancel (ctx);
ctx->stats.data_fail++;
+#if CONFIG_PBPROC_FC_EOC
+ /* prepare next schedule, start access timer */
+ ca_access_vcs_restart (ctx->ca, phy_date (ctx->phy), 0, 0, false);
+#endif
pbproc_ftop__idle__access (ctx);
}
diff --git a/cesar/mac/pbproc/src/fsm_tx_sound.c b/cesar/mac/pbproc/src/fsm_tx_sound.c
index 33a6bd5e39..01c36b92fe 100644
--- a/cesar/mac/pbproc/src/fsm_tx_sound.c
+++ b/cesar/mac/pbproc/src/fsm_tx_sound.c
@@ -142,9 +142,7 @@ pbproc_ftso__tx_sound_wait_ack__access (pbproc_t *ctx)
#if CONFIG_PBPROC_FC_EOC
/* prepare next schedule, start access timer */
ca_access_vcs_restart (ctx->ca, phy_date (ctx->phy), 0, 0, false);
- pbproc_ftop__idle__access (ctx);
-#else
- pbproc_ftop__idle__access (ctx);
#endif
+ pbproc_ftop__idle__access (ctx);
}
diff --git a/cesar/mac/pbproc/src/prep_mpdu.c b/cesar/mac/pbproc/src/prep_mpdu.c
index d16400428c..dc64b45c41 100644
--- a/cesar/mac/pbproc/src/prep_mpdu.c
+++ b/cesar/mac/pbproc/src/prep_mpdu.c
@@ -212,7 +212,9 @@ pbproc_prep_mpdu (pbproc_t *ctx)
/* No wack if no time allocation, for polling SOF or empty SOF
* keep SACK in CSMA period else only SOF */
#if CONFIG_PBPROC_FC_EOC
- if (access->reverse_duration_tck == 0 && !ctx->recv_mpdu.bbf)
+ if (access->duration_tck == 0
+ && access->reverse_duration_tck == 0
+ && MAC_TEI_IS_EOC_CCO(prep->stei))
prep->wack &= !access->cfp;
#endif
/* Should we use RTS CTS?
diff --git a/cesar/mac/pbproc/test/pbproc_eoc/src/prep_mpdu.c b/cesar/mac/pbproc/test/pbproc_eoc/src/prep_mpdu.c
index 365dcdb483..a3616876fc 100644
--- a/cesar/mac/pbproc/test/pbproc_eoc/src/prep_mpdu.c
+++ b/cesar/mac/pbproc/test/pbproc_eoc/src/prep_mpdu.c
@@ -128,7 +128,9 @@ prep_mpdu_test_f (test_t t, test_pbproc_t *tp, u32 date,
if (params->remove == 1)
mfs->ca_state = CA_MFS_STATE_REMOVED;
uint wack = !params->bcast;
- if (access->reverse_duration_tck == 0)
+ if (access->duration_tck == 0
+ && access->reverse_duration_tck == 0
+ && MAC_TEI_IS_EOC_CCO(tp->config.tei))
wack &= !access->cfp;
pbproc_prep_mpdu (tp->pbproc);
/* Check result. */
diff --git a/cesar/mac/pbproc/test/pbproc_eoc/src/rx_data.c b/cesar/mac/pbproc/test/pbproc_eoc/src/rx_data.c
index 794b743dfb..fcc1730614 100644
--- a/cesar/mac/pbproc/test/pbproc_eoc/src/rx_data.c
+++ b/cesar/mac/pbproc/test/pbproc_eoc/src/rx_data.c
@@ -266,6 +266,11 @@ rx_data_burst_test_mpdu_sr (test_t t, test_pbproc_t *tp,
.prp_won = burst->prp_won,
.slot_count = 2, .access_param = NULL),
SCENARIO_EVENT (ca_mfs_update, .mfs = NULL),
+ SCENARIO_EVENT (ca_access_vcs_restart,
+ .start_date = 0,
+ .length_tck = 0,
+ .anticipation_tck = 0,
+ .eifs = false),
SCENARIO_EVENT (ca_access_hold),
SCENARIO_EVENT (phy_rx_activate,
.now = true, .date = 0,
diff --git a/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_2sta.py b/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_2sta.py
index 2dada209c6..b683f3605f 100644
--- a/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_2sta.py
+++ b/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_2sta.py
@@ -12,11 +12,11 @@ maximus.init (sys.argv + ['-e', './obj/sar-pbproc.elf'])
# TEI of station 1 will be 1
station1 = maximus.create_sta()
-station1.debug()
+#station1.debug()
# TEI of station 2 will be 5
station2 = maximus.create_sta()
-station2.debug()
+#station2.debug()
fc1 = maximus.create_fcall ("fc_station_config_bt")
fc1.set_sta (station1)
diff --git a/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_multista.py b/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_multista.py
index f6b88e3521..cd34751834 100644
--- a/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_multista.py
+++ b/cesar/test_general/maximus/integration/sar-pbproc-eoc/test_eoc_multista.py
@@ -13,9 +13,10 @@ N = 10
TR_TYPE = 3
# Use sound frames
SOUND = 1
-
+#Mix dead stations
+MIX_DEAD = 1
# Init
-stations = range(0, N+1) #[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+stations = range(0, N+1)
maximus = Maximus()
maximus.init (sys.argv + ['-e', './obj/sar-pbproc.elf'])
@@ -139,7 +140,7 @@ for x in range(1, 5):
fc1.add_param ("buffer", f.read())
f.close()
fc1.send()
- maximus.wait (2000000)
+ maximus.wait (1000000)
# Clean part
for i in range(0, N):