Change in osmo-ttcn3-hacks[master]: pcu: WIP EGPRS

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
Tue Dec 24 13:55:02 UTC 2019


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


Change subject: pcu: WIP EGPRS
......................................................................

pcu: WIP EGPRS

Change-Id: I3b36d20b5350c8011fd5b4cd2bb2eadd08b74823
---
M library/RLCMAC_CSN1_Types.ttcn
M library/RLCMAC_Types.ttcn
M pcu/PCU_Tests_RAW.ttcn
3 files changed, 204 insertions(+), 3 deletions(-)



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

diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index ea2edf6..121d350 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -16,6 +16,7 @@
 	import from General_Types all;
 	import from Osmocom_Types all;
 	import from GSM_Types all;
+	import from MobileL3_GMM_SM_Types all;
 
 	/* TS 44.060 11.2.0.1 */
 	type enumerated RlcmacDlCtrlMsgType {
@@ -418,7 +419,7 @@
 	 * (value part, see 3GPP TS 24.008, 10.5.5.12a) */
 	type union MSRadioAccCap2 {
 		/* TODO: see table 10.5.146/3GPP TS 24.008 */
-		bitstring		other
+		MSRadioAccessCapabilityV     msRadioAccessCapabilityV
 	};
 
 	/* Table 11.2.16.2 Access Type */
@@ -510,6 +511,14 @@
 		uint16_t		RlcOctetCount
 	} with { variant "" };
 
+	const ChannelReqDescription c_ChReqDesc_default := {
+		peak_tput_class := 0,
+		priority := 0,
+		rlc_mode := RLC_MODE_UNACKNOWLEDGED,
+		llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK,
+		RlcOctetCount := 0
+	}
+
 	/* 12.8 Frequency Parameters */
 	type record FreqIndirect {
 		uint6_t			maio,
diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn
index 8f9f2a5..37956e8 100644
--- a/library/RLCMAC_Types.ttcn
+++ b/library/RLCMAC_Types.ttcn
@@ -13,6 +13,7 @@
 	import from General_Types all;
 	import from Osmocom_Types all;
 	import from GSM_Types all;
+	import from MobileL3_GMM_SM_Types all;
 	import from RLCMAC_CSN1_Types all;
 
 	/* TS 44.060 10.4.7 */
@@ -289,6 +290,43 @@
 		}
 	}
 
+	/* TS 44.016 sec 11.2.16 */
+	template RlcmacUlBlock ts_RLCMAC_PKT_RES_REQ(GprsTlli tlli,
+						     MSRadioAccessCapabilityV ms_rac,
+						     ChannelReqDescription ch_req_desc := c_ChReqDesc_default,
+						     RlcAccessType acc_type := RLC_ACC_TYPE_TWO_PHASE) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := MAC_PT_RLCMAC_NO_OPT,
+				spare := '00000'B,
+				retry := false
+			},
+			payload := {
+				msg_type := PACKET_RESOURCE_REQUEST,
+				u := {
+					resource_req := {
+						acc_type_presence := '1'B,
+						acc_type := acc_type,
+						id_type := '1'B,
+						id := { tlli := tlli },
+						ms_rac2_presence := '1'B,
+						ms_rac2 := { msRadioAccessCapabilityV := ms_rac },
+						ch_req_desc := ch_req_desc,
+						change_mark_presence := '0'B,
+						change_mark := omit,
+						C_val := '000000'B,
+						sign_var_presence := '0'B,
+						sign_var := omit,
+						I_levels := {
+							iNone, iNone, iNone, iNone,
+							iNone, iNone, iNone, iNone
+						}
+					}
+				}
+			}
+		}
+	}
+
 	/* Template for uplink Data block */
 	template RlcmacUlBlock t_RLCMAC_UL_DATA(template uint5_t tfi, template uint4_t cv, template uint7_t bsn,
 						template LlcBlocks blocks := {}, template boolean stall := false) := {
@@ -384,6 +422,31 @@
 		}
 	}
 
