pcu: Introduce TC_mo_ping_pong_with_ul_racap_egprs_only

Change-Id: I396dbd0ca200fbf9365c534f4d479f903d0417ff
diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn
index be751d7..1774197 100644
--- a/library/RLCMAC_Templates.ttcn
+++ b/library/RLCMAC_Templates.ttcn
@@ -93,6 +93,46 @@
 		return CS_1;
 	}
 
+	function f_rlcmac_block_ChCodingCommand2cs_mcs(ChCodingCommand chcc) return CodingScheme {
+		select (chcc) {
+			case (CH_CODING_CS1) { return CS_1; }
+			case (CH_CODING_CS2) { return CS_2; }
+			case (CH_CODING_CS3) { return CS_3; }
+			case (CH_CODING_CS4) { return CS_4; }
+		}
+		return CS_1;
+	}
+
+	function f_rlcmac_block_EgprsChCodingCommand2cs_mcs(EgprsChCodingCommand echcc) return CodingScheme {
+		select (echcc) {
+			case (CH_CODING_MCS1) { return MCS_1; }
+			case (CH_CODING_MCS2) { return MCS_2; }
+			case (CH_CODING_MCS3) { return MCS_3; }
+			case (CH_CODING_MCS4) { return MCS_4; }
+			case (CH_CODING_MCS5) { return MCS_5; }
+			case (CH_CODING_MCS6) { return MCS_6; }
+			case (CH_CODING_MCS7) { return MCS_7; }
+			case (CH_CODING_MCS8) { return MCS_8; }
+			case (CH_CODING_MCS9) { return MCS_9; }
+			/* CH_CODING_MCS5_7 */
+			/* CH_CODING_MCS6_9 */
+		}
+		return MCS_1;
+	}
+
+	/* 1 -> CS_1 / MCS_1, 2 -> CS_2 / MCS_2, etc. */
+	function f_rlcmac_block_int2cs_mcs(integer n, boolean is_mcs) return CodingScheme {
+		var CodingScheme cs_mcs;
+		if (not is_mcs) {
+			int2enum(n - 1, cs_mcs);
+			return cs_mcs;
+		} else {
+			cs_mcs := MCS_0;
+			int2enum(enum2int(cs_mcs) + n, cs_mcs);
+			return cs_mcs;
+		}
+	}
+
 	/* Coding and Puncturing Scheme indicator field for Header type 1 in EGPRS TBF or EC TBF or downlink EGPRS2 TBF */
 	function f_rlcmac_cps_htype1_to_mcs(uint3_t cps) return CodingScheme {
 		var CodingSchemeArray egprs_Header_type1_coding_puncturing_scheme_to_mcs := {