aboutsummaryrefslogtreecommitdiffstats
path: root/library/HNBLLIF_Templates.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/HNBLLIF_Templates.ttcn')
-rw-r--r--library/HNBLLIF_Templates.ttcn561
1 files changed, 561 insertions, 0 deletions
diff --git a/library/HNBLLIF_Templates.ttcn b/library/HNBLLIF_Templates.ttcn
new file mode 100644
index 00000000..f56bfc90
--- /dev/null
+++ b/library/HNBLLIF_Templates.ttcn
@@ -0,0 +1,561 @@
+/* Osmocom HNBLL Interface Templates, as per osmo-hnodeb/include/osmocom/hnodeb/hnb_prim.h
+ * (C) 2021 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+ * All rights reserved.
+ * Author: Pau Espin Pedrol <pespin@sysmocom.de>
+ *
+ * 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
+ */
+
+module HNBLLIF_Templates {
+
+import from General_Types all;
+import from Osmocom_Types all;
+import from HNBLLIF_Types all;
+
+/**********************
+ * CTL SAPI
+ **********************/
+template (value) HNBLLIF_Message ts_HNBLLIF_CTL_HELLO_REQ(template (value) HNBLLIF_Sapi sapi,
+ template (value) uint16_t api_version) := {
+ sapi := HNBLL_IF_SAPI_CTL,
+ u := {
+ ctl := {
+ prim := HNBLL_IF_CTL_MSG_HELLO,
+ u := {
+ hello := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ sapi := sapi,
+ api_version := api_version
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (present) HNBLLIF_Message tr_HNBLLIF_CTL_HELLO_CNF(template (present) HNBLLIF_Sapi sapi := ?,
+ template (present) uint32_t api_version := ?) := {
+ sapi := HNBLL_IF_SAPI_CTL,
+ u := {
+ ctl := {
+ prim := HNBLL_IF_CTL_MSG_HELLO,
+ u := {
+ hello := {
+ op := HNBLL_IF_OP_CONFIRM,
+ u := {
+ cnf := {
+ sapi := sapi,
+ api_version := api_version
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+/**********************
+ * IUH SAPI
+ **********************/
+
+template (present) HNBLLIF_Message tr_HNBLLIF_IUH_CONFIGURE_IND(template (present) uint16_t mcc := ?,
+ template (present) uint16_t mnc := ?,
+ template (present) uint16_t cell_identity := ?,
+ template (present) uint16_t lac := ?,
+ template (present) uint8_t rac := ?,
+ template (present) uint16_t sac := ?,
+ template (present) uint16_t rnc_id := ?) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_CONFIGURE,
+ u := {
+ configure := {
+ op := HNBLL_IF_OP_INDICATION,
+ u := {
+ ind := {
+ mcc := mcc,
+ mnc := mnc,
+ cell_identity := cell_identity,
+ lac := lac,
+ rac := rac,
+ reserved := ?,
+ sac := sac,
+ rnc_id := rnc_id
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_IUH_CONN_ESTABLISH_REQ(template (value) uint32_t context_id,
+ template (value) uint8_t domain,
+ template (value) uint8_t est_cause,
+ template (value) octetstring data) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_CONN_ESTABLISH,
+ u := {
+ conn_establish := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ context_id := context_id,
+ domain := domain,
+ est_cause := est_cause,
+ reserved := 0,
+ data_len := lengthof(data),
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (present) HNBLLIF_Message tr_HNBLLIF_IUH_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
+ template (present) uint8_t domain := ?,
+ template (present) uint8_t est_cause := ?) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_CONN_ESTABLISH,
+ u := {
+ conn_establish := {
+ op := HNBLL_IF_OP_CONFIRM,
+ u := {
+ cnf := {
+ context_id := context_id,
+ domain := domain,
+ est_cause := est_cause
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_IUH_CONN_RELEASE_REQ(template (value) uint32_t context_id,
+ template (value) uint8_t domain,
+ template (value) uint8_t cause_type,
+ template (value) uint8_t cause,
+ template (value) octetstring data) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_CONN_RELEASE,
+ u := {
+ conn_release := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ context_id := context_id,
+ domain := domain,
+ spare1 := 0,
+ cause_type := cause_type,
+ cause := cause,
+ data_len := lengthof(data),
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (present) HNBLLIF_Message tr_HNBLLIF_IUH_CONN_DATA_IND(template (present) uint32_t context_id := ?,
+ template (present) uint8_t domain := ?,
+ template (present) octetstring data := ?) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_CONN_DATA,
+ u := {
+ conn_data := {
+ op := HNBLL_IF_OP_INDICATION,
+ u := {
+ ind := {
+ context_id := context_id,
+ domain := domain,
+ spare1 := ?,
+ spare2 := ?,
+ data_len := ?,
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_IUH_CONN_DATA_REQ(template (value) uint32_t context_id,
+ template (value) uint8_t domain,
+ template (value) octetstring data) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_CONN_DATA,
+ u := {
+ conn_data := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ context_id := context_id,
+ domain := domain,
+ spare1 := 0,
+ spare2 := 0,
+ data_len := lengthof(data),
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (present) HNBLLIF_Message tr_HNBLLIF_IUH_UNITDATA_IND(template (present) octetstring data := ?) := {
+ sapi := HNBLL_IF_SAPI_IUH,
+ u := {
+ iuh := {
+ prim := HNBLL_IF_IUH_MSG_UNITDATA,
+ u := {
+ unitdata := {
+ op := HNBLL_IF_OP_INDICATION,
+ u := {
+ ind := {
+ data_len := ?,
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/**********************
+ * AUDIO SAPI
+ **********************/
+const HNBLLIF_AUDIO_IPTIs IPTIs_default := {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+private function f_subflow_sizes_default() return HNBLLIF_AUDIO_SubflowSizes
+{
+ var HNBLLIF_AUDIO_SubflowSizes ss;
+
+ for (var integer i := 0; i < HNBLLIF_MAX_RFCIS; i := i + 1) {
+ for (var integer j := 0; j < HNBLLIF_MAX_SUBFLOWS; j := j + 1) {
+ ss[i][j] := 0;
+ }
+ }
+
+ ss[0][0] := 81; ss[0][1] := 103; ss[0][2] := 60;
+ ss[1][0] := 39; ss[1][1] := 0; ss[1][2] := 0;
+ ss[2][0] := 0; ss[2][1] := 0; ss[2][2] := 0;
+
+ return ss;
+}
+
+private function f_rfcis_default() return HNBLLIF_AUDIO_RFCIs
+{
+ var HNBLLIF_AUDIO_RFCIs rfcis;
+
+ for (var integer i := 0; i < HNBLLIF_MAX_RFCIS; i := i + 1) {
+ rfcis[i] := i;
+ }
+
+ return rfcis;
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_ESTABLISH_REQ(template (value) uint32_t context_id,
+ template (value) uint16_t remote_rtp_port,
+ template (value) HNBLLIF_AddrType remote_rtp_address_type,
+ template (value) HNBLLIF_Addr remote_addr,
+ template (value) uint8_t transparent := 0,
+ template (value) uint8_t data_pdu_type := 0,
+ template (value) uint16_t supported_versions_mask := 3,
+ template (value) uint8_t num_rfci := 3,
+ template (value) uint8_t num_subflows := 3,
+ template (value) HNBLLIF_AUDIO_SubflowSizes subflow_sizes := f_subflow_sizes_default(),
+ template (value) uint8_t IPTIs_present := 0,
+ template (value) HNBLLIF_AUDIO_IPTIs IPTIs := IPTIs_default,
+ template (omit) HNBLLIF_AUDIO_RFCIs rfci := f_rfcis_default()) := {
+ sapi := HNBLL_IF_SAPI_AUDIO,
+ u := {
+ audio := {
+ prim := HNBLL_IF_AUDIO_MSG_CONN_ESTABLISH,
+ u := {
+ conn_establish := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ context_id := context_id,
+ remote_rtp_port := remote_rtp_port,
+ reserved := 0,
+ remote_rtp_address_type := remote_rtp_address_type,
+ remote_addr := remote_addr,
+ transparent := transparent,
+ data_pdu_type := data_pdu_type,
+ supported_versions_mask := supported_versions_mask,
+ num_rfci := num_rfci,
+ num_subflows := num_subflows,
+ subflow_sizes := subflow_sizes,
+ IPTIs_present := IPTIs_present,
+ IPTIs := IPTIs,
+ rfci := rfci
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+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 := ?,
+ template (present) HNBLLIF_Addr local_addr := ?) := {
+ sapi := HNBLL_IF_SAPI_AUDIO,
+ u := {
+ audio := {
+ prim := HNBLL_IF_AUDIO_MSG_CONN_ESTABLISH,
+ u := {
+ conn_establish := {
+ op := HNBLL_IF_OP_CONFIRM,
+ 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,
+ local_addr := local_addr
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t audio_conn_id) := {
+ sapi := HNBLL_IF_SAPI_AUDIO,
+ u := {
+ audio := {
+ prim := HNBLL_IF_AUDIO_MSG_CONN_RELEASE,
+ u := {
+ conn_release := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ audio_conn_id := audio_conn_id
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t audio_conn_id := ?,
+ template (present) uint8_t frame_nr := ?,
+ template (present) uint8_t fqc := ?,
+ template (present) uint8_t rfci := ?,
+ template (present) octetstring data := ?) := {
+ sapi := HNBLL_IF_SAPI_AUDIO,
+ u := {
+ audio := {
+ prim := HNBLL_IF_AUDIO_MSG_CONN_DATA,
+ u := {
+ conn_data := {
+ op := HNBLL_IF_OP_INDICATION,
+ u := {
+ ind := {
+ audio_conn_id := audio_conn_id,
+ frame_nr := frame_nr,
+ fqc := fqc,
+ rfci := rfci,
+ spare := 0,
+ data_len := ?,
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t audio_conn_id,
+ template (value) uint8_t frame_nr,
+ template (value) uint8_t fqc,
+ template (value) uint8_t rfci,
+ template (value) octetstring data) := {
+ sapi := HNBLL_IF_SAPI_AUDIO,
+ u := {
+ audio := {
+ prim := HNBLL_IF_AUDIO_MSG_CONN_DATA,
+ u := {
+ conn_data := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ audio_conn_id := audio_conn_id,
+ frame_nr := frame_nr,
+ fqc := fqc,
+ rfci := rfci,
+ spare := 0,
+ data_len := lengthof(data),
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+/**********************
+ * GTP SAPI
+ **********************/
+template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_ESTABLISH_REQ(template (value) uint32_t context_id,
+ template (value) uint32_t remote_tei,
+ template (value) HNBLLIF_AddrType remote_gtpu_address_type,
+ template (value) HNBLLIF_Addr remote_gtpu_addr) := {
+ sapi := HNBLL_IF_SAPI_GTP,
+ u := {
+ gtp := {
+ prim := HNBLL_IF_GTP_MSG_CONN_ESTABLISH,
+ u := {
+ conn_establish := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ context_id := context_id,
+ remote_tei := remote_tei,
+ reserved := 0,
+ remote_gtpu_address_type := remote_gtpu_address_type,
+ remote_gtpu_addr := remote_gtpu_addr
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+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 := ?,
+ template (present) HNBLLIF_Addr local_gtpu_addr := ?) := {
+ sapi := HNBLL_IF_SAPI_GTP,
+ u := {
+ gtp := {
+ prim := HNBLL_IF_GTP_MSG_CONN_ESTABLISH,
+ u := {
+ conn_establish := {
+ op := HNBLL_IF_OP_CONFIRM,
+ 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,
+ local_gtpu_addr := local_gtpu_addr
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t gtp_conn_id) := {
+ sapi := HNBLL_IF_SAPI_GTP,
+ u := {
+ gtp := {
+ prim := HNBLL_IF_GTP_MSG_CONN_RELEASE,
+ u := {
+ conn_release := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ gtp_conn_id := gtp_conn_id
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+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 := {
+ gtp := {
+ prim := HNBLL_IF_GTP_MSG_CONN_DATA,
+ u := {
+ conn_data := {
+ op := HNBLL_IF_OP_INDICATION,
+ u := {
+ ind := {
+ gtp_conn_id := gtp_conn_id,
+ data_len := ?,
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+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 := {
+ gtp := {
+ prim := HNBLL_IF_GTP_MSG_CONN_DATA,
+ u := {
+ conn_data := {
+ op := HNBLL_IF_OP_REQUEST,
+ u := {
+ req := {
+ gtp_conn_id := gtp_conn_id,
+ data_len := lengthof(data),
+ data := data
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+} with { encode "RAW" variant "BYTEORDER(first)" };