pcu: Support decoding Egprs Pkt Ul Ass on PDCH

Change-Id: I30fb98aab67303997b803a0359ffc2e0b65ebf01
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 447e52b..d4c6efd 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -233,6 +233,16 @@
 		variant (dyn_block_alloc) "PRESENCE(alloc_present = '01'B)"
 		variant (sgl_block_alloc) "PRESENCE(alloc_present = '10'B)"
 	};
+	type record COMPACTreducedMA {
+		uint7_t		ma_bitmap_length,
+		bitstring	ma_bitmap,
+		BIT1		maio_2_present,
+		BIT6		maio_2
+	} with {
+		variant (ma_bitmap_length) "LENGTHTO (ma_bitmap)"
+		variant (ma_bitmap_length) "UNIT(bits)"
+		variant (maio_2) "PRESENCE(maio_2_present = '1'B)"
+	};
 	type record of AccessTechnologiesRequest AccessTechnologiesRequestRepetition
 	with { variant "EXTENSION_BIT(reverse)" };
 	type record AccessTechnologiesRequest
@@ -240,16 +250,72 @@
 		BIT4	accessTechnType,
 		BIT1    extensionBit
 	} with { variant "FIELDORDER(msb)" };
+	type record MultiBlockAllocation {
+		uint3_t			timeslot_nr,
+		BIT1			alpha_gamma_present,
+		uint4_t			alpha optional,
+		uint5_t			gamma_tn optional,
+		BIT1			p0_present,
+		uint4_t			p0 optional,
+		BIT1			reserved ('0'B) optional,
+		BIT1			pr_mode optional,
+		StartingFnDesc		tbf_starting_time,
+		uint2_t			num_radio_blocks_alloc
+	} with {
+		variant (alpha)		"PRESENCE(alpha_gamma_present = '1'B)"
+		variant (gamma_tn)	"PRESENCE(alpha_gamma_present = '1'B)"
+		variant (p0)		"PRESENCE(p0_present = '1'B)"
+		variant (reserved)	"PRESENCE(p0_present = '1'B)"
+		variant (pr_mode)	"PRESENCE(p0_present = '1'B)"
+	};
+	type record PktUlAssEgprs {
+		BIT2			dual_carrier('00'B), /*TODO 01       -- Message escape for dual carrier, RTTI, BTTI with FANR activated, EGPRS2 */
+		BIT1			tlli_present,
+		GprsTlli		tlli optional,
+		BIT1			compact_reduced_ma_present,
+		COMPACTreducedMA	compact_reduced_ma optional,
+		EgprsChCodingCommand	chan_coding_cmd,
+		BIT1			resegment,
+		EgprsWindowSize		window_size,
+		BIT1			ats_present,
+		AccessTechnologiesRequestRepetition ats optional, /* ? */
+		BIT1			arac_retrans_req,
+		BIT1			tlli_block_chan_coding,
+		BIT1			bep_period2_present,
+		BIT4			bep_period2 optional,
+		PacketTimingAdvance	pkt_ta,
+		BIT1			pkt_ext_ta_present,
+		BIT2			pkt_ext_ta optional,
+		BIT1			freq_par_present,
+		FrequencyParameters	freq_par optional,
+		BIT2			alloc_present,
+		DynamicAllocation	dyn_block_alloc optional,
+		MultiBlockAllocation	multi_block_alloc optional
+		/* TODO: Additions for Rel-5  and more */
+	} with {
+		variant (tlli) "PRESENCE(tlli_present = '1'B)"
+		variant (compact_reduced_ma) "PRESENCE(compact_reduced_ma_present = '1'B)"
+		variant (ats) "PRESENCE(ats_present = '1'B)"
+		variant (bep_period2) "PRESENCE(bep_period2_present = '1'B)"
+		variant (pkt_ext_ta) "PRESENCE(pkt_ext_ta_present = '1'B)"
+		variant (freq_par) "PRESENCE(freq_par_present = '1'B)"
+		variant (dyn_block_alloc) "PRESENCE(alloc_present = '01'B)"
+		variant (multi_block_alloc) "PRESENCE(alloc_present = '10'B)"
+	};
 	type record PacketUlAssignment {
 		PageMode		page_mode,
 		BIT1			persistence_levels_present,
 		PersistenceLevels	persistence_levels optional,
 		PktUlAssUnion		identity,
 		BIT1			is_egprs,	/* msg escape */
-		PktUlAssGprs		gprs optional
+		PktUlAssGprs		gprs optional,
+		PktUlAssEgprs		egprs optional
+		/* TODO: Table 11.2.29.1: PACKET UPLINK ASSIGNMENT information elements
+			https://www.etsi.org/deliver/etsi_ts/144000_144099/144060/09.03.00_60/ts_144060v090300p.pdf */
 	} with {
 		variant (persistence_levels) "PRESENCE(persistence_levels_present = '1'B)"
 		variant (gprs) "PRESENCE(is_egprs = '0'B)"
+		variant (egprs) "PRESENCE(is_egprs = '1'B)"
 	};
 
 	/* 11.2.10 Packet Paging Request */