+	template RlcmacDlBlock tr_RLCMAC_UL_PACKET_ASS(template uint3_t usf := ?) := {
+		ctrl := {
+			mac_hdr := {
+				payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
+				rrbp:= ?,
+				rrbp_valid := ?,
+				usf := usf
+			},
+			opt := *,
+			payload := {
+				msg_type := PACKET_UL_ASSIGNMENT,
+				u := {
+					ul_assignment := {
+						page_mode := ?,
+						persistence_levels_present := ?,
+						persistence_levels := *,
+						identity := ?,
+						is_egprs := ?,	/* msg escape */
+						gprs := *
+					}
+				}
+			}
+		}
+	}
+
 	/* Receive Template for Uplink ACK/NACK */
 	template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi, template GprsTlli tlli := ?) := {
 		ctrl := {
diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn
index c800d43..16131f4 100644
--- a/pcu/PCU_Tests_RAW.ttcn
+++ b/pcu/PCU_Tests_RAW.ttcn
@@ -28,6 +28,7 @@
 import from RLCMAC_Types all;
 
 import from MobileL3_CommonIE_Types all;
+import from MobileL3_GMM_SM_Types all;
 import from L3_Templates all;
 
 import from NS_Types all;
@@ -818,7 +819,7 @@
 	}
 }
 
-private function f_rx_rlcmac_dl_block_exp_pkt_ass(out RlcmacDlBlock dl_block, out uint32_t poll_fn)
+private function f_rx_rlcmac_dl_block_exp_pkt_dl_ass(out RlcmacDlBlock dl_block, out uint32_t poll_fn)
 runs on RAW_PCU_Test_CT {
 	var uint32_t dl_fn;
 
@@ -831,6 +832,19 @@
 	poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp);
 }
 
+private function f_rx_rlcmac_dl_block_exp_pkt_ul_ass(out RlcmacDlBlock dl_block, out uint32_t poll_fn)
+runs on RAW_PCU_Test_CT {
+	var uint32_t dl_fn;
+
+	f_rx_rlcmac_dl_block(dl_block, dl_fn);
+	if (not match(dl_block, tr_RLCMAC_UL_PACKET_ASS())) {
+		setverdict(fail, "Failed to match Packet Uplink Assignment");
+		mtc.stop;
+	}
+
+	poll_fn := dl_fn + f_rrbp_fn_delay(dl_block.ctrl.mac_hdr.rrbp);
+}
+
 private function f_rx_rlcmac_dl_block_exp_pkt_pag_req(out RlcmacDlBlock dl_block)
 runs on RAW_PCU_Test_CT {
 	var uint32_t dl_fn;
@@ -1492,7 +1506,7 @@
 	   (T3192 in MS) was started and until it fires the MS will be abailable
 	   on PDCH in case new data arrives from SGSN. Let's verify it: */
 	BSSGP[0].send(ts_BSSGP_DL_UD(tlli, data));
-	f_rx_rlcmac_dl_block_exp_pkt_ass(dl_block, sched_fn);
+	f_rx_rlcmac_dl_block_exp_pkt_dl_ass(dl_block, sched_fn);
 	f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);
 
 	/* Now that we confirmed the new assignment in the dl-tbf, lets receive the data and ack it */
@@ -1566,6 +1580,120 @@
 	f_tx_rlcmac_ul_block(ts_RLCMAC_DL_ACK_NACK(dl_block.data.mac_hdr.hdr_ext.tfi, ack_nack_desc), 0, sched_fn);
 }
 
