diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index bb1719069..3421c73fd 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -1790,6 +1790,49 @@ testcase TC_dl_multislot_tbf_ms_class_from_2phase() runs on RAW_PCU_Test_CT { f_shutdown(__BFILE__, __LINE__, final := true); } +testcase TC_ul_multislot_tbf_ms_class_from_2phase() runs on RAW_PCU_Test_CT { + var PCUIF_info_ind info_ind := valueof(ts_PCUIF_INFO_default); + var RlcmacDlBlock dl_block; + var octetstring data := f_rnd_octstring(10); + var PollFnCtx pollctx; + var uint32_t sched_fn; + var GprsMS ms; + + var MultislotCap_GPRS mscap_gprs := { + gprsmultislotclass := '10010'B, /* MS class 18, supports 8 DL and 8 UL */ + gprsextendeddynalloccap := '0'B + }; + var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRec('0001'B /* E-GSM */, mscap_gprs, omit)) }; + + + /* Initialize NS/BSSGP side */ + f_init_bssgp(); + /* Initialize GPRS MS side */ + f_init_gprs_ms(); + ms := g_ms[0]; /* We only use first MS in this test */ + + /* Only 1 TRX with 8 PDCH */ + f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0); + f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7)); + + /* Initialize the PCU interface abstraction */ + f_init_raw(testcasename(), info_ind); + + /* Establish BSSGP connection to the PCU */ + f_bssgp_establish(); + f_bssgp_client_llgmm_assign(TLLI_UNUSED, ms.tlli); + + /* Send PACKET RESOURCE REQUEST to notify the MultiSlot Class */ + pollctx := f_ms_establish_ul_tbf_2phase_access(ms, ts_RlcMacUlCtrl_PKT_RES_REQ(ms.tlli, ms_racap)); + + if (f_ultbf_num_slots(ms.ul_tbf) != 8) { + setverdict(fail, "Expected 8 PDCH slot allocated but got ", f_ultbf_num_slots(ms.ul_tbf)); + f_shutdown(__BFILE__, __LINE__); + } + + f_shutdown(__BFILE__, __LINE__, final := true); +} + /* Test scenario where MS wants to request a new TBF once the current one is * ending, by means of sending a Packet Resource Request on ul slot provided by * last Pkt Ul ACK's RRBP. @@ -2878,6 +2921,7 @@ control { execute( TC_multitrx_multims_alloc() ); execute( TC_dl_multislot_tbf_ms_class_from_sgsn() ); execute( TC_dl_multislot_tbf_ms_class_from_2phase() ); + execute( TC_ul_multislot_tbf_ms_class_from_2phase() ); } execute( TC_pcuif_info_ind_subsequent() );