Osmocom_Gb_Types: Differentiate send (value) and receive templates

Change-Id: I90400c42d3dff0a1de0022320d76f10ac748a206
diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 3de7427..c337cb4 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -67,13 +67,22 @@
 		NS_CAUSE_IP_TEST_FAILEDA			('00010100'B)
 	} with { variant "FIELDLENGTH(8)" };
 
-	template NS_SDU_ControlBits t_SduCtrlB := {
+	template (value) NS_SDU_ControlBits t_SduCtrlB := {
 		rBit := '0'B,
 		cBit := '0'B,
 		spare := '000000'B
 	}
 
-	function t_NS_IE_CAUSE(template NsCause cause) return template CauseNS {
+	template (value) CauseNS ts_NS_IE_CAUSE(NsCause cause) := {
+		iEI := '00'O,
+		ext := '1'B,
+		lengthIndicator := {
+			length1 := 1
+		},
+		cause := int2oct(enum2int(valueof(cause)), 1)
+	}
+
+	function tr_NS_IE_CAUSE(template NsCause cause) return template CauseNS {
 		var template CauseNS ret;
 		ret.iEI := '00'O;
 		ret.ext := '1'B;
@@ -94,7 +103,15 @@
 		}
 	}
 
-	template NS_VCI t_NS_IE_NSVCI(template Nsvci nsvci) := {
+	template (value) NS_VCI ts_NS_IE_NSVCI(Nsvci nsvci) := {
+		iEI := '01'O,
+		ext := '1'B,
+		lengthIndicator := {
+			length1 := 2
+		},
+		nS_VCI := int2oct(nsvci, 2)
+	}
+	template NS_VCI tr_NS_IE_NSVCI(template Nsvci nsvci) := {
 		iEI := '01'O,
 		ext := '1'B,
 		lengthIndicator := {
@@ -103,7 +120,15 @@
 		nS_VCI := f_oct_or_wc(nsvci, 2)
 	}
 
-	template NSEI_NS t_NS_IE_NSEI(template Nsei nsei) := {
+	template (value) NSEI_NS ts_NS_IE_NSEI(Nsei nsei) := {
+		iEI:= '04'O,
+		ext := '1'B,
+		lengthIndicator := {
+			length1 := 2
+		},
+		nSEI := int2oct(nsei, 2)
+	}
+	template NSEI_NS tr_NS_IE_NSEI(template Nsei nsei) := {
 		iEI:= '04'O,
 		ext := '1'B,
 		lengthIndicator := {
@@ -112,35 +137,64 @@
 		nSEI := f_oct_or_wc(nsei, 2)
 	}
 
-	template PDU_NS t_NS_RESET(template NsCause cause, template Nsvci nsvci, template Nsei nsei) := {
+
+	template (value) PDU_NS ts_NS_RESET(NsCause cause, Nsvci nsvci, Nsei nsei) := {
 		pDU_NS_Reset := {
 			nsPduType := '02'O,
-			causeNS := t_NS_IE_CAUSE(cause),
-			nS_VCI := t_NS_IE_NSVCI(nsvci),
-			nSEI_NS := t_NS_IE_NSEI(nsei)
+			causeNS := ts_NS_IE_CAUSE(cause),
+			nS_VCI := ts_NS_IE_NSVCI(nsvci),
+			nSEI_NS := ts_NS_IE_NSEI(nsei)
+		}
+	}
+	template PDU_NS tr_NS_RESET(template NsCause cause, template Nsvci nsvci, template Nsei nsei) := {
+		pDU_NS_Reset := {
+			nsPduType := '02'O,
+			causeNS := tr_NS_IE_CAUSE(cause),
+			nS_VCI := tr_NS_IE_NSVCI(nsvci),
+			nSEI_NS := tr_NS_IE_NSEI(nsei)
 		}
 	}
 
-	template PDU_NS t_NS_RESET_ACK(template Nsvci nsvci, template Nsei nsei) := {
+	template (value) PDU_NS ts_NS_RESET_ACK(Nsvci nsvci, Nsei nsei) := {
 		pDU_NS_Reset_Ack := {
 			nsPduType := '03'O,
-			nS_VCI := t_NS_IE_NSVCI(nsvci),
-			nSEI_NS := t_NS_IE_NSEI(nsei)
+			nS_VCI := ts_NS_IE_NSVCI(nsvci),
+			nSEI_NS := ts_NS_IE_NSEI(nsei)
+		}
+	}
+	template PDU_NS tr_NS_RESET_ACK(template Nsvci nsvci, template Nsei nsei) := {
+		pDU_NS_Reset_Ack := {
+			nsPduType := '03'O,
+			nS_VCI := tr_NS_IE_NSVCI(nsvci),
+			nSEI_NS := tr_NS_IE_NSEI(nsei)
 		}
 	}
 
-	template PDU_NS t_NS_BLOCK(template NsCause cause, template Nsvci nsvci) := {
+	template (value) PDU_NS ts_NS_BLOCK(NsCause cause, Nsvci nsvci) := {
 		pDU_NS_Block := {
 			nsPduType := '04'O,
-			causeNS := t_NS_IE_CAUSE(cause),
-			nS_VCI := t_NS_IE_NSVCI(nsvci)
+			causeNS := ts_NS_IE_CAUSE(cause),
+			nS_VCI := ts_NS_IE_NSVCI(nsvci)
+		}
+	}
+	template PDU_NS tr_NS_BLOCK(template NsCause cause, template Nsvci nsvci) := {
+		pDU_NS_Block := {
+			nsPduType := '04'O,
+			causeNS := tr_NS_IE_CAUSE(cause),
+			nS_VCI := tr_NS_IE_NSVCI(nsvci)
 		}
 	}
 
-	template PDU_NS t_NS_BLOCK_ACK(template Nsvci nsvci) := {
+	template (value) PDU_NS ts_NS_BLOCK_ACK(Nsvci nsvci) := {
 		pDU_NS_Block_Ack := {
 			nsPduType := '05'O,
-			nS_VCI := t_NS_IE_NSVCI(nsvci)
+			nS_VCI := ts_NS_IE_NSVCI(nsvci)
+		}
+	}
+	template PDU_NS tr_NS_BLOCK_ACK(template Nsvci nsvci) := {
+		pDU_NS_Block_Ack := {
+			nsPduType := '05'O,
+			nS_VCI := tr_NS_IE_NSVCI(nsvci)
 		}
 	}
 
@@ -168,10 +222,10 @@
 		}
 	}
 
-	template PDU_NS ts_NS_STATUS(NsCause cause, PDU_NS pdu) := {
+	template (value) PDU_NS ts_NS_STATUS(NsCause cause, PDU_NS pdu) := {
 		pDU_NS_Status := {
 			nsPduType := '08'O,
-			causeNS := t_NS_IE_CAUSE(cause),
+			causeNS := ts_NS_IE_CAUSE(cause),
 			nS_VCI := omit,
 			nS_PDU := {
 				iEI := '02'O,
@@ -187,7 +241,15 @@
 		}
 	}
 
-	template PDU_NS t_NS_UNITDATA(template NS_SDU_ControlBits bits, template BssgpBvci bvci, template
+	template (value) PDU_NS ts_NS_UNITDATA(template (value) NS_SDU_ControlBits bits, BssgpBvci bvci, octetstring sdu) := {
+		pDU_NS_Unitdata := {
+			nsPduType := '00'O,
+			nS_SDU_ControlBits := bits,
+			bVCI := int2oct(bvci, 2),
+			nS_SDU := sdu
+		}
+	}
+	template PDU_NS tr_NS_UNITDATA(template NS_SDU_ControlBits bits, template BssgpBvci bvci, template
 octetstring sdu) := {
 		pDU_NS_Unitdata := {
 			nsPduType := '00'O,