RLCMAC_EncDec.cc: Fix egprs data block encode alignment

Selftests I'm using in the pcu testsuite to verify encoding are attached
too.

Change-Id: Id0e21248853eb5fac89e863822804cfbecf3c865
diff --git a/pcu/PCU_selftest.ttcn b/pcu/PCU_selftest.ttcn
index 3cdb4f4..15cdd80 100644
--- a/pcu/PCU_selftest.ttcn
+++ b/pcu/PCU_selftest.ttcn
@@ -17,12 +17,15 @@
 import from NS_Emulation all;
 import from GPRS_Context all;
 import from Osmocom_Gb_Types all;
+import from Osmocom_Types all;
 import from LLC_Types all;
 import from LLC_Templates all;
 import from L3_Templates all;
 import from GSM_RR_Types all;
-import from RLCMAC_Types all;
 import from RLCMAC_CSN1_Types all;
+import from RLCMAC_Types all;
+import from RLCMAC_Templates all;
+import from PCU_Tests all;
 
 type component dummy_CT extends BSSGP_Client_CT {
 	var NS_CT ns_component;
@@ -249,6 +252,53 @@
 	f_rlcmac_ul_decenc(c_ul_dl_ack_nack);
 }
 
+testcase TC_selftest_rlcmac_egprs() runs on RAW_PCU_Test_CT
+{
+	var octetstring data;
+	var CodingSchemeArray schemes := {
+		//MCS_0,
+		MCS_1,
+		MCS_2,
+		MCS_3,
+		MCS_4,
+		MCS_5,
+		MCS_6,
+		MCS_7,
+		MCS_8,
+		MCS_9
+		};
+
+	/* Initialize the PCU interface abstraction */
+	f_init_raw(testcasename());
+
+	log("Started Uplink test");
+	for (var integer i := 0; i < sizeof(schemes); i := i+1) {
+		log("Testing Coding Schema ", schemes[i]);
+		var template (value) RlcmacUlBlock ul_data := t_RLCMAC_UL_EGPRS_DATA(
+			schemes[i],
+			tfi := 4,
+			cv := 1, /* num UL blocks to be sent (to be overridden in loop) */
+			bsn1 := 2, /* TODO: what should be here? */
+			blocks := { /* To be generated in loop */ });
+
+		ul_data.data_egprs.tlli := '00100101'O;
+		ul_data.data_egprs.blocks := { valueof(t_RLCMAC_LLCBLOCK_EGPRS('AABBCCDDEEFF00112233'O)) };
+
+		/* Encode the payload of DATA.ind */
+		log("Encoding ", valueof(ul_data));
+		data := enc_RlcmacUlBlock(valueof(ul_data));
+		data := f_pad_oct(data, f_rlcmac_cs_mcs2block_len(schemes[i]), '00'O);
+
+		/* Send to PCU so that we get gsmtap traces to verify with wireshark */
+		f_pcuif_tx_data_ind(data, 0, 0);
+
+		log("Decoding ", schemes[i]);
+		ul_data := dec_RlcmacUlBlock(data);
+		log("Decoded: ", ul_data);
+	}
+	log("Done Uplink test");
+}
+
 ///////////////////
 // RR selftest
 ///////////////////