Change in osmo-ttcn3-hacks[master]: Split templates in RLCMAC_{CSN1_}Types into their own _Templates file

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Fri May 1 14:39:26 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17981 )

Change subject: Split templates in RLCMAC_{CSN1_}Types into their own _Templates file
......................................................................

Split templates in RLCMAC_{CSN1_}Types into their own _Templates file

RLCMAC blocks have a lot of fields and we will potentially require lots
of different templates, as well as functions to handle related structs.

Change-Id: I9c6597178168aa3848b21930f33be698dd2ce545
---
M bsc-nat/gen_links.sh
M bsc/gen_links.sh
M bts/gen_links.sh
M lapdm/gen_links.sh
M library/L3_Templates.ttcn
A library/RLCMAC_CSN1_Templates.ttcn
M library/RLCMAC_CSN1_Types.ttcn
A library/RLCMAC_Templates.ttcn
M library/RLCMAC_Types.ttcn
M mme/gen_links.sh
M msc/gen_links.sh
M pcu/GPRS_TBF.ttcn
M pcu/PCU_Tests.ttcn
M pcu/gen_links.sh
M selftest/gen_links.sh
M sgsn/gen_links.sh
M sysinfo/gen_links.sh
17 files changed, 524 insertions(+), 477 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved



diff --git a/bsc-nat/gen_links.sh b/bsc-nat/gen_links.sh
index 471753e..4d2303f 100755
--- a/bsc-nat/gen_links.sh
+++ b/bsc-nat/gen_links.sh
@@ -52,7 +52,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn BSSAP_CodecPort.ttcn"
+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_VTY_Functions.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn BSSAP_CodecPort.ttcn"
 gen_links $DIR $FILES
 
 ignore_pp_results
diff --git a/bsc/gen_links.sh b/bsc/gen_links.sh
index 845f7cc..a936ef3 100755
--- a/bsc/gen_links.sh
+++ b/bsc/gen_links.sh
@@ -67,7 +67,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn RAN_Adapter.ttcnpp Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn SCCP_Templates.ttcn IPA_Testing.ttcn "
+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcnpp RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn RAN_Adapter.ttcnpp Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn SCCP_Templates.ttcn IPA_Testing.ttcn "
 FILES+="CBSP_Types.ttcn CBSP_Templates.ttcn "
 FILES+="CBSP_CodecPort.ttcn CBSP_CodecPort_CtrlFunct.ttcn CBSP_CodecPort_CtrlFunctdef.cc CBSP_Adapter.ttcn "
 gen_links $DIR $FILES
diff --git a/bts/gen_links.sh b/bts/gen_links.sh
index aafe231..b6921fa 100755
--- a/bts/gen_links.sh
+++ b/bts/gen_links.sh
@@ -33,7 +33,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_VTY_Functions.ttcn GSM_SystemInformation.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "
+FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_VTY_Functions.ttcn GSM_SystemInformation.ttcn Osmocom_Types.ttcn RLCMAC_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "
 #FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "
 #FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "
 FILES+="IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp IPA_CodecPort.ttcn RSL_Types.ttcn RSL_Emulation.ttcn AbisOML_Types.ttcn "
diff --git a/lapdm/gen_links.sh b/lapdm/gen_links.sh
index 12830dd..217f485 100755
--- a/lapdm/gen_links.sh
+++ b/lapdm/gen_links.sh
@@ -14,7 +14,7 @@
 
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn RLCMAC_CSN1_Types.ttcn Osmocom_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc L1CTL_Types.ttcn LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn RLCMAC_Types.ttcn RLCMAC_EncDec.cc"
+FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn Osmocom_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc L1CTL_Types.ttcn LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn RLCMAC_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_EncDec.cc"
 gen_links $DIR $FILES
 
 ignore_pp_results
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 8af9acc..3032503 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -20,7 +20,7 @@
 import from MobileL3_CC_Types all;
 import from MobileL3_GMM_SM_Types all;
 import from MobileL3_SMS_Types all;
-import from RLCMAC_CSN1_Types all;
+import from RLCMAC_CSN1_Templates all;
 
 /* TS 24.007 Table 11.3 TI Flag */
 const BIT1 c_TIF_ORIG := '0'B;
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
new file mode 100644
index 0000000..07f70b4
--- /dev/null
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -0,0 +1,163 @@
+/* GPRS RLC/MAC Control Messages as per 3GPP TS 44.060 manually transcribed from the CSN.1 syntax, as no CSN.1
+ * tool for Eclipse TITAN could be found.  Implements only the minimum necessary messages for Osmocom teseting
+ * purposes. */
+
+/* (C) 2017-2018 Harald Welte <laforge at gnumonks.org>
+ * contributions by sysmocom - s.f.m.c. GmbH
+ * 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 RLCMAC_CSN1_Templates {
+	import from General_Types all;
+	import from Osmocom_Types all;
+	import from GSM_Types all;
+	import from MobileL3_GMM_SM_Types all;
+	import from RLCMAC_CSN1_Types all;
+
+	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CTRL_ACK(GprsTlli tlli,
+						CtrlAck ack := MS_RCVD_TWO_RLC_SAME_RTI_DIFF_RBSN) := {
+		msg_type := PACKET_CONTROL_ACK,
+		u := {
+			ctrl_ack := {
+				tlli := tlli,
+				ctrl_ack := ack
+			}
+		}
+	}
+
+	const ILevel iNone := {
+		presence := '0'B,
+		i_level := omit
+	}
+	const ChannelQualityReport c_ChQualRep_default := {
+		c_value := 0,
+		rxqual := 0,
+		sign_var := 0,
+		i_levels := { iNone, iNone, iNone, iNone, iNone, iNone, iNone, iNone }
+	}
+	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_DL_ACK(uint5_t dl_tfi,
+								    AckNackDescription andesc,
+					ChannelQualityReport qual_rep := c_ChQualRep_default) := {
+		msg_type := PACKET_DL_ACK_NACK,
+		u := {
+			dl_ack_nack := {
+				dl_tfi := dl_tfi,
+				ack_nack_desc := andesc,
+				chreq_desc_presence := '0'B,
+				chreq_desc := omit,
+				ch_qual_rep := qual_rep
+			}
+		}
+	}
+
+	private function f_presence_bit_MultislotCap_GPRS(template (omit) MultislotCap_GPRS mscap_gprs) return BIT1 {
+		if (istemplatekind(mscap_gprs, "omit")) {
+			return '0'B;
+		}
+		return '1'B;
+	}
+	private function f_presence_bit_MultislotCap_EGPRS(template (omit) MultislotCap_EGPRS mscap_egprs) return BIT1 {
+		if (istemplatekind(mscap_egprs, "omit")) {
+			return '0'B;
+		}
+		return '1'B;
+	}
+	template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att := '0001'B /* E-GSM */, template (omit) MultislotCap_GPRS mscap_gprs := omit, template (omit) MultislotCap_EGPRS mscap_egprs := omit) := {
+		mSRACapabilityValues := {
+			mSRACapabilityValuesExclude1111 := {
+				accessTechnType := att, /* E-GSM */
+				accessCapabilities := {
+					lengthIndicator := 0, /* overwritten */
+					accessCapabilities := {
+						rfPowerCapability := '001'B, /* FIXME */
+						presenceBitA5 := '0'B,
+						a5bits := omit,
+						esind := '1'B,
+						psbit := '0'B,
+						vgcs := '0'B,
+						vbs := '0'B,
+						presenceBitMultislot := '1'B,
+						multislotcap := {
+							presenceBitHscsd := '0'B,
+							hscsdmultislotclass := omit,
+							presenceBitGprs := f_presence_bit_MultislotCap_GPRS(mscap_gprs),
+							gprsmultislot := mscap_gprs,
+							presenceBitSms := '0'B,
+							multislotCap_SMS := omit,
+							multislotCapAdditionsAfterRel97 := {
+									presenceBitEcsdmulti := '0'B,
+									ecsdmultislotclass := omit,
+									presenceBitEgprsmulti := f_presence_bit_MultislotCap_EGPRS(mscap_egprs),
+									multislotCap_EGPRS := mscap_egprs,
+									presenceBitDtmGprsmulti := '0'B,
+									multislotCapdtmgprsmultislotsubclass := omit
+							}
+						},
+						accessCapAdditionsAfterRel97 := omit
+					},
+					spare_bits := omit
+				}
+			}
+		},
+		presenceBitMSRACap := '0'B
+	};
+
+	private function f_presence_bit_MSRadioAccessCapabilityV(template (omit) MSRadioAccessCapabilityV ms_rac) return BIT1 {
+		if (istemplatekind(ms_rac, "omit")) {
+			return '0'B;
+		}
+		return '1'B;
+	}
+
+	private function f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(template (omit) MSRadioAccessCapabilityV ms_rac) return template (omit) MSRadioAccCap2 {
+		var template (omit) MSRadioAccCap2 ms_rac2 := omit;
+		if (istemplatekind(ms_rac, "omit")) {
+			return ms_rac2;
+		}
+		ms_rac2 := { msRadioAccessCapabilityV := ms_rac };
+		return ms_rac2;
+	}
+
+	private const ChannelReqDescription c_ChReqDesc_default := {
+		peak_tput_class := 0,
+		priority := 0,
+		rlc_mode := RLC_MODE_UNACKNOWLEDGED,
+		llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK,
+		RlcOctetCount := 0
+	}
+
+	/* TS 44.060 sec 11.2.16 */
+	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(GprsTlli tlli,
+						     template (omit) MSRadioAccessCapabilityV ms_rac,
+						     ChannelReqDescription ch_req_desc := c_ChReqDesc_default,
+						     RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE)
+	:= {
+		msg_type := PACKET_RESOURCE_REQUEST,
+		u := {
+			resource_req := {
+				acc_type_presence := '1'B,
+				acc_type := acc_type,
+				id_type := '1'B,
+				id := { tlli := tlli },
+				ms_rac2_presence := f_presence_bit_MSRadioAccessCapabilityV(ms_rac),
+				ms_rac2 := f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(ms_rac),
+				ch_req_desc := ch_req_desc,
+				change_mark_presence := '0'B,
+				change_mark := omit,
+				C_val := '000000'B,
+				sign_var_presence := '0'B,
+				sign_var := omit,
+				I_levels := {
+					iNone, iNone, iNone, iNone,
+					iNone, iNone, iNone, iNone
+				}
+			}
+		}
+	}
+
+} with { encode "RAW"; variant "FIELDORDER(msb)" variant "BYTEORDER(last)" };
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index b545368..bca4351 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -639,147 +639,6 @@
 		variant (relative_k) "PRESENCE(presence = '1'B)"
 	};
 
