bsc: split f_init_bts() from f_init()

For SI tests, it is necessary to first startup the VTY, then issue some config
commands, and only then start up the BTSes. By this separation that can be done
by:

  f_init(nr_bts := 0);
  f_vty_transceive(...);
  f_init_bts(bts_idx := 0);

Will be used by upcoming System Information tests.

Change-Id: I24afb07735c3827f52760214fcb7a239190c3402
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index f25c75d..f6e1b2c 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -433,7 +433,6 @@
 function f_init(integer nr_bts := NUM_BTS, boolean handler_mode := false, boolean allow_osmux := false,
 		integer nr_msc := 1, float guard_timeout := 30.0) runs on test_CT {
 	var integer bssap_idx;
-	var integer i;
 
 	if (g_initialized) {
 		return;
@@ -469,15 +468,20 @@
 
 	f_init_mgcp("VirtMSC");
 
-	for (i := 0; i < nr_bts; i := i+1) {
-		/* wait until osmo-bts-omldummy has respawned */
-		f_wait_oml(i, "degraded", 5.0);
-		/* start RSL connection */
-		f_ipa_rsl_start(bts[i].rsl, mp_bsc_ip, mp_bsc_rsl_port, i, handler_mode);
-		/* wait until BSC tells us "connected" */
-		f_wait_oml(i, "connected", 5.0);
+	for (var integer i := 0; i < nr_bts; i := i+1) {
+		f_init_bts(i, handler_mode);
 	}
+}
 
+function f_init_bts(integer bts_idx := 0, boolean handler_mode := false)
+runs on test_CT {
+	/* wait until osmo-bts-omldummy has respawned */
+	f_wait_oml(bts_idx, "degraded", 5.0);
+
+	/* start RSL connection */
+	f_ipa_rsl_start(bts[bts_idx].rsl, mp_bsc_ip, mp_bsc_rsl_port, bts_idx, handler_mode);
+	/* wait until BSC tells us "connected" */
+	f_wait_oml(bts_idx, "connected", 5.0);
 }
 
 /* expect to receive a RSL message matching a specified template on a given BTS / stream */