bts: Introduce f_rsl_transceive() and reduce code duplication
Change-Id: I56de61e08bd1508a0531f720561ead84d1075de3
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 00143bf..267d7a3 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -225,34 +225,36 @@
fn.apply(id);
}
-
-function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr {
- RSL.send(ts_RSL_CHAN_ACT(g_chan_nr, mode));
+function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id)
+runs on ConnHdlr {
+ timer T := 3.0;
+ RSL.send(tx);
+ T.start;
alt {
- [] RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr)) {
- g_Tmeas_exp.start;
+ [] RSL.receive(exp_rx) {
+ T.stop;
+ setverdict(pass);
}
- [] RSL.receive(tr_RSL_CHAN_ACT_NACK(g_chan_nr)) {
- setverdict(fail, "Unexpected RF CHAN ACT NACK");
+ [] T.timeout {
+ setverdict(fail, "Timeout expecting " & id);
+ self.stop;
+ }
+ [] RSL.receive {
+ setverdict(fail, "Unexpected RSL message received");
}
}
}
+function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr {
+ f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, mode), tr_RSL_CHAN_ACT_ACK(g_chan_nr),
+ "RSL CHAN ACT");
+}
+
function f_rsl_chan_deact() runs on ConnHdlr {
- timer T := 3.0;
- RSL.send(ts_RSL_RF_CHAN_REL(g_chan_nr));
- T.start;
- alt {
- [] RSL.receive(tr_RSL_RF_CHAN_REL_ACK(g_chan_nr)) {
- g_Tmeas_exp.stop;
- }
- [] T.timeout {
- setverdict(fail, "Timeout waiting for RF CHAN REL ACK");
- }
- }
+ f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr),
+ "RF CHAN REL");
}
-
private template ConnHdlrPars t_Pars(template RslChannelNr chan_nr,
template RSL_IE_ChannelMode chan_mode,
float t_guard := 20.0) := {
@@ -1001,20 +1003,8 @@
/* Send IPA DLCX to inactive lchan */
function f_TC_ipa_dlcx_not_active(charstring id) runs on ConnHdlr {
- timer T := 3.0;
- RSL.send(ts_RSL_IPA_DLCX(g_chan_nr, 0));
- T.start;
- alt {
- [] RSL.receive(tr_RSL_IPA_DLCX_ACK(g_chan_nr, ?, ?)) {
- setverdict(pass);
- }
- [] RSL.receive(tr_RSL_IPA_DLCX_NACK(g_chan_nr, ?)) {
- setverdict(fail);
- }
- [] T.timeout {
- setverdict(fail, "Timeout expecting RF_CHAN_REL_ACK");
- }
- }
+ f_rsl_transceive(ts_RSL_IPA_DLCX(g_chan_nr, 0), tr_RSL_IPA_DLCX_ACK(g_chan_nr, ?, ?),
+ "IPA DLCX ACK");
}
testcase TC_ipa_dlcx_not_active() runs on test_CT {
var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));