-	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CTRL_ACK(GprsTlli tlli,
-						CtrlAck ack := MS_RCVD_TWO_RLC_SAME_RTI_DIFF_RBSN) := {
-		msg_type := PACKET_CONTROL_ACK,
-		u := {
-			ctrl_ack := {
-				tlli := tlli,
-				ctrl_ack := ack
-			}
-		}
-	}
-
-	const ILevel iNone := {
-		presence := '0'B,
-		i_level := omit
-	}
-	const ChannelQualityReport c_ChQualRep_default := {
-		c_value := 0,
-		rxqual := 0,
-		sign_var := 0,
-		i_levels := { iNone, iNone, iNone, iNone, iNone, iNone, iNone, iNone }
-	}
-	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_DL_ACK(uint5_t dl_tfi,
-								    AckNackDescription andesc,
-					ChannelQualityReport qual_rep := c_ChQualRep_default) := {
-		msg_type := PACKET_DL_ACK_NACK,
-		u := {
-			dl_ack_nack := {
-				dl_tfi := dl_tfi,
-				ack_nack_desc := andesc,
-				chreq_desc_presence := '0'B,
-				chreq_desc := omit,
-				ch_qual_rep := qual_rep
-			}
-		}
-	}
-
-	private function f_presence_bit_MultislotCap_GPRS(template (omit) MultislotCap_GPRS mscap_gprs) return BIT1 {
-		if (istemplatekind(mscap_gprs, "omit")) {
-			return '0'B;
-		}
-		return '1'B;
-	}
-	private function f_presence_bit_MultislotCap_EGPRS(template (omit) MultislotCap_EGPRS mscap_egprs) return BIT1 {
-		if (istemplatekind(mscap_egprs, "omit")) {
-			return '0'B;
-		}
-		return '1'B;
-	}
-	template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att := '0001'B /* E-GSM */, template (omit) MultislotCap_GPRS mscap_gprs := omit, template (omit) MultislotCap_EGPRS mscap_egprs := omit) := {
-		mSRACapabilityValues := {
-			mSRACapabilityValuesExclude1111 := {
-				accessTechnType := att, /* E-GSM */
-				accessCapabilities := {
-					lengthIndicator := 0, /* overwritten */
-					accessCapabilities := {
-						rfPowerCapability := '001'B, /* FIXME */
-						presenceBitA5 := '0'B,
-						a5bits := omit,
-						esind := '1'B,
-						psbit := '0'B,
-						vgcs := '0'B,
-						vbs := '0'B,
-						presenceBitMultislot := '1'B,
-						multislotcap := {
-							presenceBitHscsd := '0'B,
-							hscsdmultislotclass := omit,
-							presenceBitGprs := f_presence_bit_MultislotCap_GPRS(mscap_gprs),
-							gprsmultislot := mscap_gprs,
-							presenceBitSms := '0'B,
-							multislotCap_SMS := omit,
-							multislotCapAdditionsAfterRel97 := {
-									presenceBitEcsdmulti := '0'B,
-									ecsdmultislotclass := omit,
-									presenceBitEgprsmulti := f_presence_bit_MultislotCap_EGPRS(mscap_egprs),
-									multislotCap_EGPRS := mscap_egprs,
-									presenceBitDtmGprsmulti := '0'B,
-									multislotCapdtmgprsmultislotsubclass := omit
-							}
-						},
-						accessCapAdditionsAfterRel97 := omit
-					},
-					spare_bits := omit
-				}
-			}
-		},
-		presenceBitMSRACap := '0'B
-	};
-
-	private function f_presence_bit_MSRadioAccessCapabilityV(template (omit) MSRadioAccessCapabilityV ms_rac) return BIT1 {
-		if (istemplatekind(ms_rac, "omit")) {
-			return '0'B;
-		}
-		return '1'B;
-	}
-
-	private function f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(template (omit) MSRadioAccessCapabilityV ms_rac) return template (omit) MSRadioAccCap2 {
-		var template (omit) MSRadioAccCap2 ms_rac2 := omit;
-		if (istemplatekind(ms_rac, "omit")) {
-			return ms_rac2;
-		}
-		ms_rac2 := { msRadioAccessCapabilityV := ms_rac };
-		return ms_rac2;
-	}
-
-	private const ChannelReqDescription c_ChReqDesc_default := {
-		peak_tput_class := 0,
-		priority := 0,
-		rlc_mode := RLC_MODE_UNACKNOWLEDGED,
-		llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK,
-		RlcOctetCount := 0
-	}
-
-	/* TS 44.060 sec 11.2.16 */
-	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(GprsTlli tlli,
-						     template (omit) MSRadioAccessCapabilityV ms_rac,
-						     ChannelReqDescription ch_req_desc := c_ChReqDesc_default,
-						     RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE)
-	:= {
-		msg_type := PACKET_RESOURCE_REQUEST,
-		u := {
-			resource_req := {
-				acc_type_presence := '1'B,
-				acc_type := acc_type,
-				id_type := '1'B,
-				id := { tlli := tlli },
-				ms_rac2_presence := f_presence_bit_MSRadioAccessCapabilityV(ms_rac),
-				ms_rac2 := f_template_MSRadioAccessCapabilityV_to_MSRadioAccCap2(ms_rac),
-				ch_req_desc := ch_req_desc,
-				change_mark_presence := '0'B,
-				change_mark := omit,
-				C_val := '000000'B,
-				sign_var_presence := '0'B,
-				sign_var := omit,
-				I_levels := {
-					iNone, iNone, iNone, iNone,
-					iNone, iNone, iNone, iNone
-				}
-			}
-		}
-	}
-
 	/* 3GPP TS 44.060, table 11.2.5a.2 "EGPRS PACKET CHANNEL REQUEST" */
 	type union EGPRSPktChRequest {
 		EGPRSPktChRequest_MC5P2RB3		one_phase,
diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn
new file mode 100644
index 0000000..8fb6b0c
--- /dev/null
+++ b/library/RLCMAC_Templates.ttcn
@@ -0,0 +1,346 @@
+/* TITAN REW encode/decode definitions for 3GPP TS 44.060 RLC/MAC Blocks */
+
+/* (C) 2017-2018 Harald Welte <laforge at gnumonks.org>
+ * (C) 2020 by sysmocom s.f.m.c. GmbH <info at 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 RLCMAC_Templates {
+	import from General_Types all;
+	import from Osmocom_Types all;
+	import from GSM_Types all;
+	import from RLCMAC_CSN1_Types all;
+	import from RLCMAC_CSN1_Templates all;
+	import from RLCMAC_Types all;
+
+	/* TS 44.060 10.4.5 */
+	function f_rrbp_fn_delay(MacRrbp rrbp) return uint32_t {
+		select (rrbp) {
+		case (RRBP_Nplus13_mod_2715648) { return 13; }
+		case (RRBP_Nplus17_or_18_mod_2715648) { return 17; }
+		case (RRBP_Nplus21_or_22_mod_2715648) { return 21;  }
+		case (RRBP_Nplus26_mod_2715648) { return 26; }
+		}
+		return 0;
+	}
+
+	function f_rlcmac_cs_mcs2block_len(CodingScheme cs_mcs) return uint32_t {
+		select (cs_mcs) {
+		case (CS_1) { return 23; }
+		case (CS_2) { return 34; }
+		case (CS_3) { return 40; }
+		case (CS_4) { return 54; }
+		case (MCS_1) { return 27; }
+		case (MCS_2) { return 33; }
+		case (MCS_3) { return 42; }
+		case (MCS_4) { return 49; }
+		case (MCS_5) { return 61; }
+		case (MCS_6) { return 79; }
+		case (MCS_7) { return 119; }
+		case (MCS_8) { return 143; }
+		case (MCS_9) { return 155; }
+		}
+		return 0;
+	}
+
+	function f_rlcmac_block_len2cs_mcs(uint32_t len) return CodingScheme {
+		select (len) {
+			case (23) { return CS_1; }
+			case (34) { return CS_2; }
+			case (40) { return CS_3; }
+			case (54) { return CS_4; }
+			case (27) { return MCS_1; }
+			case (33) { return MCS_2; }
+			case (42) { return MCS_3; }
+			case (49) { return MCS_4; }
+			case (60) { return MCS_5; }
+			case (61) { return MCS_5; }
+			case (78) { return MCS_6; }
+			case (79) { return MCS_6; }
+			case (118) { return MCS_7; }
+			case (119) { return MCS_7; }
+			case (142) { return MCS_8; }
+			case (143) { return MCS_8; }
+			case (154) { return MCS_9; }
+			case (155) { return MCS_9; }
+		}
+		return CS_1;
+	}
+
+	template (value) RlcmacUlBlock ts_RLC_UL_CTRL_ACK(RlcmacUlCtrlMsg ctrl,
+							MacPayloadType pt := MAC_PT_RLCMAC_NO_OPT,
+							boolean retry := false) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := pt,
+				spare := '00000'B,
+				retry := retry
+			},
+			payload := ctrl
+		}
+	}
+
+	/* Send Template for Downlink ACK/NACK */
+	template RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK(template uint5_t tfi, AckNackDescription andesc, boolean retry := false) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := MAC_PT_RLCMAC_NO_OPT,
+				spare := '00000'B,
+				retry := retry
+			},
+			payload := {
+				msg_type := PACKET_DL_ACK_NACK,
+				u := {
+					dl_ack_nack := {
+						dl_tfi := tfi,
+						ack_nack_desc := andesc,
+						chreq_desc_presence := '0'B,
+						chreq_desc := omit,
+						ch_qual_rep := c_ChQualRep_default
+					}
+				}
+			}
+		}
+	}
+
+	/* Template for uplink Data block */
+	template RlcmacUlBlock t_RLCMAC_UL_DATA(template uint5_t tfi, template uint4_t cv, template uint7_t bsn,
+						template LlcBlocks blocks := {}, template boolean stall := false) := {
+		data := {
+			mac_hdr := {
+				payload_type := MAC_PT_RLC_DATA,
+				countdown := cv,
+				stall_ind := false,
+				retry := false,
+				spare := '0'B,
+				pfi_ind := false,
+				tfi := tfi,
+				tlli_ind := false,
+				bsn := bsn,
+				e := false
+			},
+			tlli := omit,
+			pfi := omit,
+			blocks := blocks
+		}
+	}
+	template RlcmacUlBlock t_RLCMAC_UL_DATA_TLLI(template uint5_t tfi, template uint4_t cv, template uint7_t bsn,
+						     template LlcBlocks blocks := {}, template boolean stall := false, template GprsTlli tlli) := {
+		data := {
+			mac_hdr := {
+				payload_type := MAC_PT_RLC_DATA,
+				countdown := cv,
+				stall_ind := false,
+				retry := false,
+				spare := '0'B,
+				pfi_ind := false,
+				tfi := tfi,
+				tlli_ind := true,
+				bsn := bsn,
+				e := false
+			},
+			tlli := tlli,
+			pfi := omit,
+			blocks := blocks
+		}
+	}
+
+	template DlMacHeader t_RLCMAC_DlMacH(template MacPayloadType pt, template MacRrbp rrbp, template
+uint3_t usf) := {
+		payload_type := pt,
+		rrbp := rrbp,
+		rrbp_valid := ispresent(rrbp),
+		usf := usf
+	}
+
+	template RlcmacDlBlock tr_RLCMAC_DUMMY_CTRL(template uint3_t usf := ?, template PageMode page_mode := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := usf
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_DL_DUMMY_CTRL,
+				u := {
+					dl_dummy := {
+						page_mode := page_mode,
+						persistence_levels_present := ?,
+						persistence_levels := *
+					}
+				}
+			}
+		}
+	}
+
+	template RlcmacDlBlock tr_RLCMAC_DL_PACKET_ASS(template uint3_t usf := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := usf
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_DL_ASSIGNMENT,
+				u := {
+					dl_assignment := {
+						page_mode := ?,
+						pres1 := ?,
+						persistence_levels := *,
+						tfi_or_tlli := ?
+					}
+				}
+			}
+		}
+	}
+
+	template RlcmacDlBlock tr_RLCMAC_UL_PACKET_ASS(template uint3_t usf := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := usf
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_UL_ASSIGNMENT,
+				u := {
+					ul_assignment := {
+						page_mode := ?,
+						persistence_levels_present := ?,
+						persistence_levels := *,
+						identity := ?,
+						is_egprs := ?,  /* msg escape */
+						gprs := *
+					}
+				}
+			}
+		}
+	}
+
+
+	/* Receive Template for Uplink ACK/NACK */
+	template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi, template GprsTlli tlli := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := ?
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_UL_ACK_NACK,
+				u := {
+					ul_ack_nack := {
+						page_mode := ?,
+						msg_excape := ?,
+						uplink_tfi := ul_tfi,
+						is_egprs := '0'B,
+						gprs := {
+							ch_coding_cmd := ?,
+							ack_nack_desc := ?,
+							cont_res_tlli_present := ?,
+							cont_res_tlli := tlli,
+							pkt_ta_present := ?,
+							pkt_ta := *,
+							pwr_ctrl_present := ?,
+							pwr_ctrl := *
+						}
+					}
+				}
+			}
+		}
+	}
+
+	template RlcmacDlBlock tr_RLCMAC_PACKET_PAG_REQ(template uint3_t usf := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := MAC_PT_RLCMAC_NO_OPT,
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := usf
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_PAGING_REQUEST,
+				u := {
+					paging := {
+						page_mode := ?,
+						persistence_levels_present := ?,
+						persistence_levels := *,
+						nln_present := ?,
+						nln := *,
+						repeated_pageinfo_present := ?,
+						repeated_pageinfo := *
+					}
+				}
+			}
+		}
+	}
+
+	template RlcmacDlBlock tr_RLCMAC_DATA_RRBP := {
+		data := {
+			mac_hdr := {
+				mac_hdr := {
+					payload_type := MAC_PT_RLC_DATA,
+					rrbp := ?,
+					rrbp_valid := true,
+					usf := ?
+				},
+				hdr_ext := ?
+			},
+			blocks := ?
+		}
+	}
+
+	template RlcmacDlBlock tr_RLCMAC_DATA_EGPRS := {
+		data_egprs := {
+			mac_hdr := ?,
+			fbi := ?,
+			e := ?,
+			blocks := ?
+		}
+	}
+
+	/* Template for Uplink MAC Control Header */
+	template UlMacCtrlHeader t_RLCMAC_UlMacCtrlH(template MacPayloadType pt, template boolean retry := false) := {
+		payload_type := pt,
+		spare := '00000'B,
+		retry := retry
+	}
+
+	/* Template for Uplink Control ACK */
+	template RlcmacUlBlock ts_RLCMAC_CTRL_ACK(GprsTlli tlli, CtrlAck ack := MS_RCVD_TWO_RLC_SAME_RTI_DIFF_RBSN) := {
+		ctrl := {
+			mac_hdr := t_RLCMAC_UlMacCtrlH(MAC_PT_RLCMAC_NO_OPT),
+			payload := {
+				msg_type := PACKET_CONTROL_ACK,
+				u := {
+					ctrl_ack := {
+						tlli := tlli,
+						ctrl_ack := ack
+					}
+				}
+			}
+		}
+	}
+
+	/* Template for a LlcBlock (part of a LLC frame inside RlcMac?lDataBlock */
+	template LlcBlock t_RLCMAC_LLCBLOCK(octetstring data, boolean more := false, boolean e := true) := {
+		/* let encoder figure out the header */
+		hdr := omit,
+		payload := data
+	}
+
+} with { encode "RAW"; variant "FIELDORDER(msb)" }
diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn
index e5c2464..27c1805 100644
--- a/library/RLCMAC_Types.ttcn
+++ b/library/RLCMAC_Types.ttcn
@@ -31,16 +31,6 @@
 		RRBP_Nplus26_mod_2715648	('11'B)
 	} with { variant "FIELDLENGTH(2)" };
 
