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
///////////////////