aboutsummaryrefslogtreecommitdiffstats
path: root/bsc
diff options
context:
space:
mode:
Diffstat (limited to 'bsc')
-rw-r--r--bsc/BSC_Tests.ttcn27
-rw-r--r--bsc/BSSAP_Adapter.ttcn23
-rwxr-xr-xbsc/gen_links.sh2
-rwxr-xr-xbsc/regen_makefile.sh2
4 files changed, 42 insertions, 12 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 42de6be5..c8244151 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -12,6 +12,7 @@ import from BSSMAP_Templates all;
import from IPA_Emulation all;
import from IPA_Types all;
import from RSL_Types all;
+import from RSL_Emulation all;
import from Osmocom_CTRL_Functions all;
import from Osmocom_CTRL_Types all;
@@ -75,10 +76,13 @@ modulepar {
type record IPA_Client {
IPA_Emulation_CT vc_IPA,
IPA_CCM_Parameters ccm_pars,
- charstring id
+ charstring id,
+
+ RSL_Emulation_CT vc_RSL optional
}
-function f_ipa_rsl_start(inout IPA_Client clnt, charstring bsc_host, PortNumber bsc_port, integer i)
+function f_ipa_rsl_start(inout IPA_Client clnt, charstring bsc_host, PortNumber bsc_port, integer i,
+ boolean handler_mode := false)
runs on test_CT {
timer T := 10.0;
@@ -87,11 +91,22 @@ runs on test_CT {
clnt.ccm_pars := c_IPA_default_ccm_pars;
clnt.ccm_pars.name := "Osmocom TTCN-3 BTS Simulator";
clnt.ccm_pars.unit_id := int2str(1234+i) & "/0/0";
+ if (handler_mode) {
+ clnt.vc_RSL := RSL_Emulation_CT.create(clnt.id & "-RSL");
+ }
map(clnt.vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
- connect(clnt.vc_IPA:IPA_RSL_PORT, self:IPA_RSL[i]);
+ if (handler_mode) {
+ connect(clnt.vc_IPA:IPA_RSL_PORT, clnt.vc_RSL:IPA_PT);
+ } else {
+ connect(clnt.vc_IPA:IPA_RSL_PORT, self:IPA_RSL[i]);
+ }
clnt.vc_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", 10000+i, clnt.ccm_pars));
+ if (handler_mode) {
+ clnt.vc_RSL.start(RSL_Emulation.main());
+ return;
+ }
/* wait for IPA RSL link to connect and send ID ACK */
T.start;
@@ -170,7 +185,7 @@ altstep as_Tguard() runs on test_CT {
}
}
-function f_init() runs on test_CT {
+function f_init(boolean handler_mode := false) runs on test_CT {
var integer i;
if (g_initialized) {
@@ -180,14 +195,14 @@ function f_init() runs on test_CT {
/* Call a function of our 'parent component' BSSAP_Adapter_CT to start the
* MSC-side BSSAP emulation */
- f_bssap_init("VirtMSC");
+ f_bssap_init("VirtMSC", handler_mode);
f_ipa_ctrl_start(ctrl, mp_bsc_ip, mp_bsc_ctrl_port, 0);
for (i := 0; i < NUM_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);
+ 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);
}
diff --git a/bsc/BSSAP_Adapter.ttcn b/bsc/BSSAP_Adapter.ttcn
index 60c71037..f1ff5b6b 100644
--- a/bsc/BSSAP_Adapter.ttcn
+++ b/bsc/BSSAP_Adapter.ttcn
@@ -22,6 +22,9 @@ import from SCTPasp_PortType all;
import from BSSAP_CodecPort all;
import from BSSMAP_Templates all;
+import from BSSMAP_Emulation all;
+
+import from MSC_ConnectionHandler all;
type component BSSAP_Adapter_CT {
/* component references */
@@ -33,6 +36,9 @@ type component BSSAP_Adapter_CT {
var octetstring g_sio;
var MSC_SCCP_MTP3_parameters g_sccp_pars;
var SCCP_PAR_Address g_sccp_addr_own, g_sccp_addr_peer;
+
+ /* handler mode */
+ var BSSMAP_Emulation_CT vc_BSSMAP;
}
modulepar {
@@ -79,24 +85,33 @@ private function init_pars() runs on BSSAP_Adapter_CT {
}
-function f_bssap_init(charstring id) runs on BSSAP_Adapter_CT
+function f_bssap_init(charstring id, boolean handler_mode := false) runs on BSSAP_Adapter_CT
{
init_pars();
/* create components */
vc_M3UA := M3UA_CT.create(id & "-M3UA");
vc_SCCP := SCCP_CT.create(id & "-SCCP");
+ if (handler_mode) {
+ vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP");
+ }
map(vc_M3UA:SCTP_PORT, system:sctp);
/* connect MTP3 service provider (M3UA) to lower side of SCCP */
connect(vc_M3UA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT);
-
- /* connect BSSNAP dispatcher to upper side of SCCP */
- connect(self:BSSAP, vc_SCCP:SCCP_SP_PORT);
+ if (handler_mode) {
+ connect(vc_BSSMAP:BSSAP, vc_SCCP:SCCP_SP_PORT);
+ } else {
+ /* connect BSSNAP dispatcher to upper side of SCCP */
+ connect(self:BSSAP, vc_SCCP:SCCP_SP_PORT);
+ }
vc_M3UA.start(f_M3UA_Emulation(mp_sctp_addr));
vc_SCCP.start(SCCPStart(g_sccp_pars));
+ if (handler_mode) {
+ vc_BSSMAP.start(BSSMAP_Emulation.main(MSC_BssmapOps, ""));
+ }
}
private altstep as_reset_ack() runs on BSSAP_Adapter_CT {
diff --git a/bsc/gen_links.sh b/bsc/gen_links.sh
index e46bee1a..5d8555a8 100755
--- a/bsc/gen_links.sh
+++ b/bsc/gen_links.sh
@@ -76,5 +76,5 @@ FILES="RTP_EncDec.cc RTP_Types.ttcn"
gen_links $DIR $FILES
DIR=../library
-FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn"
+FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn"
gen_links $DIR $FILES
diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh
index 8b8fa435..d9374828 100755
--- a/bsc/regen_makefile.sh
+++ b/bsc/regen_makefile.sh
@@ -2,6 +2,6 @@
MAIN=BSC_Tests.ttcn
-FILES="*.ttcn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc *.c"
+FILES="*.ttcn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc *.c"
../regen-makefile.sh $MAIN $FILES