-	function f_rrbp_fn_delay(MacRrbp rrbp) return uint32_t {
-		select (rrbp) {
-		case (RRBP_Nplus13_mod_2715648) { return 13; }
-		case (RRBP_Nplus17_or_18_mod_2715648) { return 17; }
-		case (RRBP_Nplus21_or_22_mod_2715648) { return 21;  }
-		case (RRBP_Nplus26_mod_2715648) { return 26; }
-		}
-		return 0;
-	}
-
 	type enumerated EgprsHeaderType {
 		RLCMAC_HDR_TYPE_1,
 		RLCMAC_HDR_TYPE_2,
@@ -66,49 +56,6 @@
 		// MCS6_9 ?
 	};
 
-	function f_rlcmac_cs_mcs2block_len(CodingScheme cs_mcs) return uint32_t {
-		select (cs_mcs) {
-		case (CS_1) { return 23; }
-		case (CS_2) { return 34; }
-		case (CS_3) { return 40; }
-		case (CS_4) { return 54; }
-		case (MCS_1) { return 27; }
-		case (MCS_2) { return 33; }
-		case (MCS_3) { return 42; }
-		case (MCS_4) { return 49; }
-		case (MCS_5) { return 61; }
-		case (MCS_6) { return 79; }
-		case (MCS_7) { return 119; }
-		case (MCS_8) { return 143; }
-		case (MCS_9) { return 155; }
-		}
-		return 0;
-	}
-
-	function f_rlcmac_block_len2cs_mcs(uint32_t len) return CodingScheme {
-		select (len) {
-			case (23) { return CS_1; }
-			case (34) { return CS_2; }
-			case (40) { return CS_3; }
-			case (54) { return CS_4; }
-			case (27) { return MCS_1; }
-			case (33) { return MCS_2; }
-			case (42) { return MCS_3; }
-			case (49) { return MCS_4; }
-			case (60) { return MCS_5; }
-			case (61) { return MCS_5; }
-			case (78) { return MCS_6; }
-			case (79) { return MCS_6; }
-			case (118) { return MCS_7; }
-			case (119) { return MCS_7; }
-			case (142) { return MCS_8; }
-			case (143) { return MCS_8; }
-			case (154) { return MCS_9; }
-			case (155) { return MCS_9; }
-		}
-		return CS_1;
-	}
-
 	/* Partof DL RLC data block and DL RLC/MAC ctrl block */
 	type record DlMacHeader {
 		MacPayloadType	payload_type,
@@ -406,277 +353,6 @@
 	external function enc_RlcmacDlBlock(in RlcmacDlBlock si) return octetstring;
 	external function dec_RlcmacDlBlock(in octetstring stream) return RlcmacDlBlock;
 
-	template (value) RlcmacUlBlock ts_RLC_UL_CTRL_ACK(RlcmacUlCtrlMsg ctrl,
-							MacPayloadType pt := MAC_PT_RLCMAC_NO_OPT,
-							boolean retry := false) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := pt,
-				spare := '00000'B,
-				retry := retry
-			},
-			payload := ctrl
-		}
-	}
-
-	/* Send Template for Downlink ACK/NACK */
-	template RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK(template uint5_t tfi, AckNackDescription andesc, boolean retry := false) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := MAC_PT_RLCMAC_NO_OPT,
-				spare := '00000'B,
-				retry := retry
-			},
-			payload := {
-				msg_type := PACKET_DL_ACK_NACK,
-				u := {
-					dl_ack_nack := {
-						dl_tfi := tfi,
-						ack_nack_desc := andesc,
-						chreq_desc_presence := '0'B,
-						chreq_desc := omit,
-						ch_qual_rep := c_ChQualRep_default
-					}
-				}
-			}
-		}
-	}
-
-	/* Template for uplink Data block */
-	template RlcmacUlBlock t_RLCMAC_UL_DATA(template uint5_t tfi, template uint4_t cv, template uint7_t bsn,
-						template LlcBlocks blocks := {}, template boolean stall := false) := {
-		data := {
-			mac_hdr := {
-				payload_type := MAC_PT_RLC_DATA,
-				countdown := cv,
-				stall_ind := false,
-				retry := false,
-				spare := '0'B,
-				pfi_ind := false,
-				tfi := tfi,
-				tlli_ind := false,
-				bsn := bsn,
-				e := false
-			},
-			tlli := omit,
-			pfi := omit,
-			blocks := blocks
-		}
-	}
-	template RlcmacUlBlock t_RLCMAC_UL_DATA_TLLI(template uint5_t tfi, template uint4_t cv, template uint7_t bsn,
-						     template LlcBlocks blocks := {}, template boolean stall := false, template GprsTlli tlli) := {
-		data := {
-			mac_hdr := {
-				payload_type := MAC_PT_RLC_DATA,
-				countdown := cv,
-				stall_ind := false,
-				retry := false,
-				spare := '0'B,
-				pfi_ind := false,
-				tfi := tfi,
-				tlli_ind := true,
-				bsn := bsn,
-				e := false
-			},
-			tlli := tlli,
-			pfi := omit,
-			blocks := blocks
-		}
-	}
-
-	template DlMacHeader t_RLCMAC_DlMacH(template MacPayloadType pt, template MacRrbp rrbp, template
-uint3_t usf) := {
-		payload_type := pt,
-		rrbp := rrbp,
-		rrbp_valid := ispresent(rrbp),
-		usf := usf
-	}
-
-	template RlcmacDlBlock tr_RLCMAC_DUMMY_CTRL(template uint3_t usf := ?, template PageMode page_mode := ?) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
-				rrbp:= ?,
-				rrbp_valid := ?,
-				usf := usf
-			},
-			opt := *,
-			payload := {
-				msg_type := PACKET_DL_DUMMY_CTRL,
-				u := {
-					dl_dummy := {
-						page_mode := page_mode,
-						persistence_levels_present := ?,
-						persistence_levels := *
-					}
-				}
-			}
-		}
-	}
-
-	template RlcmacDlBlock tr_RLCMAC_DL_PACKET_ASS(template uint3_t usf := ?) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
-				rrbp:= ?,
-				rrbp_valid := ?,
-				usf := usf
-			},
-			opt := *,
-			payload := {
-				msg_type := PACKET_DL_ASSIGNMENT,
-				u := {
-					dl_assignment := {
-						page_mode := ?,
-						pres1 := ?,
-						persistence_levels := *,
-						tfi_or_tlli := ?
-					}
-				}
-			}
-		}
-	}
-
-	template RlcmacDlBlock tr_RLCMAC_UL_PACKET_ASS(template uint3_t usf := ?) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
-				rrbp:= ?,
-				rrbp_valid := ?,
-				usf := usf
-			},
-			opt := *,
-			payload := {
-				msg_type := PACKET_UL_ASSIGNMENT,
-				u := {
-					ul_assignment := {
-						page_mode := ?,
-						persistence_levels_present := ?,
-						persistence_levels := *,
-						identity := ?,
-						is_egprs := ?,  /* msg escape */
-						gprs := *
-					}
-				}
-			}
-		}
-	}
-
-
-	/* Receive Template for Uplink ACK/NACK */
-	template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi, template GprsTlli tlli := ?) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
-				rrbp:= ?,
-				rrbp_valid := ?,
-				usf := ?
-			},
-			opt := *,
-			payload := {
-				msg_type := PACKET_UL_ACK_NACK,
-				u := {
-					ul_ack_nack := {
-						page_mode := ?,
-						msg_excape := ?,
-						uplink_tfi := ul_tfi,
-						is_egprs := '0'B,
-						gprs := {
-							ch_coding_cmd := ?,
-							ack_nack_desc := ?,
-							cont_res_tlli_present := ?,
-							cont_res_tlli := tlli,
-							pkt_ta_present := ?,
-							pkt_ta := *,
-							pwr_ctrl_present := ?,
-							pwr_ctrl := *
-						}
-					}
-				}
-			}
-		}
-	}
-
-	template RlcmacDlBlock tr_RLCMAC_PACKET_PAG_REQ(template uint3_t usf := ?) := {
-		ctrl := {
-			mac_hdr := {
-				payload_type := MAC_PT_RLCMAC_NO_OPT,
-				rrbp:= ?,
-				rrbp_valid := ?,
-				usf := usf
-			},
-			opt := *,
-			payload := {
-				msg_type := PACKET_PAGING_REQUEST,
-				u := {
-					paging := {
-						page_mode := ?,
-						persistence_levels_present := ?,
-						persistence_levels := *,
-						nln_present := ?,
-						nln := *,
-						repeated_pageinfo_present := ?,
-						repeated_pageinfo := *
-					}
-				}
-			}
-		}
-	}
-
-	template RlcmacDlBlock tr_RLCMAC_DATA_RRBP := {
-		data := {
-			mac_hdr := {
-				mac_hdr := {
-					payload_type := MAC_PT_RLC_DATA,
-					rrbp := ?,
-					rrbp_valid := true,
-					usf := ?
-				},
-				hdr_ext := ?
-			},
-			blocks := ?
-		}
-	}
-
-	template RlcmacDlBlock tr_RLCMAC_DATA_EGPRS := {
-		data_egprs := {
-			mac_hdr := ?,
-			fbi := ?,
-			e := ?,
-			blocks := ?
-		}
-	}
-
-	/* Template for Uplink MAC Control Header */
-	template UlMacCtrlHeader t_RLCMAC_UlMacCtrlH(template MacPayloadType pt, template boolean retry := false) := {
-		payload_type := pt,
-		spare := '00000'B,
-		retry := retry
-	}
-
-	/* Template for Uplink Control ACK */
-	template RlcmacUlBlock ts_RLCMAC_CTRL_ACK(GprsTlli tlli, CtrlAck ack := MS_RCVD_TWO_RLC_SAME_RTI_DIFF_RBSN) := {
-		ctrl := {
-			mac_hdr := t_RLCMAC_UlMacCtrlH(MAC_PT_RLCMAC_NO_OPT),
-			payload := {
-				msg_type := PACKET_CONTROL_ACK,
-				u := {
-					ctrl_ack := {
-						tlli := tlli,
-						ctrl_ack := ack
-					}
-				}
-			}
-		}
-	}
-
-	/* Template for a LlcBlock (part of a LLC frame inside RlcMac?lDataBlock */
-	template LlcBlock t_RLCMAC_LLCBLOCK(octetstring data, boolean more := false, boolean e := true) := {
-		/* let encoder figure out the header */
-		hdr := omit,
-		payload := data
-	}
-
 /************************
  * PTCCH/D (Packet Timing Advance Control Channel) message.
  * TODO: add a spec. reference to the message format definition.
diff --git a/mme/gen_links.sh b/mme/gen_links.sh
index 469b92f..b0ecf86 100755
--- a/mme/gen_links.sh
+++ b/mme/gen_links.sh
@@ -56,7 +56,7 @@
 DIR=../library
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="SGsAP_Templates.ttcn SGsAP_CodecPort.ttcn SGsAP_CodecPort_CtrlFunct.ttcn SGsAP_CodecPort_CtrlFunctDef.cc SGsAP_Emulation.ttcn DNS_Helpers.ttcn "
-FILES+="L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn "
+FILES+="L3_Templates.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn "
 FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc S1AP_CodecPort_CtrlFunct.ttcn S1AP_Emulation.ttcn "
 FILES+="NAS_Templates.ttcn GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn "
 FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
diff --git a/msc/gen_links.sh b/msc/gen_links.sh
index 329a7d1..221110e 100755
--- a/msc/gen_links.sh
+++ b/msc/gen_links.sh
@@ -93,7 +93,7 @@
 DIR=../library
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn "
-FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn RLCMAC_CSN1_Types.ttcn L3_Common.ttcn "
+FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn L3_Common.ttcn "
 FILES+="RAN_Emulation.ttcnpp BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn RAN_Adapter.ttcnpp MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn "
 FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc "
 FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc "
diff --git a/pcu/GPRS_TBF.ttcn b/pcu/GPRS_TBF.ttcn
index 1c9a75b..fb42097 100644
--- a/pcu/GPRS_TBF.ttcn
+++ b/pcu/GPRS_TBF.ttcn
@@ -14,8 +14,9 @@
 import from GSM_Types all;
 import from Osmocom_Types all;
 import from General_Types all;
-import from RLCMAC_Types all;
 import from RLCMAC_CSN1_Types all;
+import from RLCMAC_Types all;
+import from RLCMAC_Templates all;
 import from LLC_Types all;
 import from GPRS_Context all;
 
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 24c198e..3562925 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -28,7 +28,9 @@
 
 import from MobileL3_GMM_SM_Types all;
 import from RLCMAC_CSN1_Types all;
+import from RLCMAC_CSN1_Templates all;
 import from RLCMAC_Types all;
+import from RLCMAC_Templates all;
 
 import from MobileL3_CommonIE_Types all;
 import from L3_Templates all;
diff --git a/pcu/gen_links.sh b/pcu/gen_links.sh
index da035cb..3a52c99 100755
--- a/pcu/gen_links.sh
+++ b/pcu/gen_links.sh
@@ -49,7 +49,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "
+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "
 FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "
 FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "
 FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "
diff --git a/selftest/gen_links.sh b/selftest/gen_links.sh
index c590de6..fd64a48 100755
--- a/selftest/gen_links.sh
+++ b/selftest/gen_links.sh
@@ -39,7 +39,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn GSUP_Types.ttcn"
+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn GSUP_Types.ttcn"
 gen_links $DIR $FILES
 
 ignore_pp_results
diff --git a/sgsn/gen_links.sh b/sgsn/gen_links.sh
index 3552bc2..bd3a7ea 100755
--- a/sgsn/gen_links.sh
+++ b/sgsn/gen_links.sh
@@ -83,7 +83,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "
+FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "
 FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "
 FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "
 FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn "
diff --git a/sysinfo/gen_links.sh b/sysinfo/gen_links.sh
index d32b89b..3526a29 100755
--- a/sysinfo/gen_links.sh
+++ b/sysinfo/gen_links.sh
@@ -25,7 +25,7 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="GSMTAP_PortType.ttcn GSMTAP_Types.ttcn GSM_SystemInformation.ttcn GSM_RR_Types.ttcn RLCMAC_CSN1_Types.ttcn GSM_Types.ttcn IPL4_GSMTAP_CtrlFunct.ttcn IPL4_GSMTAP_CtrlFunctDef.cc Osmocom_Types.ttcn Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn"
+FILES="GSMTAP_PortType.ttcn GSMTAP_Types.ttcn GSM_SystemInformation.ttcn GSM_RR_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_Types.ttcn IPL4_GSMTAP_CtrlFunct.ttcn IPL4_GSMTAP_CtrlFunctDef.cc Osmocom_Types.ttcn Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn"
 gen_links $DIR $FILES
 
 ignore_pp_results

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17981
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I9c6597178168aa3848b21930f33be698dd2ce545
Gerrit-Change-Number: 17981
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200501/2f33bff2/attachment.htm>


More information about the gerrit-log mailing list