aboutsummaryrefslogtreecommitdiffstats
path: root/library/MNCC_Emulation.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/MNCC_Emulation.ttcn')
-rw-r--r--library/MNCC_Emulation.ttcn18
1 files changed, 16 insertions, 2 deletions
diff --git a/library/MNCC_Emulation.ttcn b/library/MNCC_Emulation.ttcn
index 49b1249c..85556c1f 100644
--- a/library/MNCC_Emulation.ttcn
+++ b/library/MNCC_Emulation.ttcn
@@ -38,7 +38,7 @@ import from MNCC_Types all;
import from UD_Types all;
modulepar {
- int mp_mncc_version := 7;
+ int mp_mncc_version := 8;
}
/* General "base class" component definition, of which specific implementations
@@ -287,6 +287,7 @@ runs on MNCC_Emulation_CT {
var MNCC_PDU mncc;
var MNCC_ConnHdlr vc_hdlr;
var charstring dest_nr;
+ var uint32_t mncc_call_id;
alt {
/* MNCC -> Client: UNIT-DATA (connectionless SCCP) from a BSC */
@@ -360,6 +361,11 @@ runs on MNCC_Emulation_CT {
MNCC_PROC.reply(MNCCEM_register:{dest_nr, vc_hdlr}) to vc_hdlr;
}
+ [] MNCC_PROC.getcall(MNCCEM_change_connhdlr:{?,?}) -> param(mncc_call_id, vc_hdlr) {
+ f_call_table_del(mncc_call_id);
+ f_call_table_add(vc_hdlr, mncc_call_id);
+ MNCC_PROC.reply(MNCCEM_change_connhdlr:{mncc_call_id, vc_hdlr}) to vc_hdlr;
+ }
}
}
}
@@ -384,9 +390,10 @@ type record ExpectData {
/* procedure based port to register for incoming calls */
signature MNCCEM_register(in charstring dest_nr, in MNCC_ConnHdlr hdlr);
+signature MNCCEM_change_connhdlr(in uint32_t mncc_call_id, in MNCC_ConnHdlr hdlr);
type port MNCCEM_PROC_PT procedure {
- inout MNCCEM_register;
+ inout MNCCEM_register, MNCCEM_change_connhdlr;
} with { extension "internal" };
/* CreateCallback that can be used as create_cb and will use the expectation table */
@@ -445,6 +452,13 @@ function f_create_mncc_expect(charstring dest_number) runs on MNCC_ConnHdlr {
}
}
+/* Move MNCC handling for a given call id to another MNCC_ConnHdlr test component. */
+function f_mncc_change_connhdlr(uint32_t mncc_call_id) runs on MNCC_ConnHdlr {
+ MNCC_PROC.call(MNCCEM_change_connhdlr:{mncc_call_id, self}) {
+ [] MNCC_PROC.getreply(MNCCEM_change_connhdlr:{?,?}) {};
+ }
+}
+
function DummyUnitdataCallback(MNCC_PDU mncc)
runs on MNCC_Emulation_CT return template MNCC_PDU {
log("Ignoring MNCC ", mncc);