BTS_Tests: indicate TCH mode to the L1 in f_est_dchan()
Otherwise the L1 (trxcon or Calypso PHY) would 'think' that we're
in signalling mode, and would not send us Bad Frame Indications.
Change-Id: I0ade3bd63f604c7f0665124b182a023d50030d0b
Depends: I6f403ed0506b4b1872361d9976d3186bfe514b52
Related: OS#4799
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 9503bec..89d1d2c 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -2099,6 +2099,25 @@
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 7d69b46..19b3ee3 100644
--- a/library/L1CTL_PortType.ttcn
+++ b/library/L1CTL_PortType.ttcn
@@ -80,6 +80,20 @@
}
}
+ 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))