diff options
Diffstat (limited to 'library/MNCC_Emulation.ttcn')
-rw-r--r-- | library/MNCC_Emulation.ttcn | 18 |
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); |