diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index cc384332b..09a7a15b6 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -7072,6 +7072,67 @@ testcase TC_ms_pwr_ctrl_pf_ewma() runs on test_CT { Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } +private function f_TC_speech_no_rtp(charstring id) runs on ConnHdlr { + var template L1ctlDlMessage tr_bad_frame; + var L1ctlDlMessage l1_dl; + timer T := 8.0; + + f_l1_tune(L1CTL); + RSL.clear; + + f_est_dchan(); + + /* There may be a few errors right after the channel activation */ + f_sleep(2.0); /* ... so let's give the L1 some time to stabilize */ + L1CTL.clear; + + /* A universal template for bad Downlink frame: {DATA,TRAFFIC}.ind */ + tr_bad_frame := tr_L1CTL_TRAFFIC_IND(g_chan_nr, tr_RslLinkID_DCCH(0)); + tr_bad_frame.header.msg_type := (L1CTL_DATA_IND, L1CTL_TRAFFIC_IND); + tr_bad_frame.dl_info.fire_crc := (1..255); /* != 0 */ + tr_bad_frame.payload := ?; + + T.start; + alt { + /* OS#4823: DATA.ind or TRAFFIC.ind with bad CRC most likely means that + * the IUT is sending *dummy bursts*, so the L1 fails to decode them. */ + [] L1CTL.receive(tr_bad_frame) -> value l1_dl { + setverdict(fail, "Received {DATA,TRAFFIC}.ind with bad CRC: ", l1_dl); + } + [] as_l1_sacch(); + [] L1CTL.receive { repeat; } + [] T.timeout { + /* We're done, break the loop */ + setverdict(pass); + } + } + + f_rsl_chan_deact(); + f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr); +} +testcase TC_speech_no_rtp_tchf() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS1, TCH/F, V1 (FR codec) */ + pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1))); + vc_conn := f_start_handler(refers(f_TC_speech_no_rtp), pars); + vc_conn.done; +} +testcase TC_speech_no_rtp_tchh() runs on test_CT { + var ConnHdlr vc_conn; + var ConnHdlrPars pars; + + f_init(); + + /* TS5, TCH/H, V1 (HR codec) */ + pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1))); + vc_conn := f_start_handler(refers(f_TC_speech_no_rtp), pars); + vc_conn.done; +} + /* test generation of RLL ERR IND based on Um errors (TS 48.058 3.9) */ /* protocol error as per 44.006 */ /* link layer failure (repetition of I-frame N200 times without ACK */ @@ -7259,6 +7320,9 @@ control { execute( TC_ms_pwr_ctrl_constant() ); execute( TC_ms_pwr_ctrl_pf_ewma() ); + + execute( TC_speech_no_rtp_tchf() ); + execute( TC_speech_no_rtp_tchh() ); }