Change in osmo-ttcn3-hacks[master]: pcu: Introduce TC_mo_ping_pong_with_ul_racap_egprs_only

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Thu May 14 13:20:55 UTC 2020


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18253 )


Change subject: pcu: Introduce TC_mo_ping_pong_with_ul_racap_egprs_only
......................................................................

pcu: Introduce TC_mo_ping_pong_with_ul_racap_egprs_only

Change-Id: I396dbd0ca200fbf9365c534f4d479f903d0417ff
---
M library/RLCMAC_Templates.ttcn
M pcu/PCU_Tests.ttcn
2 files changed, 95 insertions(+), 5 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/18253/1

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 := {
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 18189fa..986bbd5 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -262,6 +262,25 @@
 	return 0; /* make compiler happy */
 }
 
+private function f_rlcmac_dl_block_get_cs_mcs(RlcmacDlBlock dl_block)
+runs on RAW_PCU_Test_CT return CodingScheme {
+	if (ischosen(dl_block.data)) {
+		/* TODO: get it from data header */
+	} else if (ischosen(dl_block.data_egprs)) {
+		/* TODO: get it from data header */
+	} else { /* Ctrl block */
+		if (match(dl_block, tr_RLCMAC_UL_PACKET_ASS_GPRS(?, tr_PktUlAssGprsDynamic(?)))) {
+			return f_rlcmac_block_ChCodingCommand2cs_mcs(dl_block.ctrl.payload.u.ul_assignment.gprs.ch_coding_cmd);
+		}
+		if (match(dl_block, tr_RLCMAC_UL_PACKET_ASS_EGPRS(?, tr_PktUlAssEgprsDynamic(?)))) {
+			return f_rlcmac_block_EgprsChCodingCommand2cs_mcs(dl_block.ctrl.payload.u.ul_assignment.egprs.chan_coding_cmd);
+		}
+	}
+	setverdict(fail, "DlBlock doesn't contain CS_MCS information:", dl_block);
+	f_shutdown(__BFILE__, __LINE__);
+	return CS_1; /* make compiler happy */
+}
+
 /* TS 44.060 sec 12.3 Ack/Nack Description */
 private function f_acknackdesc_ack_block(inout AckNackDescription desc, RlcmacDlBlock dl_block, BIT1 final_ack := '0'B)
 {
@@ -1465,7 +1484,10 @@
 /* Test scenario where MS wants to send some data on PDCH against SGSN and it is
  * answered, so TBFs for uplink and later for downlink are created.
  */
-private function f_TC_mo_ping_pong_2phase_access(template (value) MSRadioAccessCapabilityV ms_racap, template (present) CodingScheme exp_cs_mcs := ?) runs on RAW_PCU_Test_CT {
+private function f_TC_mo_ping_pong_2phase_access(template (value) MSRadioAccessCapabilityV ms_racap,
+						 template (present) CodingScheme exp_ul_cs_mcs := ?,
+						 template (present) CodingScheme exp_dl_cs_mcs := ?)
+runs on RAW_PCU_Test_CT {
 	var GsmRrMessage rr_imm_ass;
 	var PacketUlAssign ul_tbf_ass;
 	var PacketDlAssign dl_tbf_ass;
@@ -1477,6 +1499,7 @@
 	var uint32_t dl_fn;
 	var OCT4 tlli := '00000001'O;
 	var AckNackDescription ack_nack_desc := valueof(t_AckNackDescription_init);
+	var CodingScheme cs_mcs;
 	/* 0111 0xxx: Single block packet access; one block period on a PDCH is needed for two phase packet access or other RR signalling purpose. */
 	var uint16_t ra := oct2int('70'O);
 
@@ -1509,10 +1532,15 @@
 		setverdict(fail, "Wrong TLLI ", dl_block.ctrl.payload.u.ul_assignment.identity.tlli, " received vs exp ", tlli);
 		f_shutdown(__BFILE__, __LINE__);
 	}
+	cs_mcs := f_rlcmac_dl_block_get_cs_mcs(dl_block);
+	if (not match(cs_mcs, exp_ul_cs_mcs)) {
+		setverdict(fail, "Wrong CS_MCS ", cs_mcs, " received vs exp ", exp_ul_cs_mcs);
+		f_shutdown(__BFILE__, __LINE__);
+	}
 
 	/* Send one UL block (without TLLI since we are in Second-Phase Access)
 	   and make sure it is ACKED fine */
-	f_tx_rlcmac_ul_n_blocks(f_rlcmac_dl_block_get_tfi(dl_block), 1);
+	f_tx_rlcmac_ul_n_blocks(f_rlcmac_dl_block_get_tfi(dl_block), 1);  /* TODO: send using cs_mcs */
 
 	//f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, sched_fn);
 	/* DL ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
@@ -1528,7 +1556,7 @@
 	f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);
 
 	/* After acking the dl assignment, dl tbf goes into FLOW state and PCU will provide DL data when BTS asks for it */
-	f_rx_rlcmac_dl_block_exp_data(dl_block, dl_fn, data, 0, exp_cs_mcs);
+	f_rx_rlcmac_dl_block_exp_data(dl_block, dl_fn, data, 0, exp_dl_cs_mcs);
 
 	/* ACK the DL block */
 	f_acknackdesc_ack_block(ack_nack_desc, dl_block, '1'B);
@@ -1544,9 +1572,29 @@
 		gprsextendeddynalloccap := '0'B
 	};
 	var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRec('0001'B /* E-GSM */, mscap_gprs, omit)) };
-	var CodingScheme exp_cs_mcs := CS_2;
+	var CodingScheme exp_ul_cs_mcs := f_rlcmac_block_int2cs_mcs(g_mcs_initial_ul, false);
+	var CodingScheme exp_dl_cs_mcs := CS_2;
 
-	f_TC_mo_ping_pong_2phase_access(ms_racap, exp_cs_mcs);
+	f_TC_mo_ping_pong_2phase_access(ms_racap, exp_ul_cs_mcs, exp_dl_cs_mcs);
+}
+
+testcase TC_mo_ping_pong_with_ul_racap_egprs_only() runs on RAW_PCU_Test_CT {
+	/* Initialize the PCU interface abstraction with EGPRS-only */
+	g_egprs_only := true;
+
+	var MultislotCap_GPRS mscap_gprs := {
+		gprsmultislotclass := '00011'B,
+		gprsextendeddynalloccap := '0'B
+	};
+	var MultislotCap_EGPRS mscap_egprs := {
+		egprsmultislotclass := '00011'B,
+		egprsextendeddynalloccap := '0'B
+	};
+	var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRec('0001'B /* E-GSM */, mscap_gprs, mscap_egprs)) };
+	var CodingScheme exp_ul_cs_mcs := f_rlcmac_block_int2cs_mcs(g_mcs_initial_ul, true);
+	var CodingScheme exp_dl_cs_mcs := MCS_1;
+
+	f_TC_mo_ping_pong_2phase_access(ms_racap, exp_ul_cs_mcs, exp_dl_cs_mcs);
 }
 
 /* Test scenario where SGSN wants to send some data against MS and it is
@@ -2108,6 +2156,8 @@
 	execute( TC_egprs_pkt_chan_req_signalling() );
 	execute( TC_egprs_pkt_chan_req_one_phase() );
 	execute( TC_egprs_pkt_chan_req_two_phase() );
+
+	execute( TC_mo_ping_pong_with_ul_racap_egprs_only() );
 }
 
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18253
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I396dbd0ca200fbf9365c534f4d479f903d0417ff
Gerrit-Change-Number: 18253
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200514/6b292a6e/attachment.htm>


More information about the gerrit-log mailing list