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.orgpespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18335 )
Change subject: Add initial support for Packet Uplink Ack/nack EGPRS Struct
......................................................................
Add initial support for Packet Uplink Ack/nack EGPRS Struct
Some stuff like EGPRS Ack/Nack description is still not implemented, but
it's enouh for now to be able to match against this kind of ACK blocks.
Change-Id: I8066fba0e71911f0c6344c1540a501f1853daa7f
---
M library/RLCMAC_CSN1_Templates.ttcn
M library/RLCMAC_CSN1_Types.ttcn
M library/RLCMAC_Templates.ttcn
M pcu/GPRS_Components.ttcn
4 files changed, 102 insertions(+), 21 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/35/18335/1
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index 772df13..eebda7f 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -217,4 +217,32 @@
multi_block_alloc := omit
};
+ template UlAckNackGprs tr_UlAckNackGprs(template GprsTlli tlli := *) := {
+ ch_coding_cmd := ?,
+ ack_nack_desc := ?,
+ cont_res_tlli_present := ?,
+ cont_res_tlli := tlli,
+ pkt_ta_present := ?,
+ pkt_ta := *,
+ pwr_ctrl_present := ?,
+ pwr_ctrl := *
+ };
+
+ template UlAckNackEgprs tr_UlAckNackEgprs(template GprsTlli tlli := *) := {
+ ch_coding_cmd := ?,
+ resegment := ?,
+ preemptive_tx := ?,
+ prr_retrans_req := ?,
+ arac_retrans_req := ?,
+ cont_res_tlli_present := ?,
+ cont_res_tlli := tlli,
+ tbf_est := ?,
+ pkt_ta_present := ?,
+ pkt_ta := *,
+ pkt_ext_ta_present := ?,
+ pkt_ext_ta := *,
+ pwr_ctrl_present := ?,
+ pwr_ctrl := *
+ };
+
} with { encode "RAW"; variant "FIELDORDER(msb)" variant "BYTEORDER(last)" };
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index d4c6efd..1f1fb0a 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -395,14 +395,44 @@
variant (pwr_ctrl) "PRESENCE(pwr_ctrl_present = '1'B)"
variant (cont_res_tlli) "BYTEORDER(first)"
};
+ type record UlAckNackEgprs {
+ EgprsChCodingCommand ch_coding_cmd,
+ BIT1 resegment,
+ BIT1 preemptive_tx,
+ BIT1 prr_retrans_req,
+ BIT1 arac_retrans_req,
+ BIT1 cont_res_tlli_present,
+ GprsTlli cont_res_tlli optional,
+ BIT1 tbf_est,
+ BIT1 pkt_ta_present,
+ PacketTimingAdvance pkt_ta optional,
+ BIT1 pkt_ext_ta_present,
+ BIT2 pkt_ext_ta optional,
+ BIT1 pwr_ctrl_present,
+ PowerControlParameters pwr_ctrl optional
+ /* TODO: TS 44.060 12.3.1 EGPRS Ack/Nack Description */
+ /* EgprsAckNackDescription ack_nack_desc, */
+ /* BIT1 not_used('0'B) */
+ /* TODO: Extension Bits, Rel5 ,... */
+ } with {
+ variant (cont_res_tlli) "PRESENCE(cont_res_tlli_present = '1'B)"
+ variant (pkt_ta) "PRESENCE(pkt_ta_present = '1'B)"
+ variant (pkt_ext_ta) "PRESENCE(pkt_ext_ta_present = '1'B)"
+ variant (pwr_ctrl) "PRESENCE(pwr_ctrl_present = '1'B)"
+ variant (cont_res_tlli) "BYTEORDER(first)"
+ };
type record PacketUlAckNack {
PageMode page_mode,
BIT2 msg_excape ('00'B),
uint5_t uplink_tfi,
- BIT1 is_egprs ('0'B), /* msg escape */
- UlAckNackGprs gprs optional
+ BIT1 is_egprs,
+ UlAckNackGprs gprs optional,
+ UlAckNackEgprs egprs optional
/* TODO: EGPRS */
- } with { variant (gprs) "PRESENCE(is_egprs = '0'B)" };
+ } with {
+ variant (gprs) "PRESENCE(is_egprs = '0'B)"
+ variant (egprs) "PRESENCE(is_egprs = '1'B)"
+ };
/* 11.2.8 Packet Downlink Dummy Control Block */
type record PacketDlDummy {
diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn
index 1774197..0ffa840 100644
--- a/library/RLCMAC_Templates.ttcn
+++ b/library/RLCMAC_Templates.ttcn
@@ -508,7 +508,7 @@
}
/* Receive Template for Uplink ACK/NACK */
- template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi, template GprsTlli tlli := ?) := {
+ template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK(template uint5_t ul_tfi) := {
ctrl := {
mac_hdr := {
payload_type := (MAC_PT_RLCMAC_NO_OPT, MAC_PT_RLCMAC_OPT),
@@ -524,22 +524,44 @@
page_mode := ?,
msg_excape := ?,
uplink_tfi := ul_tfi,
- is_egprs := '0'B,
- gprs := {
- ch_coding_cmd := ?,
- ack_nack_desc := ?,
- cont_res_tlli_present := ?,
- cont_res_tlli := tlli,
- pkt_ta_present := ?,
- pkt_ta := *,
- pwr_ctrl_present := ?,
- pwr_ctrl := *
- }
+ is_egprs := ?,
+ gprs := *,
+ egprs := *
}
}
}
}
- }
+ };
+
+ template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK_GPRS(template uint5_t ul_tfi, template UlAckNackGprs gprs := tr_UlAckNackGprs(*))
+ modifies tr_RLCMAC_UL_ACK_NACK := {
+ ctrl := {
+ payload := {
+ u := {
+ ul_ack_nack := {
+ is_egprs := '0'B,
+ gprs := gprs,
+ egprs := omit
+ }
+ }
+ }
+ }
+ };
+
+ template RlcmacDlBlock tr_RLCMAC_UL_ACK_NACK_EGPRS(template uint5_t ul_tfi, template UlAckNackEgprs egprs := tr_UlAckNackEgprs(*))
+ modifies tr_RLCMAC_UL_ACK_NACK := {
+ ctrl := {
+ payload := {
+ u := {
+ ul_ack_nack := {
+ is_egprs := '1'B,
+ gprs := omit,
+ egprs := egprs
+ }
+ }
+ }
+ }
+ };
template RlcmacDlBlock tr_RLCMAC_PACKET_PAG_REQ(template uint3_t usf := ?) := {
ctrl := {
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index d31f1f4..ae21001 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -414,12 +414,13 @@
var uint32_t dl_fn;
f_rx_rlcmac_dl_block(dl_block, dl_fn);
- if (not match(dl_block, tr_RLCMAC_UL_ACK_NACK(ul_tfi := ?, tlli := ?))) {
- setverdict(fail, "Failed to match Packet Uplink ACK / NACK");
- f_shutdown(__BFILE__, __LINE__);
+ if (match(dl_block, tr_RLCMAC_UL_ACK_NACK_GPRS(ul_tfi := ?)) or
+ match(dl_block, tr_RLCMAC_UL_ACK_NACK_EGPRS(ul_tfi := ?))) {
+ poll_fn := f_rrbp_ack_fn(dl_fn, dl_block.ctrl.mac_hdr.rrbp);
+ return;
}
-
- poll_fn := f_rrbp_ack_fn(dl_fn, dl_block.ctrl.mac_hdr.rrbp);
+ setverdict(fail, "Failed to match Packet Uplink ACK / NACK:", dl_block);
+ f_shutdown(__BFILE__, __LINE__);
}
function f_rx_rlcmac_dl_block_exp_dummy(out RlcmacDlBlock dl_block)
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18335
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: I8066fba0e71911f0c6344c1540a501f1853daa7f
Gerrit-Change-Number: 18335
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/20200516/0fca6c56/attachment.htm>