hnodeb: Adapt HNBLIF to latest changes
Change-Id: I50a1b9be579ace9f0f85c6c68b5648d504f5f51c
This commit is contained in:
parent
fbf3345065
commit
2514245bbd
|
@ -296,6 +296,7 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
|
|||
var HostName hnodeb_rtp_addr;
|
||||
var PortNumber hnodeb_rtp_port;
|
||||
timer Tu;
|
||||
var uint32_t audio_conn_id;
|
||||
|
||||
f_handle_hnbap_hnb_register_req();
|
||||
|
||||
|
@ -317,8 +318,9 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
|
|||
/* Now LLSK provides the remote TransportLayerAddress from RabAssReq and asks SUT to provide a local address: */
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_ESTABLISH_REQ(context_id, g_pars.hnbgw_rtp_port, HNBLL_IF_ADDR_TYPE_IPV4,
|
||||
f_HNBLLIF_Addr(HNBLL_IF_ADDR_TYPE_IPV4, g_pars.hnbgw_addr))));
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(context_id, 0, ?, HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(context_id, ?, 0, ?, HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
|
||||
|
||||
audio_conn_id := sd.data.u.audio.u.conn_establish.u.cnf.audio_conn_id;
|
||||
hnodeb_rtp_addr := f_inet_ntoa(sd.data.u.audio.u.conn_establish.u.cnf.local_addr);
|
||||
if (not match(g_pars.hnodeb_addr, hnodeb_rtp_addr)) {
|
||||
Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "hnodeb RTP local address doesn't match expectations");
|
||||
|
@ -328,7 +330,7 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
|
|||
f_HNBGW_rtpem_activate(rtp_payload, hnodeb_rtp_addr, hnodeb_rtp_port);
|
||||
/* Make sure that Uplink frames are received at the HNBGW */
|
||||
RTPEM_DATA.clear;
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_DATA_REQ(context_id, rtp_payload)));
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_DATA_REQ(audio_conn_id, rtp_payload)));
|
||||
Tu.start(2.0);
|
||||
alt {
|
||||
[] RTPEM_DATA.receive(PDU_RTP:?) -> value rtp_pdu {
|
||||
|
@ -344,11 +346,11 @@ private function f_tc_cs_mo_call(charstring id) runs on HNBGW_ConnHdlr {
|
|||
}
|
||||
Tu.stop;
|
||||
/* We should also have received some RTP from the HNBGW: */
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_DATA_IND(context_id, rtp_payload)));
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_DATA_IND(audio_conn_id, rtp_payload)));
|
||||
|
||||
f_rtpem_mode(RTPEM_CTRL, RTPEM_MODE_NONE);
|
||||
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(context_id)));
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(audio_conn_id)));
|
||||
|
||||
/* UE sends Iu Release Complete to release the conn */
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_IUH_CONN_RELEASE_REQ(context_id, 0, 0, 0, hex2oct(iu_release_compl))));
|
||||
|
@ -371,6 +373,7 @@ private function f_tc_ps_mo_gtp_ping_pong(charstring id) runs on HNBGW_ConnHdlr
|
|||
var uint32_t local_tei;
|
||||
var octetstring gtp_payload := f_rnd_octstring(40);
|
||||
var HNBLLIF_send_data sd;
|
||||
var uint32_t gtp_conn_id;
|
||||
|
||||
f_gtp_register_teid(int2oct(remote_tei, 4));
|
||||
|
||||
|
@ -394,18 +397,19 @@ private function f_tc_ps_mo_gtp_ping_pong(charstring id) runs on HNBGW_ConnHdlr
|
|||
/* Now LLSK provides the remote TransportLayerAddress from RabAssReq and asks SUT to provide a local address: */
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_ESTABLISH_REQ(context_id, remote_tei, HNBLL_IF_ADDR_TYPE_IPV4,
|
||||
f_HNBLLIF_Addr(HNBLL_IF_ADDR_TYPE_IPV4, g_pars.hnbgw_addr))));
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(context_id, ?, 0,
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(context_id, ?, ?, 0,
|
||||
HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
|
||||
gtp_conn_id := sd.data.u.gtp.u.conn_establish.u.cnf.gtp_conn_id;
|
||||
local_tei := sd.data.u.gtp.u.conn_establish.u.cnf.local_tei;
|
||||
|
||||
/* Forward GTP data in both directions */
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_DATA_REQ(context_id, remote_tei, gtp_payload)));
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_DATA_REQ(gtp_conn_id, gtp_payload)));
|
||||
GTP.receive(tr_GTPU_GPDU(ts_GtpPeerU(g_pars.hnodeb_addr), int2oct(remote_tei, 4), gtp_payload));
|
||||
f_gtpu_send(local_tei, gtp_payload);
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_DATA_IND(context_id, local_tei, gtp_payload)));
|
||||
LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_DATA_IND(gtp_conn_id, gtp_payload)));
|
||||
|
||||
/* Done, release GTP conn */
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_RELEASE_REQ(context_id, remote_tei)));
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_RELEASE_REQ(gtp_conn_id)));
|
||||
|
||||
/* UE sends Iu Release Complete to release the conn */
|
||||
LLSK.send(f_llsk_tx(ts_HNBLLIF_IUH_CONN_RELEASE_REQ(context_id, 1, 0, 0, hex2oct(iu_release_compl))));
|
||||
|
|
|
@ -279,6 +279,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_ESTABLISH_REQ(template (v
|
|||
}
|
||||
|
||||
template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
|
||||
template (present) uint32_t audio_conn_id := ?,
|
||||
template (present) uint8_t error_code := ?,
|
||||
template (present) uint16_t local_rtp_port:= ?,
|
||||
template (present) HNBLLIF_AddrType local_rtp_address_type := ?,
|
||||
|
@ -293,6 +294,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template
|
|||
u := {
|
||||
cnf := {
|
||||
context_id := context_id,
|
||||
audio_conn_id := audio_conn_id,
|
||||
local_rtp_port := local_rtp_port,
|
||||
error_code := error_code,
|
||||
local_rtp_address_type := local_rtp_address_type,
|
||||
|
@ -305,7 +307,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template
|
|||
}
|
||||
}
|
||||
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t context_id) := {
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t audio_conn_id) := {
|
||||
sapi := HNBLL_IF_SAPI_AUDIO,
|
||||
u := {
|
||||
audio := {
|
||||
|
@ -315,7 +317,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (val
|
|||
op := HNBLL_IF_OP_REQUEST,
|
||||
u := {
|
||||
req := {
|
||||
context_id := context_id
|
||||
audio_conn_id := audio_conn_id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -324,7 +326,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (val
|
|||
}
|
||||
}
|
||||
|
||||
template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t context_id := ?,
|
||||
template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t audio_conn_id := ?,
|
||||
template (present) octetstring data := ?) := {
|
||||
sapi := HNBLL_IF_SAPI_AUDIO,
|
||||
u := {
|
||||
|
@ -335,7 +337,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (pres
|
|||
op := HNBLL_IF_OP_INDICATION,
|
||||
u := {
|
||||
ind := {
|
||||
context_id := context_id,
|
||||
audio_conn_id := audio_conn_id,
|
||||
data_len := ?,
|
||||
data := data
|
||||
}
|
||||
|
@ -346,7 +348,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (pres
|
|||
}
|
||||
}
|
||||
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t context_id,
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t audio_conn_id,
|
||||
template (value) octetstring data) := {
|
||||
sapi := HNBLL_IF_SAPI_AUDIO,
|
||||
u := {
|
||||
|
@ -357,7 +359,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value)
|
|||
op := HNBLL_IF_OP_REQUEST,
|
||||
u := {
|
||||
req := {
|
||||
context_id := context_id,
|
||||
audio_conn_id := audio_conn_id,
|
||||
data_len := lengthof(data),
|
||||
data := data
|
||||
}
|
||||
|
@ -399,6 +401,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_ESTABLISH_REQ(template (val
|
|||
}
|
||||
|
||||
template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
|
||||
template (present) uint32_t gtp_conn_id := ?,
|
||||
template (present) uint32_t local_tei := ?,
|
||||
template (present) uint8_t error_code := ?,
|
||||
template (present) HNBLLIF_AddrType local_gtpu_address_type := ?,
|
||||
|
@ -413,6 +416,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (p
|
|||
u := {
|
||||
cnf := {
|
||||
context_id := context_id,
|
||||
gtp_conn_id := gtp_conn_id,
|
||||
local_tei := local_tei,
|
||||
error_code := error_code,
|
||||
local_gtpu_address_type := local_gtpu_address_type,
|
||||
|
@ -425,8 +429,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (p
|
|||
}
|
||||
}
|
||||
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t context_id,
|
||||
template (value) uint32_t remote_tei) := {
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t gtp_conn_id) := {
|
||||
sapi := HNBLL_IF_SAPI_GTP,
|
||||
u := {
|
||||
gtp := {
|
||||
|
@ -436,8 +439,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value
|
|||
op := HNBLL_IF_OP_REQUEST,
|
||||
u := {
|
||||
req := {
|
||||
context_id := context_id,
|
||||
remote_tei := remote_tei
|
||||
gtp_conn_id := gtp_conn_id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -446,8 +448,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value
|
|||
}
|
||||
}
|
||||
|
||||
template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (present) uint32_t context_id := ?,
|
||||
template (present) uint32_t local_tei := ?,
|
||||
template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (present) uint32_t gtp_conn_id,
|
||||
template (present) octetstring data := ?) := {
|
||||
sapi := HNBLL_IF_SAPI_GTP,
|
||||
u := {
|
||||
|
@ -458,8 +459,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (presen
|
|||
op := HNBLL_IF_OP_INDICATION,
|
||||
u := {
|
||||
ind := {
|
||||
context_id := context_id,
|
||||
local_tei := local_tei,
|
||||
gtp_conn_id := gtp_conn_id,
|
||||
data_len := ?,
|
||||
data := data
|
||||
}
|
||||
|
@ -470,8 +470,7 @@ template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (presen
|
|||
}
|
||||
}
|
||||
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) uint32_t context_id,
|
||||
template (value) uint32_t remote_tei,
|
||||
template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) uint32_t gtp_conn_id,
|
||||
template (value) octetstring data) := {
|
||||
sapi := HNBLL_IF_SAPI_GTP,
|
||||
u := {
|
||||
|
@ -482,8 +481,7 @@ template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) u
|
|||
op := HNBLL_IF_OP_REQUEST,
|
||||
u := {
|
||||
req := {
|
||||
context_id := context_id,
|
||||
remote_tei := remote_tei,
|
||||
gtp_conn_id := gtp_conn_id,
|
||||
data_len := lengthof(data),
|
||||
data := data
|
||||
}
|
||||
|
|
|
@ -252,6 +252,7 @@ type record HNBLLIF_AUDIO_conn_establish_req {
|
|||
|
||||
type record HNBLLIF_AUDIO_conn_establish_cnf {
|
||||
uint32_t context_id,
|
||||
uint32_t audio_conn_id,
|
||||
uint16_t local_rtp_port,
|
||||
uint8_t error_code,
|
||||
HNBLLIF_AddrType local_rtp_address_type,
|
||||
|
@ -273,7 +274,7 @@ type record HNBLLIF_AUDIO_PrimOp_conn_establish {
|
|||
|
||||
/* CONN_RELEASE */
|
||||
type record HNBLLIF_AUDIO_conn_release_req {
|
||||
uint32_t context_id
|
||||
uint32_t audio_conn_id
|
||||
} with { variant "" };
|
||||
|
||||
|
||||
|
@ -290,13 +291,13 @@ type record HNBLLIF_AUDIO_PrimOp_conn_release {
|
|||
|
||||
/* CONN_DATA */
|
||||
type record HNBLLIF_AUDIO_conn_data_ind {
|
||||
uint32_t context_id,
|
||||
uint32_t audio_conn_id,
|
||||
uint32_t data_len,
|
||||
octetstring data /* RANAP message */
|
||||
} with { variant (data_len) "LENGTHTO (data)" };
|
||||
|
||||
type record HNBLLIF_AUDIO_conn_data_req {
|
||||
uint32_t context_id,
|
||||
uint32_t audio_conn_id,
|
||||
uint32_t data_len,
|
||||
octetstring data /* RANAP message */
|
||||
} with { variant (data_len) "LENGTHTO (data)" };
|
||||
|
@ -350,6 +351,7 @@ type record HNBLLIF_GTP_conn_establish_req {
|
|||
|
||||
type record HNBLLIF_GTP_conn_establish_cnf {
|
||||
uint32_t context_id,
|
||||
uint32_t gtp_conn_id,
|
||||
uint32_t local_tei,
|
||||
uint8_t error_code,
|
||||
HNBLLIF_AddrType local_gtpu_address_type,
|
||||
|
@ -371,8 +373,7 @@ type record HNBLLIF_GTP_PrimOp_conn_establish {
|
|||
|
||||
/* CONN_RELEASE */
|
||||
type record HNBLLIF_GTP_conn_release_req {
|
||||
uint32_t context_id,
|
||||
uint32_t remote_tei
|
||||
uint32_t gtp_conn_id
|
||||
} with { variant "" };
|
||||
|
||||
type union HNBLLIF_GTP_PrimOpUnion_conn_release {
|
||||
|
@ -388,15 +389,13 @@ type record HNBLLIF_GTP_PrimOp_conn_release {
|
|||
|
||||
/* CONN_DATA */
|
||||
type record HNBLLIF_GTP_conn_data_req {
|
||||
uint32_t context_id,
|
||||
uint32_t remote_tei,
|
||||
uint32_t gtp_conn_id,
|
||||
uint32_t data_len,
|
||||
octetstring data /* RANAP message */
|
||||
} with { variant (data_len) "LENGTHTO (data)" };
|
||||
|
||||
type record HNBLLIF_GTP_conn_data_ind {
|
||||
uint32_t context_id,
|
||||
uint32_t local_tei,
|
||||
uint32_t gtp_conn_id,
|
||||
uint32_t data_len,
|
||||
octetstring data /* RANAP message */
|
||||
} with { variant (data_len) "LENGTHTO (data)" };
|
||||
|
|
Loading…
Reference in New Issue