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/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15526
Change subject: WIP: PCU_Tests_RAW.ttcn: introduce test case for TBF Timing Advance
......................................................................
WIP: PCU_Tests_RAW.ttcn: introduce test case for TBF Timing Advance
Change-Id: Ia78d93e43a3c41b0b30e70df20a2da31077fd05f
---
M pcu/PCU_Tests_RAW.ttcn
1 file changed, 93 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/26/15526/1
diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn
index 1312a2f..fedb604 100644
--- a/pcu/PCU_Tests_RAW.ttcn
+++ b/pcu/PCU_Tests_RAW.ttcn
@@ -7,6 +7,7 @@
those NS and BSSGP implementations on the BSS (PCU) side. */
/* (C) 2018-2019 Harald Welte <laforge at gnumonks.org>
+ * (C) 2019 Vadim Yanitskiy <axilirator at gmail.com>
* All rights reserved.
*
* Released under the terms of GNU General Public License, Version 2 or
@@ -20,6 +21,9 @@
import from GSM_Types all;
import from GSM_RR_Types all;
+import from RLCMAC_CSN1_Types all;
+import from RLCMAC_Types all;
+
import from NS_Types all;
import from BSSGP_Types all;
import from Osmocom_Gb_Types all;
@@ -535,7 +539,7 @@
* at some point the PCU will fail to allocate a new TBF. */
for (var integer ta := 0; ta < 64; ta := ta + 16) {
/* Send an Access Burst (8-bit) on TS0.
- * FIXME: properly encode RA (see 3GPP TS 04.08, table 9.9),
+ * FIXME: properly encode RA (see 3GPP TS 04.08, table 9.9 and TS 24.060, table 11.2.5.2),
* TODO: ask the BTS component to give us the current TDMA fn */
log("Sending RACH.ind with TA=", ta);
BTS.send(ts_PCUIF_RACH_IND(bts_nr := 0, ra := oct2int('3A'O), is_11bit := 0,
@@ -574,6 +578,93 @@
}
}
+testcase TC_ta_tbf_tuwat() runs on RAW_PCU_Test_CT {
+ var PacketUlAssign ul_tbf_ass;
+ var PCUIF_Message pcu_msg;
+ var GsmRrMessage rr_msg;
+ timer T := 2.0;
+
+ /* Initialize the PCU interface abstraction */
+ f_init_raw(testcasename());
+
+ /* Ask for an UL TBF by sending an Access Burst (8-bit) on TS0.
+ * TODO: ask the BTS component to give us the current TDMA fn */
+ BTS.send(ts_PCUIF_RACH_IND(bts_nr := 0, ra := oct2int('3A'O), is_11bit := 0,
+ burst_type := BURST_TYPE_0,
+ fn := 1337, arfcn := 871));
+
+ /* Expect Immediate (TBF) Assignment on TS0/AGCH */
+ T.start;
+ alt {
+ [] BTS.receive(tr_PCUIF_DATA_REQ(bts_nr := 0, trx_nr := 0, ts_nr := 0,
+ sapi := PCU_IF_SAPI_AGCH, data := ?)) -> value pcu_msg {
+ /* FIXME: we cannot use decmatch here because the data comes with padding */
+ rr_msg := dec_GsmRrMessage(pcu_msg.u.data_req.data);
+ log("Rx DATA.req from OsmoPCU: ", rr_msg);
+ T.stop;
+
+ /* Make sure the received data is an UL TBF Assignment */
+ if (match(rr_msg, tr_IMM_TBF_ASS(dl := false, ra := oct2int('3A'O),
+ rest := tr_IaRestOctets_ULAss(?)))) {
+ ul_tbf_ass := rr_msg.payload.imm_ass.rest_octets.hh.pa.uldl.ass.ul;
+ log("Rx Immediate Assignment (UL TBF): ", ul_tbf_ass);
+ setverdict(pass);
+ } else {
+ setverdict(fail, "Failed to match Immediate (TBF) Assignment");
+ mtc.stop;
+ }
+ }
+ [] BTS.receive { repeat; }
+ [] T.timeout {
+ setverdict(fail, "Timeout waiting for Immediate Assignment");
+ mtc.stop;
+ }
+ }
+
+ /* TODO: check if we got single or dynamic assignment */
+ var octetstring pkt_res_req_enc;
+
+ var template (value) RlcmacUlBlock ul_data := t_RLCMAC_UL_DATA(
+ tfi := ul_tbf_ass.dynamic.tfi_assignment,
+ cv := 15, /* 15 UL blocks to be sent (to be overridden in loop) */
+ bsn := 0, /* TODO: what should be here? */
+ blocks := { /* To be generated in loop */ }
+ );
+
+ /* HACK: patch missing TLLI */
+ ul_data.data.tlli := '00000001'O;
+
+ for (var integer i := 0; i < 16; i := i + 1) {
+ /* Prepare a new UL block (CV, payload) */
+ ul_data.data.mac_hdr.countdown := (15 - i);
+ ul_data.data.blocks := { valueof(t_RLCMAC_LLCBLOCK(f_rnd_octstring(23))) };
+
+ /* Encode the payload of DATA.ind */
+ pkt_res_req_enc := enc_RlcmacUlBlock(valueof(ul_data));
+ pkt_res_req_enc := f_pad_oct(pkt_res_req_enc, 34, '00'O); /* CS-2 */
+
+ /* TODO: derive block number from the current TDMA frame number */
+ BTS.send(ts_PCUIF_DATA_IND(bts_nr := 0, trx_nr := 0, ts_nr := 7,
+ block_nr := i, sapi := PCU_IF_SAPI_PDTCH,
+ data := pkt_res_req_enc,
+ fn := 1337 + i * 4,
+ arfcn := 871));
+ /* TODO: implement block start notifications from the BTS component */
+ f_sleep(4.615 * 4.0 / 1000.0); /* ... wait ~4 frames for now */
+
+ /* Send RTS.req, expect UL ACK from the PCU */
+ BTS.send(ts_PCUIF_RTS_REQ(bts_nr := 0, trx_nr := 0, ts_nr := 7,
+ sapi := PCU_IF_SAPI_PDTCH,
+ fn := 1337 + i * 4, arfcn := 871,
+ block_nr := i));
+ BTS.receive(tr_PCUIF_DATA_REQ(bts_nr := 0, trx_nr := 0, ts_nr := 7,
+ block_nr := i, fn := 1337 + i * 4,
+ sapi := PCU_IF_SAPI_PDTCH)) -> value pcu_msg;
+
+ /* TODO: Packet Uplink ACK / NACK may contain optional Timing Advance field */
+ }
+}
+
control {
execute( TC_ns_reset() );
@@ -587,6 +678,7 @@
execute( TC_pcuif_suspend() );
execute( TC_ta_init_prach() );
+ execute( TC_ta_tbf_tuwat() );
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15526
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: Ia78d93e43a3c41b0b30e70df20a2da31077fd05f
Gerrit-Change-Number: 15526
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <axilirator at gmail.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190914/631b872e/attachment.htm>