diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn index e248860d5..37dcc975e 100644 --- a/pcu/GPRS_Components.ttcn +++ b/pcu/GPRS_Components.ttcn @@ -1200,6 +1200,30 @@ runs on MS_BTS_IFACE_CT return uint32_t { return dl_fn; } +/* Keep getting dl_block until first non RLCMAC Dummy is received, then return it */ +function f_rx_rlcmac_dl_block_skip_dummy(out RlcmacDlBlock dl_block, + integer max_dummy := -1, + template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum) +runs on MS_BTS_IFACE_CT return uint32_t { + var integer i; + var uint32_t dl_fn; + + while (true) { + f_rx_rlcmac_dl_block(dl_block, dl_fn, nr := nr); + if (not match(dl_block, tr_RLCMAC_DL_DUMMY_CTRL)) { + /* Received first data, starting processing: */ + break; + } + i := i + 1; + if (max_dummy >= 0 and i > max_dummy) { + setverdict(fail, "Didn't receive DL data after receiving ", i, " dummy blocks"); + f_shutdown(__BFILE__, __LINE__); + break; + } + } + return dl_fn; +} + function f_rx_rlcmac_dl_block_exp_pkt_pag_req(out RlcmacDlBlock dl_block, template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum) runs on MS_BTS_IFACE_CT { diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index af84821d1..38c50be66 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -1089,9 +1089,11 @@ function f_dl_data_exp_cs(template (present) CodingScheme exp_final_cs := ?, tem /* Wait timer X2002 and DL block is available after CCCH IMM ASS */ f_sleep(X2002); + /* Skip potential dummy blocks before X2002 triggers at PCU after us: */ + fn := f_rx_rlcmac_dl_block_skip_dummy(dl_block, max_dummy := 10); + for (var integer i := 0; i < 800; i := i + 1) { bsn := i mod bsn_mod; - f_rx_rlcmac_dl_block(dl_block, fn); if (match(dl_block, tr_RLCMAC_DL_DUMMY_CTRL)) { /* No more data to receive, done */ @@ -1114,6 +1116,7 @@ function f_dl_data_exp_cs(template (present) CodingScheme exp_final_cs := ?, tem } } prev_dl_block := dl_block; + f_rx_rlcmac_dl_block(dl_block, fn); } bsn := (bsn + (bsn_mod-1)) mod bsn_mod; /* previous bsn: bsn -1 */