diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn index 0e3597b33..1d13b8ec0 100644 --- a/pcu/PCU_Tests_RAW.ttcn +++ b/pcu/PCU_Tests_RAW.ttcn @@ -603,6 +603,38 @@ testcase TC_ta_rach_imm_ass() runs on RAW_PCU_Test_CT { } } +/* Verify Timing Advance value(s) indicated during the packet Downlink assignment + * procedure as per 3GPP TS 44.018, section 3.5.3. There seems to be a bug in the + * IUT that causes it to send an unreasonable Timing Advance value > 0 despite + * no active TBF exists at the moment of establishment (idle mode). */ +testcase TC_ta_idle_dl_tbf_ass() runs on RAW_PCU_Test_CT { + var OCT4 tlli := f_rnd_octstring(4); + var GsmRrMessage rr_imm_ass; + + /* Initialize NS/BSSGP side */ + f_init_bssgp(); + + /* Initialize the PCU interface abstraction */ + f_init_raw(testcasename()); + + /* Establish BSSGP connection to the PCU */ + f_bssgp_establish(); + f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli); + + /* SGSN sends some DL data, PCU will initiate Packet Downlink + * Assignment on CCCH (PCH). We don't care about the payload. */ + BSSGP[0].send(ts_BSSGP_DL_UD(tlli, f_rnd_octstring(10))); + f_pcuif_rx_pch_imm_tbf_ass(rr_imm_ass); // TODO: match by TLLI! + + /* Make sure that Timing Advance is 0 (the actual value is not known yet). + * As per 3GPP S 44.018, section 3.5.3.1.2, the network *shall* initiate + * the procedures defined in 3GPP TS 44.060 or use the polling mechanism. */ + if (not match(rr_imm_ass, tr_IMM_TBF_ASS(ta := 0))) { + setverdict(fail, "Timing Advance value doesn't match"); + mtc.stop; + } +} + /* Verify that the PCU generates valid PTCCH/D messages * while neither Uplink nor Downlink TBF is established. */ testcase TC_ta_ptcch_idle() runs on RAW_PCU_Test_CT { @@ -1684,6 +1716,7 @@ control { execute( TC_pcuif_suspend() ); execute( TC_ta_ptcch_idle() ); execute( TC_ta_rach_imm_ass() ); + execute( TC_ta_idle_dl_tbf_ass() ); execute( TC_ta_ptcch_ul_multi_tbf() ); execute( TC_cs_lqual_ul_tbf() ); execute( TC_cs_initial_ul() );