BSC_Tests: remove copy+paste CHAN RQD -> CHAN ACT -> CHAN ACK

... and replace it with a function

Change-Id: Id75cc92ddf1c1833c892a7bfa77d6561fd0f3679
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index aa8150a..14ba97d 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -255,10 +255,7 @@
 	f_bssap_reset();
 
 	/* Send CHAN RQD and wait for allocation; acknowledge it */
-	f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23));
-	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
-	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
-	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23));
+	var RslChannelNr chan_nr := f_chreq_act_ack();
 
 	/* expect BSC to disable the channel again if there's no RLL EST IND */
 	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);
@@ -274,10 +271,7 @@
 	f_bssap_reset();
 
 	/* Send CHAN RQD and wait for allocation; acknowledge it */
-	f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23));
-	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
-	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
-	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23));
+	var RslChannelNr chan_nr := f_chreq_act_ack();
 
 	var octetstring l3 := '00010203040506'O
 	f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
@@ -299,10 +293,7 @@
 	f_bssap_reset();
 
 	/* Send CHAN RQD and wait for allocation; acknowledge it */
-	f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23));
-	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
-	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
-	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23));
+	var RslChannelNr chan_nr := f_chreq_act_ack();
 
 	var octetstring l3 := '00010203040506'O
 	f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
@@ -321,18 +312,25 @@
 	RslChannelNr rsl_chan_nr
 }
 
+/* Send CHAN RQD and wait for allocation; acknowledge it */
+private function f_chreq_act_ack(OCT1 ra := '23'O, GsmFrameNumber fn := 23)
+runs on test_CT return RslChannelNr {
+	var RSL_Message rx_rsl;
+	f_ipa_tx(0, ts_RSL_CHAN_RQD(ra, fn));
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
+	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
+	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));
+	return chan_nr;
+}
+
 /* helper function to establish a dedicated channel via BTS and MSC */
 function f_est_dchan(OCT1 ra, GsmFrameNumber fn, octetstring l3)
 runs on test_CT return DchanTuple {
 	var BSSAP_N_CONNECT_ind rx_c_ind;
-	var RSL_Message rx_rsl;
 	var DchanTuple dt;
 
 	/* Send CHAN RQD and wait for allocation; acknowledge it */
-	f_ipa_tx(0, ts_RSL_CHAN_RQD(ra, fn));
-	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
-	dt.rsl_chan_nr := rx_rsl.ies[0].body.chan_nr;
-	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(dt.rsl_chan_nr, fn+1));
+	dt.rsl_chan_nr := f_chreq_act_ack(ra, fn);
 
 	f_ipa_tx(0, ts_RSL_EST_IND(dt.rsl_chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
 
@@ -409,7 +407,6 @@
 /* Test behavior of channel release after hard Clear Command from MSC */
 testcase TC_chan_rel_hard_clear() runs on test_CT {
 	var BSSAP_N_DATA_ind rx_di;
-	var RSL_Message rx_rsl;
 	var DchanTuple dt;
 	var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));
 
@@ -456,7 +453,6 @@
 
 /* Test behavior of channel release after hard RLSD from MSC */
 testcase TC_chan_rel_hard_rlsd() runs on test_CT {
-	var RSL_Message rx_rsl;
 	var DchanTuple dt;
 	var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));
 
@@ -496,7 +492,6 @@
 
 /* Test behavior of channel release after BSSMAP RESET from MSC */
 testcase TC_chan_rel_a_reset() runs on test_CT {
-	var RSL_Message rx_rsl;
 	var DchanTuple dt;
 	var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));