pcu: Wait for USF before start using UL TBF

Change-Id: Ibe8f8c24b239715c0a43d52e59475011e78cb4eb
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index e485868..a1da67b 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -326,6 +326,9 @@
 			var RlcmacDlBlock dl_block;
 			var uint32_t poll_fn;
 
+			/* Wait until PCU starts requesting for UL block on this TBF: */
+			f_ms_wait_usf(g_ms[i]);
+
 			f_ms_tx_ul_data_block(g_ms[i], dummy, with_tlli := true, fn := g_ms[i].ul_tbf.start_time_fn, nr := nr);
 			f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, poll_fn, nr := nr);
 		}
@@ -429,6 +432,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine */
 	f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true, fn := ms.ul_tbf.start_time_fn);
@@ -531,6 +537,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* In a busy network, there can be a significant delay between resource
 	 * allocation (Packet Uplink Assignment above) and the actual time when
 	 * the MS is allowed to transmit the first Uplink data block. */
@@ -825,6 +834,8 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
 
 	/* The actual / old link quality values. We need to keep track of the old
 	 * (basically previous) link quality value, because OsmoPCU actually
@@ -917,6 +928,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	/* 16 bytes fills the llc block (because TLLI takes 4 bytes) */
@@ -989,6 +1003,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	/* 16 bytes fills the llc block (because TLLI takes 4 bytes) */
@@ -1602,6 +1619,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	f_ms_tx_ul_data_block_multi(ms, 5, with_tlli := true);
 	exp_ul_ack_sub := tr_UlAckNackGprs(*, tr_AckNackDescription('1'B), *);
 	exp_ul_ack := tr_RLCMAC_UL_ACK_NACK_GPRS(ms.ul_tbf.tfi, exp_ul_ack_sub);
@@ -2172,6 +2192,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	total_payload := f_rnd_octstring(f_ultbf_payload_fill_length(ms.ul_tbf, true));
@@ -2223,6 +2246,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	payload := f_rnd_octstring(16); /* 16 bytes fills the llc block (because TLLI takes 4 bytes) */
@@ -2358,6 +2384,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	f_TC_ul_data_toolong_fills_padding_cs(ms, CS_2, 2);
 	f_TC_ul_data_toolong_fills_padding_cs(ms, CS_3, 1);
 	f_TC_ul_data_toolong_fills_padding_cs(ms, CS_4, 0);
@@ -2391,6 +2420,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine */
 	f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true, fn := ms.ul_tbf.start_time_fn);
@@ -2668,6 +2700,9 @@
 	f_ms_establish_ul_tbf(ms);
 	tfi := ms.ul_tbf.tfi;
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	payload := f_rnd_octstring(f_ultbf_payload_fill_length(ms.ul_tbf, true)); /* 16 bytes fills the llc block (because TLLI takes 4 bytes) */
@@ -2884,6 +2919,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Summary of what's transmitted:
 	 * 1- UL RlcDataBlock(dataA) [BSN=0, CV=3]
 	 * 2- UL RlcDataBlock(dataA finished, dataB starts) [BSN=1, CV=2]
@@ -3185,6 +3223,9 @@
 	  through PDCH (no multiblock assignment possible through PCH) */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine */
 	f_ms_tx_ul_data_block(ms, data, with_tlli := true, fn := ms.ul_tbf.start_time_fn,
@@ -3330,6 +3371,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine */
 	f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true, fn := ms.ul_tbf.start_time_fn);
@@ -3416,6 +3460,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine */
 	f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true, fn := ms.ul_tbf.start_time_fn);
@@ -3580,6 +3627,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* build mobile Identity */
 	mi := valueof(ts_MI_IMSI_LV(imsi));
 	mi_enc_lv := enc_MobileIdentityLV(mi);
@@ -3624,6 +3674,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send paging request with or without TMSI */
 	if (use_ptmsi) {
 		tmsi := oct2int(f_rnd_octstring(4)); /* Random P-TMSI */
@@ -3786,6 +3839,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Fake GMM GPRS Attach or similar, PCU doesn't care about upper layers here */
 	f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true, fn := ms.ul_tbf.start_time_fn);
 	f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);
@@ -3845,6 +3901,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Fake GMM GPRS Attach or similar, PCU doesn't care about upper layers here */
 	f_ms_tx_ul_data_block_multi(ms, 1, with_tlli := true, fn := ms.ul_tbf.start_time_fn);
 	f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);
@@ -3960,6 +4019,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	payload := f_rnd_octstring(f_ultbf_payload_fill_length(ms.ul_tbf, true));
@@ -4024,6 +4086,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	payload := f_rnd_octstring(f_ultbf_payload_fill_length(ms.ul_tbf, true));
@@ -4048,10 +4113,12 @@
 	 * The MS decides it want to send new Ul TBF so it send RACH req to ask for it: */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	dl_fn := f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	 * contention resolution) and make sure it is ACKED fine. */
 	payload := f_rnd_octstring(f_ultbf_payload_fill_length(ms.ul_tbf, true));
-	dl_fn := f_rx_rlcmac_dl_block_exp_dummy(dl_block);
 	f_ms_tx_ul_data_block(ms, payload, cv := 1, with_tlli := true, fn := f_next_pdch_block(dl_fn));
 
 	/* UL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
@@ -4099,6 +4166,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send one UL block (with TLLI since we are in One-Phase Access
 	   contention resolution) and make sure it is ACKED fine. */
 	payload := f_rnd_octstring(f_ultbf_payload_fill_length(ms.ul_tbf, true));
@@ -4692,6 +4762,9 @@
 	/* Establish an Uplink TBF */
 	f_ms_establish_ul_tbf(ms);
 
+	/* Wait until PCU starts requesting for UL block on this TBF: */
+	f_ms_wait_usf(ms);
+
 	/* Send an Uplink block, so this TBF becomes "active" */
 	f_ms_tx_ul_data_block(ms, data, with_tlli := true, fn := ms.ul_tbf.start_time_fn);