BSC_Tests: Re-wire MSC_ConnectionHandler to handle BSSAP and RSL

Using the MSC_ConnHdlr component, we can now handle the BSSAP (MSC)
and RSL (BTS) side of a single radio channel.

Change-Id: I00dcf1e4eaa7f133788cc01fbbcd4148a0258ef4
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index c824415..2e43375 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1254,6 +1254,55 @@
 
 /* TODO: Test OML link drop causes counter increment */
 
+/***********************************************************************
+ * "New world" test cases using RSL_Emulation + BSSMAP_Emulation
+ ***********************************************************************/
+
+import from BSSMAP_Emulation all;
+import from RSL_Emulation all;
+import from MSC_ConnectionHandler all;
+
+type function void_fn(charstring id) runs on MSC_ConnHdlr;
+
+/* helper function to create, connect and start a MSC_ConnHdlr component */
+function f_start_handler(void_fn fn, charstring id) runs on test_CT return MSC_ConnHdlr {
+	var MSC_ConnHdlr vc_conn;
+
+	vc_conn := MSC_ConnHdlr.create(id);
+	connect(vc_conn:BSSMAPEM, vc_BSSMAP:PROC);
+	connect(vc_conn:RSL, bts[0].rsl.vc_RSL:CLIENT_PT);
+	connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT);
+	vc_conn.start(derefers(fn)(id));
+	return vc_conn;
+}
+
+
+private function f_ass(charstring id) runs on MSC_ConnHdlr {
+	var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+
+	var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, ?);
+	var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342));
+	var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla));
+	const OCT8 kc := '0001020304050607'O;
+
+	ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType);
+	ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+	ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation :=
+							valueof(ts_BSSMAP_IE_EncrInfo(kc, '02'O));
+
+	f_establish_fully(pars, ass_cmd, exp_compl);
+}
+
+testcase TC_hdlr() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+
+	f_init(true);
+	f_sleep(1.0);
+
+	vc_conn := f_start_handler(refers(f_ass), "foo");
+	vc_conn.done;
+}
+
 control {
 	execute( TC_ctrl_msc_connection_status() );
 	execute( TC_ctrl() );