aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-07-27 22:32:30 +0200
committerlaforge <laforge@osmocom.org>2021-08-06 14:03:28 +0000
commit2edc2cd742ae4e0db83bb4248a6c285eb2400e92 (patch)
tree77c711003f54c65968838ffa41f92e25a54b3c70
parent5c449f346e2580fccbb266ec0587603ca8909ebd (diff)
MNCC_Emulation: allow moving call handling to another test component
Will be used by MSC_Tests.TC_call_re_establishment in Ifdff5573eeb3b3d41e8599b9b0228411d2576864 where a call from one vc_conn gets re-established in another vc_conn. Related: SYS#5130 Change-Id: If7e952e54ebd1bb88cce11ec5f0ff4826e02cb63
-rw-r--r--library/MNCC_Emulation.ttcn16
1 files changed, 15 insertions, 1 deletions
diff --git a/library/MNCC_Emulation.ttcn b/library/MNCC_Emulation.ttcn
index 49b1249c..66294a4a 100644
--- a/library/MNCC_Emulation.ttcn
+++ b/library/MNCC_Emulation.ttcn
@@ -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);