bts: new f_rsl_transceive_ret(): like f_rsl_transceive() with return value

Change-Id: I0cdc6b87566b9d101ecb12a77eac18a50689e088
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index ecb5497..b68e99b 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -393,14 +393,15 @@
 	fn.apply(id);
 }
 
-function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id,
-			  boolean ignore_other := false)
-runs on ConnHdlr {
+function f_rsl_transceive_ret(template RSL_Message tx, template RSL_Message exp_rx, charstring id,
+				boolean ignore_other := false)
+runs on ConnHdlr return RSL_Message {
+	var RSL_Message rx;
 	timer T := 3.0;
 	RSL.send(tx);
 	T.start;
 	alt {
-	[] RSL.receive(exp_rx) {
+	[] RSL.receive(exp_rx) -> value rx {
 		T.stop;
 		setverdict(pass);
 		}
@@ -413,9 +414,17 @@
 	[not ignore_other] as_l1_dcch();
 	[not ignore_other] RSL.receive {
 		setverdict(fail, "Unexpected RSL message received");
+		self.stop;
 		}
 	[ignore_other] RSL.receive { repeat; }
 	}
+	return rx;
+}
+
+function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id,
+			  boolean ignore_other := false)
+runs on ConnHdlr {
+	var RSL_Message rx := f_rsl_transceive_ret(tx, exp_rx, id, ignore_other);
 }
 
 function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr {