osmo-ttcn3-hacks/hnodeb/HNBGW_ConnectionHandler.ttcn

113 lines
2.8 KiB
Plaintext

module HNBGW_ConnectionHandler {
/* HNBGW Connection Handler of HNB_Tests in TTCN-3
* (C) 2021 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
* All rights reserved.
*
* Released under the terms of GNU General Public License, Version 2 or
* (at your option) any later version.
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
import from Misc_Helpers all;
import from General_Types all;
import from Osmocom_Types all;
import from IPL4asp_Types all;
import from Native_Functions all;
import from SDP_Types all;
import from StatsD_Checker all;
import from TELNETasp_PortType all;
import from Osmocom_VTY_Functions all;
import from HNBAP_Templates all;
import from Iuh_Emulation all;
/* this component represents a single Iuh connection at the HNBGW. */
type component HNBGW_ConnHdlr extends StatsD_ConnHdlr {
port TELNETasp_PT HNBVTY;
port HNBAP_PT HNBAP;
port RUA_PT RUA;
var TestHdlrParams g_pars;
var boolean g_vty_initialized := false;
}
function f_HNBGW_ConnHdlr_init_vty() runs on HNBGW_ConnHdlr {
if (not g_vty_initialized) {
map(self:HNBVTY, system:HNBVTY);
f_vty_set_prompts(HNBVTY);
f_vty_transceive(HNBVTY, "enable");
g_vty_initialized := true;
}
}
/* initialize all parameters */
function f_HNBGW_ConnHdlr_init(TestHdlrParams pars) runs on HNBGW_ConnHdlr {
var integer i := 0;
var Iuh_Emulation_CT vc_Iuh;
g_pars := valueof(pars);
vc_Iuh := Iuh_Emulation_CT.create("HNBGW" & int2str(i));
connect(self:HNBAP, vc_Iuh:HNBAP);
connect(self:RUA, vc_Iuh:RUA);
var Iuh_conn_parameters iuh_pars;
iuh_pars.remote_ip := g_pars.hnodeb_addr;
iuh_pars.remote_sctp_port := -1;
iuh_pars.local_ip := g_pars.hnbgw_addr;
iuh_pars.local_sctp_port := g_pars.hnbgw_port;
vc_Iuh.start(Iuh_Emulation.main(iuh_pars, "Iuh" & int2str(i)));
f_HNBGW_ConnHdlr_init_vty();
}
type record TestHdlrParams {
charstring hnbgw_addr,
charstring hnodeb_addr,
integer hnbgw_port,
uint16_t rnc_id,
charstring hNB_Identity_Info,
OCT3 plmnid,
uint32_t cell_identity,
uint16_t lac,
uint8_t rac,
uint8_t sac
};
/* Note: Do not use valueof() to get a value of this template, use
* f_gen_test_hdlr_pars() instead in order to get a configuration. */
template (value) TestHdlrParams t_def_TestHdlrPars := {
hnbgw_addr := "127.0.0.1",
hnodeb_addr := "127.0.0.1",
hnbgw_port := 29169,
rnc_id := 23,
hNB_Identity_Info := "OsmoHNodeB",
plmnid := '00F110'O,
cell_identity := 1,
lac := 2,
rac := 3,
sac := 4
}
function f_handle_hnbap_hnb_register_req()
runs on HNBGW_ConnHdlr {
HNBAP.receive(tr_HNBAP_HNBRegisterRequest(char2oct(g_pars.hNB_Identity_Info),
g_pars.plmnid,
int2bit(g_pars.cell_identity, 28),
int2oct(g_pars.lac, 2),
int2oct(g_pars.rac, 1),
int2oct(g_pars.sac, 2)
));
HNBAP.send(ts_HNBAP_HNBRegisterAccept(g_pars.rnc_id));
}
}