aboutsummaryrefslogtreecommitdiffstats
path: root/library/hnbap/HNBAP_Templates.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/hnbap/HNBAP_Templates.ttcn')
-rw-r--r--library/hnbap/HNBAP_Templates.ttcn422
1 files changed, 422 insertions, 0 deletions
diff --git a/library/hnbap/HNBAP_Templates.ttcn b/library/hnbap/HNBAP_Templates.ttcn
new file mode 100644
index 00000000..7a86e0c9
--- /dev/null
+++ b/library/hnbap/HNBAP_Templates.ttcn
@@ -0,0 +1,422 @@
+/* HNBAP Templates in TTCN-3
+ * (C) 2021 Pau Espin Pedrol <pespin@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
+ */
+
+module HNBAP_Templates {
+
+import from General_Types all;
+import from Osmocom_Types all;
+
+import from HNBAP_IEs all;
+import from HNBAP_CommonDataTypes all;
+import from HNBAP_Constants all;
+import from HNBAP_Containers all;
+import from HNBAP_PDU_Contents all;
+import from HNBAP_PDU_Descriptions all;
+
+/*********************************************************************************
+ * 3GPP TS 25.469
+ *********************************************************************************/
+
+template (value) Cause ts_HnbapCause(template (value) CauseRadioNetwork c) := {
+ radioNetwork := c
+}
+
+/* 9.1.3 HNB REGISTER REQUEST */
+template (present) HNBAP_PDU
+tr_HNBAP_HNBRegisterRequest(template (present) octetstring hNB_Identity_Info := ?,
+ template (present) OCT3 plmnid := ?,
+ template (present) BIT28 cell_identity := ?,
+ template (present) OCT2 lac := ?,
+ template (present) OCT1 rac := ?,
+ template (present) OCT2 sac := ?) := {
+ initiatingMessage := {
+ procedureCode := id_HNBRegister,
+ criticality := reject,
+ value_ := {
+ hNBRegisterRequest := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_HNB_Identity,
+ criticality := reject,
+ value_ := {
+ hNB_Identity := {
+ hNB_Identity_Info := hNB_Identity_Info,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := 8,
+ criticality := reject,
+ value_ := {
+ hNB_Location_Information := {
+ macroCoverageInfo := omit,
+ geographicalCoordinates := omit,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := 9,
+ criticality := reject,
+ value_ := { pLMNidentity := plmnid }
+ }, {
+ id := 11,
+ criticality := reject,
+ value_ := { cellIdentity := cell_identity }
+ }, {
+ id := 6,
+ criticality := reject,
+ value_ := { lAC := lac }
+ }, {
+ id := 7,
+ criticality := reject,
+ value_ := { rAC := rac }
+ }, {
+ id := 10,
+ criticality := reject,
+ value_ := { sAC := sac }
+ }
+ },
+ protocolExtensions := *
+ }
+ }
+ }
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_HNBRegisterRequest(template (value) octetstring hNB_Identity_Info,
+ template (value) OCT3 plmnid,
+ template (value) BIT28 cell_identity,
+ template (value) OCT2 lac,
+ template (value) OCT1 rac,
+ template (value) OCT2 sac) := {
+ initiatingMessage := {
+ procedureCode := id_HNBRegister,
+ criticality := reject,
+ value_ := {
+ hNBRegisterRequest := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_HNB_Identity,
+ criticality := reject,
+ value_ := {
+ hNB_Identity := {
+ hNB_Identity_Info := hNB_Identity_Info,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := 8,
+ criticality := reject,
+ value_ := {
+ hNB_Location_Information := {
+ macroCoverageInfo := omit,
+ geographicalCoordinates := omit,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := 9,
+ criticality := reject,
+ value_ := { pLMNidentity := plmnid }
+ }, {
+ id := 11,
+ criticality := reject,
+ value_ := { cellIdentity := cell_identity }
+ }, {
+ id := 6,
+ criticality := reject,
+ value_ := { lAC := lac }
+ }, {
+ id := 7,
+ criticality := reject,
+ value_ := { rAC := rac }
+ }, {
+ id := 10,
+ criticality := reject,
+ value_ := { sAC := sac }
+ }
+ },
+ protocolExtensions := omit
+ }
+ }
+ }
+}
+
+
+/* 9.1.4 HNB REGISTER ACCEPT */
+template (present) HNBAP_PDU
+tr_HNBAP_HNBRegisterAccept(template (present) uint16_t rnc_id := ?) := {
+ successfulOutcome := {
+ procedureCode := id_HNBRegister,
+ criticality := reject,
+ value_ := {
+ hNBRegisterAccept := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_RNC_ID,
+ criticality := reject,
+ value_ := { RNC_ID := rnc_id }
+ }
+ },
+ protocolExtensions := * /* TODO: Mux Port Number (optional) 9.2.29 */
+ }
+ }
+ }
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_HNBRegisterAccept(template (value) uint16_t rnc_id) := {
+ successfulOutcome := {
+ procedureCode := id_HNBRegister,
+ criticality := reject,
+ value_ := {
+ hNBRegisterAccept := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_RNC_ID,
+ criticality := reject,
+ value_ := { RNC_ID := rnc_id }
+ }
+ },
+ protocolExtensions := omit /* TODO: Mux Port Number (optional) 9.2.29 */
+ }
+ }
+ }
+}
+
+/* 9.1.5 HNB REGISTER REJECT */
+template (present) HNBAP_PDU
+tr_HNBAP_HNBRegisterReject(template (present) Cause cause := ?) := {
+ unsuccessfulOutcome := {
+ procedureCode := id_HNBRegister,
+ criticality := reject,
+ value_ := {
+ HNBRegisterReject := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }
+ },
+ protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_HNBRegisterReject(template (value) Cause cause) := {
+ unsuccessfulOutcome := {
+ procedureCode := id_HNBRegister,
+ criticality := reject,
+ value_ := {
+ HNBRegisterReject := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }
+ },
+ protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+/* 9.1.6 UE REGISTER REQUEST */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterRequest(template (present) UE_Identity ue_id) := {
+ initiatingMessage := {
+ procedureCode := id_UERegister,
+ criticality := reject,
+ value_ := {
+ uERegisterRequest := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_UE_Identity,
+ criticality := reject,
+ value_ := { UE_Identity := ue_id }
+ }, {
+ id := HNBAP_Constants.id_Registration_Cause,
+ criticality := ignore,
+ value_ := { Registration_Cause := normal }
+ }, {
+ id := HNBAP_Constants.id_UE_Capabilities,
+ criticality := ignore,
+ value_ := {
+ UE_Capabilities := {
+ access_stratum_release_indicator := ?,
+ csg_capability := ?
+ }
+ }
+ }
+ },
+ protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterRequest(template (value) UE_Identity ue_id) := {
+ initiatingMessage := {
+ procedureCode := id_UERegister,
+ criticality := reject,
+ value_ := {
+ uERegisterRequest := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_UE_Identity,
+ criticality := reject,
+ value_ := { UE_Identity := ue_id }
+ }, {
+ id := HNBAP_Constants.id_Registration_Cause,
+ criticality := ignore,
+ value_ := { Registration_Cause := normal }
+ }, {
+ id := HNBAP_Constants.id_UE_Capabilities,
+ criticality := ignore,
+ value_ := {
+ UE_Capabilities := {
+ access_stratum_release_indicator := rel_8_and_beyond,
+ csg_capability := not_csg_capable,
+ iE_Extensions := omit
+ }
+ }
+ }
+ },
+ protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+/* 9.1.7 UE REGISTER ACCEPT */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterAccept(template (present) UE_Identity ue_id) := {
+ successfulOutcome := {
+ procedureCode := id_UERegister,
+ criticality := reject,
+ value_ := {
+ uERegisterAccept := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_UE_Identity,
+ criticality := reject,
+ value_ := { UE_Identity := ue_id }
+ }, {
+ id := HNBAP_Constants.id_Context_ID,
+ criticality := reject,
+ value_ := { Context_ID := ? }
+ }, *
+ },
+ protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterAccept(template (value) UE_Identity ue_id,
+ template (value) BIT24 context_id) := {
+ successfulOutcome := {
+ procedureCode := id_UERegister,
+ criticality := reject,
+ value_ := {
+ uERegisterAccept := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_UE_Identity,
+ criticality := reject,
+ value_ := { UE_Identity := ue_id }
+ }, {
+ id := HNBAP_Constants.id_Context_ID,
+ criticality := reject,
+ value_ := { Context_ID := context_id }
+ }
+ },
+ protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+/* 9.1.8 UE REGISTER REJECT */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterReject(template (present) UE_Identity ue_id, template (present) Cause cause := ?) := {
+ unsuccessfulOutcome := {
+ procedureCode := id_UERegister,
+ criticality := reject,
+ value_ := {
+ uERegisterReject := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_UE_Identity,
+ criticality := reject,
+ value_ := { UE_Identity := ue_id }
+ }, {
+ id := HNBAP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }, *
+ },
+ protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterReject(template (value) UE_Identity ue_id, template (value) Cause cause) := {
+ unsuccessfulOutcome := {
+ procedureCode := id_UERegister,
+ criticality := reject,
+ value_ := {
+ uERegisterReject := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_UE_Identity,
+ criticality := reject,
+ value_ := { UE_Identity := ue_id }
+ }, {
+ id := HNBAP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }
+ },
+ protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+ }
+ }
+ }
+}
+
+/* 9.1.9 HNB DE-REGISTER */
+template (value) HNBAP_PDU
+ts_HNBAP_HNBDe_Register(template (value) Cause cause) := {
+ initiatingMessage := {
+ procedureCode := id_HNBDe_Register,
+ criticality := reject,
+ value_ := {
+ HNBDe_Register := {
+ protocolIEs := {
+ {
+ id := HNBAP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }
+ },
+ protocolExtensions := omit /* TODO: BackoffTimer */
+ }
+ }
+ }
+}
+
+}