diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 9503bec0b..89d1d2c1b 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -2099,6 +2099,25 @@ private function f_est_dchan(boolean encr_enable := false, RSL_IE_List more_ies f_L1CTL_CRYPTO_REQ(L1CTL, g_pars.chan_nr, alg_id, g_pars.encr.key); } + /* Send TCH Mode Request to the L1 if needed */ + if (match(g_pars.chan_mode.spd_ind, (RSL_SPDI_SPEECH, RSL_SPDI_DATA))) { + var L1ctlTchMode tch_mode; + + select (g_pars.chan_mode.coding_alg_rate) { + case (RSL_CMOD_NO_RESOURCE) { tch_mode := L1CTL_CHAN_MODE_SIGN; } + case (RSL_CMOD_SP_GSM1) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V1; } + case (RSL_CMOD_SP_GSM2) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V2; } + case (RSL_CMOD_SP_GSM3) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V3; } + case else { + log("RSL channel mode := ", g_pars.chan_mode.coding_alg_rate, + " is not supported by the L1, falling back to signalling"); + tch_mode := L1CTL_CHAN_MODE_SIGN; + } + } + + f_L1CTL_TCH_MODE(L1CTL, tch_mode); + } + g_first_meas_res := true; } diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn index 7d69b4665..19b3ee39e 100644 --- a/library/L1CTL_PortType.ttcn +++ b/library/L1CTL_PortType.ttcn @@ -80,6 +80,20 @@ module L1CTL_PortType { } } + function f_L1CTL_TCH_MODE(L1CTL_PT pt, L1ctlTchMode tch_mode) { + timer T := 2.0; + pt.send(ts_L1CTL_TCH_MODE_REQ(tch_mode)); + T.start; + alt { + [] pt.receive(tr_L1CTL_MsgType(L1CTL_TCH_MODE_CONF)) { } + [] pt.receive { repeat; } + [] T.timeout { + setverdict(fail, "Timeout waiting for L1CTL_TCH_MODE_CONF"); + mtc.stop; + } + } + } + function f_L1CTL_RACH(L1CTL_PT pt, uint8_t ra, uint8_t combined := 1, uint16_t offset := 0, template (value) RslChannelNr chan_nr := ts_RslChanNr_RACH(0), template (value) RslLinkId link_id := ts_RslLinkID_DCCH(0))