BSC_ConnectionHandler.ttcn: split up f_mt_sms() into two functions

This would allow to expect a MT SMS message using f_mt_sms_expect()
and send an RP-ACK using f_mt_sms_send_rp_ack() separately in the
follow-up changes for SMS over GSUP.

Change-Id: I4730634a9f3352b6f8553ee2fd1d43044f41241e
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 17d9591..e66a3e6 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -874,17 +874,13 @@
 	f_mo_sms_wait_rp_ack(spars);
 }
 
-/* receive MT-SMS delivered from the MSC/SMSC over an already existing DTAP connection */
-function f_mt_sms(inout SmsParameters spars)
+/* Wait for MT SMS on an already existing DTAP connection */
+function f_mt_sms_expect(inout SmsParameters spars)
 runs on BSC_ConnHdlr {
-	var template (value) TPDU_RP_DATA_MS_SGSN tp_mo;
-	var template (value) RPDU_MS_SGSN rp_mo;
 	var template (value) PDU_ML3_MS_NW l3_mo;
-
 	var template TPDU_RP_DATA_SGSN_MS tp_mt;
 	var template RPDU_SGSN_MS rp_mt;
 	var template PDU_ML3_NW_MS l3_mt;
-
 	var PDU_DTAP_MT dtap_mt;
 
 	var default d := activate(as_other_sms());
@@ -894,6 +890,7 @@
 	rp_mt := tr_RP_DATA_MT(?, ?, omit, tp_mt);
 	l3_mt := tr_ML3_MT_SMS(?, c_TIF_ORIG, tr_CP_DATA_MT(rp_mt));
 	BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)) -> value dtap_mt;
+
 	/* Extract relevant identifiers */
 	spars.tid := bit2int(dtap_mt.dtap.tiOrSkip.transactionId.tio);
 	spars.rp.msg_ref := dtap_mt.dtap.msgs.sms.cP_DATA.cP_User_Data.cP_RPDU.rP_DATA_SGSN_MS.rP_MessageReference;
@@ -902,6 +899,19 @@
 	l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_ACK_MO);
 	BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true));
 
+	deactivate(d);
+	setverdict(pass);
+}
+
+/* Send RP-ACK for MT-SMS over an already existing DTAP connection */
+function f_mt_sms_send_rp_ack(inout SmsParameters spars)
+runs on BSC_ConnHdlr {
+	var template (value) RPDU_MS_SGSN rp_mo;
+	var template (value) PDU_ML3_MS_NW l3_mo;
+	var template PDU_ML3_NW_MS l3_mt;
+
+	var default d := activate(as_other_sms());
+
 	/* send RP-ACK for RP-DATA */
 	rp_mo := ts_RP_ACK_MO(spars.rp.msg_ref);
 	l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_DATA_MO(rp_mo));
@@ -915,6 +925,13 @@
 	setverdict(pass);
 }
 
+/* Wait for a MT-SMS and send RP-ACK over an already existing
+ * (and authenticated, ...) DTAP connection */
+function f_mt_sms(inout SmsParameters spars)
+runs on BSC_ConnHdlr {
+	f_mt_sms_expect(spars);
+	f_mt_sms_send_rp_ack(spars);
+}