+
+template (value) AccessCapabilitiesStruct ts_AccesssCap := {
+	lengthIndicator := 0, /* overwritten */
+	accessCapabilities := {
+		rfPowerCapability := '001'B, /* FIXME */
+		presenceBitA5 := '0'B,
+		a5bits := omit,
+		esind := '1'B,
+		psbit := '0'B,
+		vgcs := '0'B,
+		vbs := '0'B,
+		presenceBitMultislot := '0'B,
+		multislotcap := omit,
+		accessCapAdditionsAfterRel97 := omit
+	},
+	spare_bits := omit
+}
+
+template (value) MSRACapabilityValuesRecord ts_RaCapRecEGPRS(BIT4 att := '0001'B /* E-GSM */, MultislotCap_GPRS mscap_gprs, MultislotCap_EGPRS mscap_egprs) := {
+	mSRACapabilityValues := {
+		mSRACapabilityValuesExclude1111 := {
+			accessTechnType := att, /* E-GSM */
+			accessCapabilities := {
+				lengthIndicator := 0, /* overwritten */
+				accessCapabilities := {
+					rfPowerCapability := '001'B, /* FIXME */
+					presenceBitA5 := '0'B,
+					a5bits := omit,
+					esind := '1'B,
+					psbit := '0'B,
+					vgcs := '0'B,
+					vbs := '0'B,
+					presenceBitMultislot := '1'B,
+					multislotcap := {
+						presenceBitHscsd := '0'B,
+						hscsdmultislotclass := omit,
+						presenceBitGprs := '1'B,
+						gprsmultislot := mscap_gprs,
+						presenceBitSms := '0'B,
+						multislotCap_SMS := omit,
+						multislotCapAdditionsAfterRel97 := {
+							presenceBitEcsdmulti := '0'B,
+							ecsdmultislotclass := omit,
+							presenceBitEgprsmulti := '1'B,
+							multislotCap_EGPRS := mscap_egprs,
+							presenceBitDtmGprsmulti := '0'B,
+							multislotCapdtmgprsmultislotsubclass := omit
+						}
+					},
+					accessCapAdditionsAfterRel97 := omit
+				},
+				spare_bits := omit
+			}
+		}
+	},
+	presenceBitMSRACap := '0'B
+};
+
+/* 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.
+ */
+testcase TC_mo_ping_pong_egprs() runs on RAW_PCU_Test_CT {
+	var GsmRrMessage rr_imm_ass;
+	var PacketUlAssign ul_tbf_ass;
+	var PacketDlAssign dl_tbf_ass;
+	var RlcmacDlBlock dl_block;
+	var PCUIF_Message pcu_msg;
+	var octetstring data := f_rnd_octstring(10);
+	var boolean ok;
+	var uint32_t sched_fn;
+	var OCT4 tlli := '00000001'O;
+	var AckNackDescription ack_nack_desc := valueof(t_AckNackDescription_init);
+	var MultislotCap_GPRS mscap_gprs := {
+		gprsmultislotclass := '00001'B,
+		gprsextendeddynalloccap := '0'B
+	} ;
+	var MultislotCap_EGPRS mscap_egprs := {
+		egprsmultislotclass := '00001'B,
+		egprsextendeddynalloccap := '0'B
+	} ;
+	var MSRadioAccessCapabilityV ms_racap := { valueof(ts_RaCapRecEGPRS('0001'B /* E-GSM */, mscap_gprs, mscap_egprs)) };
+
+	/* Initialize NS/BSSGP side */
+	f_init_bssgp();
+
+	/* Initialize the PCU interface abstraction */
+	f_init_raw(testcasename());
+
+	/* Establish BSSGP connection to the PCU */
+	f_bssgp_establish();
+	f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli);
+
+	/* Establish an Uplink TBF */
+	ok := f_establish_tbf(rr_imm_ass);
+	if (not ok) {
+		setverdict(fail, "Failed to establish TBF");
+		mtc.stop;
+	}
+	ok := f_imm_ass_verify_ul_tbf_ass(rr_imm_ass, ul_tbf_ass);
+	if (not ok) {
+		setverdict(fail, "Immediate Assignment not an Uplink TBF");
+		mtc.stop;
+	}
+
+	/* Send PACKET RESOURCE REQUEST to upgrade to EGPRS */
+	f_tx_rlcmac_ul_block(ts_RLCMAC_PKT_RES_REQ(tlli, ms_racap), 0);
+
+	f_rx_rlcmac_dl_block_exp_pkt_ul_ass(dl_block, sched_fn);
+	f_tx_rlcmac_ul_block(ts_RLCMAC_CTRL_ACK(tlli), 0, sched_fn);
+	////////////////////////
+
+	f_sleep(3.0);
+}
+
 /* Verify that if PCU doesn't get an ACK for first DL block after IMM ASS, it
  * will retry by retransmitting both the IMM ASS + DL block after poll (ack)
  * timeout occurs (specified by sent RRBP on DL block). */
@@ -1793,6 +1921,7 @@
 	execute( TC_t3169() );
 	execute( TC_t3193() );
 	execute( TC_mo_ping_pong() );
+	execute( TC_mo_ping_pong_egprs() );
 	execute( TC_imm_ass_dl_block_retrans() );
 	execute( TC_paging_cs_from_bts() );
 	execute (TC_paging_cs_from_sgsn_sign() );

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16677
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: I3b36d20b5350c8011fd5b4cd2bb2eadd08b74823
Gerrit-Change-Number: 16677
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/20191224/f5259279/attachment.htm>


More information about the gerrit-log mailing list