pcu: Introduce test TC_t3172_*

Related: OS#3928
Change-Id: I3f4368c99b00453b471c3d741fecb8864ecdc628
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index 254983a..943717e 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -19,6 +19,28 @@
 	import from MobileL3_GMM_SM_Types all;
 	import from RLCMAC_CSN1_Types all;
 
+	/* 11.2.1 Packet Access Reject */
+	template PacketAccessRejectStruct tr_PacketAccessRejectStruct_TLLI(template GprsTlli tlli := ?,
+									   template uint8_t wait_ind := *,
+									   template BIT1 wait_ind_size := *) := {
+		id_type := '0'B,
+		id := {
+			tlli := tlli
+		},
+		wait_ind_presence := ?,
+		wait_ind := wait_ind,
+		wait_ind_size := wait_ind_size
+	}
+	template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_ACC_REJ(template PacketAccessRejectStruct rej := ?) := {
+		msg_type := PACKET_ACCESS_REJECT,
+		u := {
+			access_reject := {
+				page_mode := ?,
+				reject_struct := rej
+			}
+		}
+	}
+
 	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,
@@ -79,6 +101,18 @@
 		RlcOctetCount := 0
 	}
 
+	template (value) ChannelReqDescription ts_ChannelReqDescription(uint4_t peak_tput_class := 0,
+									uint2_t	priority := 0,
+									RlcMode	rlc_mode := RLC_MODE_ACKNOWLEDGED,
+									LlcPduType llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK,
+									uint16_t RlcOctetCount := 0)  := {
+		peak_tput_class := peak_tput_class,
+		priority := priority,
+		rlc_mode := rlc_mode,
+		llc_pdu_type := llc_pdu_type,
+		RlcOctetCount := RlcOctetCount
+	};
+
 	/* TS 44.060 sec 11.2.16 */
 	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(GprsTlli tlli,
 						     template (omit) MSRadioAccessCapabilityV ms_rac,
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index d9a5662..2093f55 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -705,6 +705,7 @@
 
 	/* 11.2.0.1 */
 	type union RlcmacDlCtrlUnion {
+		PacketAccessReject	access_reject,
 		PacketDlAssignment	dl_assignment,
 		PacketMeasOrder		meas_order,
 		PacketUlAssignment	ul_assignment,
@@ -721,7 +722,8 @@
 		RlcmacDlCtrlMsgType	msg_type,
 		RlcmacDlCtrlUnion	u
 	} with {
-		variant (u) "CROSSTAG(dl_assignment,	msg_type = PACKET_DL_ASSIGNMENT;
+		variant (u) "CROSSTAG(access_reject,	msg_type = PACKET_ACCESS_REJECT;
+				      dl_assignment,	msg_type = PACKET_DL_ASSIGNMENT;
 				      meas_order,	msg_type = PACKET_MEASUREMENT_ORDER;
 				      ul_assignment,	msg_type = PACKET_UL_ASSIGNMENT;
 				      paging,		msg_type = PACKET_PAGING_REQUEST;
@@ -739,6 +741,35 @@
 	external function dec_RlcmacDlCtrlMsg(in octetstring stream) return RlcmacDlCtrlMsg
 		with { extension "prototype(convert) decode(RAW)" };
 
+	/* 11.2.1 Packet Access Reject */
+	type record PacketAccessRejectIDSub {
+		BIT1			id_type,
+		PacketRequestReference	req_ref optional,
+		GlobalTfi gtfi optional
+	} with { variant (req_ref) "PRESENCE(id_type = '0'B)"
+		 variant (gtfi) "PRESENCE(id_type = '1'B)"
+	};
+	type union PacketAccessRejectID {
+		GprsTlli tlli,
+		PacketAccessRejectIDSub id_sub
+	} with { variant (tlli) "BYTEORDER(first)" };
+	type record PacketAccessRejectStruct {
+		BIT1			id_type,
+		PacketAccessRejectID	id,
+		BIT1			wait_ind_presence,
+		uint8_t			wait_ind optional,
+		BIT1			wait_ind_size optional
+	} with { variant (id) "CROSSTAG(tlli, id_type = '0'B; id_sub, id_type = '1'B)"
+		 variant (wait_ind) "PRESENCE(wait_ind_presence = '1'B)"
+		 variant (wait_ind_size) "PRESENCE(wait_ind_presence = '1'B)"
+	};
+	type record PacketAccessReject {
+		PageMode		page_mode,
+		PacketAccessRejectStruct reject_struct
+		/* TODO: Additional Reject */
+		/* TODO: Rel5 additions */
+	} with { variant "" };
+
 
 	/* 11.2.6 Packet Downlink Ack/Nack */
 	type record ILevel {