pcu: TC_mt_ping_pong: Request UL TBF on last DL ACK

Let's test the code path where UL TBF is requested through DL ACK/NACK
here, since we already test the usual UL TBF through CCCH approach in
most tests.

rlc_mode is changed to ACKED since that's the mode we are using so far
in tests.

Change-Id: I5a9a2e8107c87fdbf74cc2f09ae5eeafbb13ad55
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index eebda7f..9f53c3f 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -123,10 +123,10 @@
 		return ms_rac2;
 	}
 
-	private const ChannelReqDescription c_ChReqDesc_default := {
+	const ChannelReqDescription c_ChReqDesc_default := {
 		peak_tput_class := 0,
 		priority := 0,
-		rlc_mode := RLC_MODE_UNACKNOWLEDGED,
+		rlc_mode := RLC_MODE_ACKNOWLEDGED,
 		llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK,
 		RlcOctetCount := 0
 	}
diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn
index e2abd84..939a814 100644
--- a/library/RLCMAC_Templates.ttcn
+++ b/library/RLCMAC_Templates.ttcn
@@ -329,6 +329,23 @@
 		}
 	}
 
+	template RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK_CHREQ(template uint5_t tfi,
+							   AckNackDescription andesc,
+							   boolean retry := false,
+							   template ChannelReqDescription chreq_desc := c_ChReqDesc_default)
+	modifies ts_RLCMAC_DL_ACK_NACK := {
+		ctrl := {
+			payload := {
+				u := {
+					dl_ack_nack := {
+						chreq_desc_presence := '1'B,
+						chreq_desc := chreq_desc
+					}
+				}
+			}
+		}
+	}
+
 	/* 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) := {
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 8b9a471..4a26814 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -1096,13 +1096,13 @@
 	f_sleep(X2002);
 	f_rx_rlcmac_dl_block_exp_data(dl_block, dl_fn, data, 0, exp_cs_mcs);
 
-	/* ACK the DL block */
+	/* ACK the DL block, and request UL TBF at the same time */
 	f_acknackdesc_ack_block(ms.dl_tbf.acknack_desc, dl_block, '1'B);
-	f_ms_tx_ul_block(ms, ts_RLCMAC_DL_ACK_NACK(ms.dl_tbf.tfi, ms.dl_tbf.acknack_desc),
+	f_ms_tx_ul_block(ms, ts_RLCMAC_DL_ACK_NACK_CHREQ(ms.dl_tbf.tfi, ms.dl_tbf.acknack_desc),
 			 f_dl_block_ack_fn(dl_block, dl_fn));
 
-	/* Now MS wants to answer the DL data, Establish an Uplink TBF */
-	f_ms_establish_ul_tbf(ms);
+	/* Expect UL ass */
+	f_ms_rx_imm_ass_pacch(ms, sched_fn, tr_RLCMAC_UL_PACKET_ASS);
 
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resoultion) and make sure it is ACKED fine */