BSSAP_Adapter: Split f_bssap_start() from f_bssap_init()

In non-handler mode, the SCCP emulation is currently started before
there's a user registered to SCCP_SP_PORT.  If the first BSSMAP
package arrives from the network, then the SCCP_Emulation will crash
as it cannot deliver the resulting SCCP user primitive to the user.

Let's split start from initialization, so user code can still register
something to SCCP_SP_PORT before starting SCCP_Emulation.

Change-Id: I55c94f18531bb7e5369500dc90f4b0ff3a420774
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 936544b..906e214 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -312,6 +312,8 @@
 		connect(self:BSSAP, g_bssap.vc_SCCP:SCCP_SP_PORT);
 		f_legacy_bssap_reset();
 	}
+	f_bssap_start(g_bssap);
+
 	f_ipa_ctrl_start(mp_bsc_ip, mp_bsc_ctrl_port);
 
 	f_init_mgcp("VirtMSC");
diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn
index 7f03f33..e50487d 100644
--- a/library/BSSAP_Adapter.ttcn
+++ b/library/BSSAP_Adapter.ttcn
@@ -164,9 +164,12 @@
 		ba.vc_BSSMAP.start(BSSMAP_Emulation.main(valueof(ops), ""));
 	}
 
-	ba.vc_SCCP.start(SCCPStart(ba.sccp_pars));
 
 }
 
+function f_bssap_start(inout BSSAP_Adapter ba) {
+	ba.vc_SCCP.start(SCCPStart(ba.sccp_pars));
+}
+
 
 }
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 56ac3d3..f843839 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -228,6 +228,7 @@
 	for (var integer i := 0; i < num_bsc; i := i + 1) {
 		if (isbound(mp_bssap_cfg[i])) {
 			f_bssap_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), BSC_BssmapOps);
+			f_bssap_start(g_bssap[i]);
 		} else {
 			setverdict(fail, "missing BSSAP configuration");
 		}