pcu: Split f_ms_tx_ul_data_block() into helper functions

This allows shrinking some tests which wish to send specificaly crafter
LlcBlocks (since the way LlcBlocks are created for f_ms_tx_ul_data_block
only allows sending data related to the same upper LLC PDU)

Change-Id: I81176fa5c7caa2535bcc97eec26833579933ed7a
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index 64a39dd..491a496 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -669,6 +669,45 @@
 	f_ms_tx_data_ind(ms, data, fn, nr := nr);
 }
 
+function f_ms_tx_ul_data_blocks_gprs(inout GprsMS ms, template (value) LlcBlocks blocks,
+			       uint4_t cv := 15, boolean with_tlli := false, uint32_t fn := 0,
+			       template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
+runs on MS_BTS_IFACE_CT {
+	var template (value) RlcmacUlBlock ul_data;
+
+	ul_data := t_RLCMAC_UL_DATA(cs := ms.ul_tbf.tx_cs_mcs,
+				    tfi := ms.ul_tbf.tfi,
+				    cv := cv,
+				    bsn := ms.ul_tbf.bsn,
+				    blocks := blocks);
+	if (with_tlli) {
+		ul_data.data.mac_hdr.tlli_ind := true;
+		ul_data.data.tlli := ms.tlli;
+	}
+	f_ultbf_inc_bsn(ms.ul_tbf);
+	f_ms_tx_ul_block(ms, ul_data, fn, nr := nr);
+}
+
+function f_ms_tx_ul_data_blocks_egprs(inout GprsMS ms, template (value) EgprsLlcBlocks blocks,
+			       uint4_t cv := 15, boolean with_tlli := false, uint32_t fn := 0,
+			       template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
+runs on MS_BTS_IFACE_CT {
+	var template (value) RlcmacUlBlock ul_data;
+
+	ul_data := t_RLCMAC_UL_EGPRS_DATA(mcs := ms.ul_tbf.tx_cs_mcs,
+					  tfi := ms.ul_tbf.tfi,
+					  cv := cv,
+					  bsn1 := ms.ul_tbf.bsn,
+					  bsn2_offset := 0,
+					  blocks := blocks);
+	if (with_tlli) {
+		ul_data.data_egprs.tlli_ind := true;
+		ul_data.data_egprs.tlli := ms.tlli;
+	}
+	f_ultbf_inc_bsn(ms.ul_tbf);
+	f_ms_tx_ul_block(ms, ul_data, fn, nr := nr);
+}
+
 function f_ms_tx_ul_data_block(inout GprsMS ms, octetstring payload,
 			       uint4_t cv := 15, boolean with_tlli := false, uint32_t fn := 0,
 			       template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
@@ -676,29 +715,10 @@
 	var template (value) RlcmacUlBlock ul_data;
 
 	if (f_rlcmac_cs_mcs_is_mcs(ms.ul_tbf.tx_cs_mcs)) {
-		ul_data := t_RLCMAC_UL_EGPRS_DATA(mcs := ms.ul_tbf.tx_cs_mcs,
-						  tfi := ms.ul_tbf.tfi,
-						  cv := cv,
-						  bsn1 := ms.ul_tbf.bsn,
-						  bsn2_offset := 0,
-						  blocks := {t_RLCMAC_LLCBLOCK_EGPRS(payload)})
-		if (with_tlli) {
-			ul_data.data_egprs.tlli_ind := true;
-			ul_data.data_egprs.tlli := ms.tlli;
-		}
+		f_ms_tx_ul_data_blocks_egprs(ms,  {t_RLCMAC_LLCBLOCK_EGPRS(payload)}, cv, with_tlli, fn, nr)
 	} else {
-		ul_data := t_RLCMAC_UL_DATA(cs := ms.ul_tbf.tx_cs_mcs,
-					    tfi := ms.ul_tbf.tfi,
-					    cv := cv,
-					    bsn := ms.ul_tbf.bsn,
-					    blocks := {t_RLCMAC_LLCBLOCK(payload)});
-		if (with_tlli) {
-			ul_data.data.mac_hdr.tlli_ind := true;
-			ul_data.data.tlli := ms.tlli;
-		}
+		f_ms_tx_ul_data_blocks_gprs(ms, {t_RLCMAC_LLCBLOCK(payload)}, cv, with_tlli, fn, nr);
 	}
-	f_ultbf_inc_bsn(ms.ul_tbf);
-	f_ms_tx_ul_block(ms, ul_data, fn, nr := nr);
 }
 
 /* Send random payload for last "num_blocks" blocks in Ul TBF (ending with CV=0). */