RLCMAC: Improve support of Pkt Ul AckNack messages
Change-Id: I8586248f435b1a70042ea25f633b75542bbc14aa
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index 9f53c3f..0d7de99 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -217,15 +217,34 @@
multi_block_alloc := omit
};
- template UlAckNackGprs tr_UlAckNackGprs(template GprsTlli tlli := *) := {
+ template AckNackDescription tr_AckNackDescription(template BIT1 final_ack := ?) := {
+ final_ack := final_ack,
+ starting_seq_nr := ?,
+ receive_block_bitmap := ?
+ };
+
+ template UlAckNackGprsAdditionsRel99 tr_UlAckNackGprsAdditionsRel99(template boolean tbf_est := ?) := {
+ ext_pkt_ta_present := ?,
+ ext_pkt_ta := *,
+ tbf_est := tbf_est
+ };
+
+ template UlAckNackGprs tr_UlAckNackGprs(template GprsTlli tlli := *,
+ template AckNackDescription acknack_desc := ?,
+ template UlAckNackGprsAdditionsRel99 rel99 := *) := {
ch_coding_cmd := ?,
- ack_nack_desc := ?,
+ ack_nack_desc := acknack_desc,
cont_res_tlli_present := ?,
cont_res_tlli := tlli,
pkt_ta_present := ?,
pkt_ta := *,
pwr_ctrl_present := ?,
- pwr_ctrl := *
+ pwr_ctrl := *,
+ extension_bits_present := ?,
+ extension_bits := *,
+ not_used := '0'B,
+ rel99_present := ?,
+ rel99 := rel99
};
template UlAckNackEgprs tr_UlAckNackEgprs(template GprsTlli tlli := *) := {
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index ee02a8a..20c2d81 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -416,6 +416,15 @@
variant (repeated_pageinfo) "PRESENCE(repeated_pageinfo_present = '1'B)"
};
+ /* 12.26 Extension Bits IE */
+ type record ExtensionBits {
+ uint6_t extension_length,
+ bitstring spare_bits
+ } with {
+ variant (extension_length) "LENGTHTO(spare_bits) - 1"
+ variant (extension_length) "UNIT(bits)"
+ };
+
/* 11.2.28 Uplink Ack/Nack */
type enumerated ChCodingCommand {
CH_CODING_CS1 ('00'B),
@@ -423,6 +432,15 @@
CH_CODING_CS3 ('10'B),
CH_CODING_CS4 ('11'B)
} with { variant "FIELDLENGTH(2)" };
+ type record UlAckNackGprsAdditionsRel99 {
+ BIT1 ext_pkt_ta_present,
+ BIT2 ext_pkt_ta optional,
+ boolean tbf_est
+ /* TODO: Rel5 ,... */
+ } with {
+ variant (ext_pkt_ta) "PRESENCE(ext_pkt_ta_present = '1'B)"
+ variant (tbf_est) "FIELDLENGTH(1)"
+ };
type record UlAckNackGprs {
ChCodingCommand ch_coding_cmd,
AckNackDescription ack_nack_desc,
@@ -431,12 +449,18 @@
BIT1 pkt_ta_present,
PacketTimingAdvance pkt_ta optional,
BIT1 pwr_ctrl_present,
- PowerControlParameters pwr_ctrl optional
- /* TODO: Extension Bits, Rel5 ,... */
+ PowerControlParameters pwr_ctrl optional,
+ BIT1 extension_bits_present,
+ ExtensionBits extension_bits optional,
+ BIT1 not_used ('0'B),
+ BIT1 rel99_present,
+ UlAckNackGprsAdditionsRel99 rel99 optional
} with {
variant (cont_res_tlli) "PRESENCE(cont_res_tlli_present = '1'B)"
variant (pkt_ta) "PRESENCE(pkt_ta_present = '1'B)"
variant (pwr_ctrl) "PRESENCE(pwr_ctrl_present = '1'B)"
+ variant (extension_bits) "PRESENCE(extension_bits_present = '1'B)"
+ variant (rel99) "PRESENCE(rel99_present = '1'B)"
variant (cont_res_tlli) "BYTEORDER(first)"
};
type record UlAckNackEgprs {