library: implement mandatory part of SI4 Rest Octets

Optional "Rest Octets S" part is left for later.

Change-Id: Ib0814e79f8627f3e2b4746b7e521e06ff82bf2d7
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
diff --git a/library/GSM_RestOctets.ttcn b/library/GSM_RestOctets.ttcn
index 8f0346d..da3478a 100644
--- a/library/GSM_RestOctets.ttcn
+++ b/library/GSM_RestOctets.ttcn
@@ -41,6 +41,19 @@
 	variant (si21_ind) "PRESENCE(sched_where.presence = '0'B)"
 };
 
+/* 10.5.2.35 SI 4 Rest Octets (O & S) */
+type record SI4RestOctets {
+	SelectionParamsOpt	sel_params,
+	PowerOffsetOpt		pwr_offset,
+	GPRSIndicatorOpt	gprs_ind,
+	BIT1			s_presence, // L/H
+	/* TODO: optional "Rest Octets S" part */
+	bitstring		s optional
+} with {
+	variant (s_presence) "CSN.1 L/H"
+	variant (s) "PRESENCE(s_presence = '1'B)"
+};
+
 /* Selection Parameters */
 type record SelectionParams {
 	boolean			cbq,
@@ -115,5 +128,10 @@
 external function dec_SI3RestOctets(in octetstring stream) return SI3RestOctets
 	with { extension "prototype(convert) decode(RAW)" };
 
+external function enc_SI4RestOctets(in SI4RestOctets ro) return octetstring
+	with { extension "prototype(convert) encode(RAW)" };
+external function dec_SI4RestOctets(in octetstring stream) return SI4RestOctets
+	with { extension "prototype(convert) decode(RAW)" };
+
 
 } with { encode "RAW"; variant "FIELDORDER(msb)" }