diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-07-27 22:32:30 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2021-08-06 14:03:28 +0000 |
commit | 2edc2cd742ae4e0db83bb4248a6c285eb2400e92 (patch) | |
tree | 77c711003f54c65968838ffa41f92e25a54b3c70 | |
parent | 5c449f346e2580fccbb266ec0587603ca8909ebd (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.ttcn | 16 |
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); |