<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21125">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">RLCMAC: Implement type+template for EGPRS Dl Pkt ACK/NACK<br><br>Change-Id: I0d6555f8644e39da6124be2e861d57fda3b3d8a1<br>---<br>M library/RLCMAC_CSN1_Templates.ttcn<br>M library/RLCMAC_CSN1_Types.ttcn<br>M library/RLCMAC_Templates.ttcn<br>3 files changed, 111 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn</span><br><span>index 727d4b8..64c709a 100644</span><br><span>--- a/library/RLCMAC_CSN1_Templates.ttcn</span><br><span>+++ b/library/RLCMAC_CSN1_Templates.ttcn</span><br><span>@@ -213,4 +213,10 @@</span><br><span>              pwr_ctrl := *</span><br><span>        };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        template EgprsAckNackDescriptionIE ts_EgprsAckNackDescriptionIE(template EgprsAckNackDescription andesc) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         len_present := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          len := 0, /* Overwritten by RAW encoder */</span><br><span style="color: hsl(120, 100%, 40%);">+            acknack_desc := andesc</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> } with { encode "RAW"; variant "FIELDORDER(msb)" variant "BYTEORDER(last)" };</span><br><span>diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn</span><br><span>index 1ffb85b..14570bf 100644</span><br><span>--- a/library/RLCMAC_CSN1_Types.ttcn</span><br><span>+++ b/library/RLCMAC_CSN1_Types.ttcn</span><br><span>@@ -617,7 +617,7 @@</span><br><span>                with { extension "prototype(convert) decode(RAW)" };</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* 11.2.6 Packet Downlikn Ack/Nack */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 11.2.6 Packet Downlink Ack/Nack */</span><br><span>        type record ILevel {</span><br><span>                 BIT1    presence,</span><br><span>            uint4_t i_level optional</span><br><span>@@ -635,7 +635,60 @@</span><br><span>              BIT1                    chreq_desc_presence,</span><br><span>                 ChannelReqDescription   chreq_desc optional,</span><br><span>                 ChannelQualityReport    ch_qual_rep</span><br><span style="color: hsl(120, 100%, 40%);">+   } with { variant (chreq_desc) "PRESENCE(chreq_desc_presence = '1'B)" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* 11.2.6a Egprs Packet Downlink Ack/Nack */</span><br><span style="color: hsl(120, 100%, 40%);">+  type record EgprsBEPLinkQualityMeasurements {</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT1    gmsk_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+                BIT5    gmsk_mean_bep optional,</span><br><span style="color: hsl(120, 100%, 40%);">+               BIT3    gmsk_cv_bep optional,</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT1    psk8_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+                BIT5    psk8_mean_bep optional,</span><br><span style="color: hsl(120, 100%, 40%);">+               BIT3    psk8_cv_bep optional</span><br><span style="color: hsl(120, 100%, 40%);">+  } with { variant (gmsk_mean_bep) "PRESENCE(gmsk_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+            variant (gmsk_cv_bep) "PRESENCE(gmsk_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+              variant (psk8_mean_bep) "PRESENCE(psk8_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+            variant (psk8_cv_bep) "PRESENCE(psk8_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+     };</span><br><span style="color: hsl(120, 100%, 40%);">+    /* 12.5.4 EGPRS Timeslot Link Quality Measurements IE */</span><br><span style="color: hsl(120, 100%, 40%);">+      type record BEPMeas {</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT1    presence,</span><br><span style="color: hsl(120, 100%, 40%);">+             BIT1    is_8psk optional,</span><br><span style="color: hsl(120, 100%, 40%);">+             uint4_t bep_meas optional</span><br><span style="color: hsl(120, 100%, 40%);">+     } with { variant (is_8psk) "PRESENCE(presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+               variant (bep_meas) "PRESENCE(presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+     };</span><br><span style="color: hsl(120, 100%, 40%);">+    type record length(8) of BEPMeas BEPMeasLi;</span><br><span style="color: hsl(120, 100%, 40%);">+   type record EgprsTimeslotLinkQualityMeasurements {</span><br><span style="color: hsl(120, 100%, 40%);">+            BIT1    bep_measurements_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+            BEPMeasLi bep_meas optional,</span><br><span style="color: hsl(120, 100%, 40%);">+          BIT1    i_measurements_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+              ILevels i_meas optional</span><br><span style="color: hsl(120, 100%, 40%);">+       } with { variant (bep_meas) "PRESENCE(bep_measurements_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+             variant (i_meas) "PRESENCE(i_measurements_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+        };</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Table 12.5.1.1 : EGPRS Channel Quality Report Information elements */</span><br><span style="color: hsl(120, 100%, 40%);">+      type record EgprsChannelQualityReport {</span><br><span style="color: hsl(120, 100%, 40%);">+               EgprsBEPLinkQualityMeasurements bep_link_qual_meas,</span><br><span style="color: hsl(120, 100%, 40%);">+           uint6_t                 c_value,</span><br><span style="color: hsl(120, 100%, 40%);">+              EgprsTimeslotLinkQualityMeasurements ts_link_qual_meas</span><br><span>       } with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+      type record EgprsPacketDlAckNack {</span><br><span style="color: hsl(120, 100%, 40%);">+            uint5_t                         dl_tfi,</span><br><span style="color: hsl(120, 100%, 40%);">+               BIT1                            ms_oom,</span><br><span style="color: hsl(120, 100%, 40%);">+               BIT1                            egprs_ch_qual_rep_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+           EgprsChannelQualityReport       egprs_ch_qual_rep optional,</span><br><span style="color: hsl(120, 100%, 40%);">+           BIT1                            chreq_desc_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+          ChannelReqDescription           chreq_desc optional,</span><br><span style="color: hsl(120, 100%, 40%);">+          BIT1                            pfi_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT7                            pfi optional,</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT1                            epdan_presence('0'B),</span><br><span style="color: hsl(120, 100%, 40%);">+         /* TODO: Implement EPD A/N */</span><br><span style="color: hsl(120, 100%, 40%);">+         EgprsAckNackDescriptionIE ack_nack_desc_ie</span><br><span style="color: hsl(120, 100%, 40%);">+    } with { variant (chreq_desc) "PRESENCE(chreq_desc_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+                 variant (egprs_ch_qual_rep) "PRESENCE(egprs_ch_qual_rep_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+           variant (pfi) "PRESENCE(pfi_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+      };</span><br><span> </span><br><span>       /* 11.2.2 Packet Control Acknowledgement */</span><br><span>  type enumerated CtrlAck {</span><br><span>@@ -706,6 +759,7 @@</span><br><span>      type union RlcmacUlCtrlUnion {</span><br><span>               PacketCtrlAck           ctrl_ack,</span><br><span>            PacketDlAckNack         dl_ack_nack,</span><br><span style="color: hsl(120, 100%, 40%);">+          EgprsPacketDlAckNack    dl_ack_nack_egprs,</span><br><span>           PacketUlDummy           ul_dummy,</span><br><span>            PacketResourceReq       resource_req,</span><br><span>                octetstring             other</span><br><span>@@ -717,6 +771,7 @@</span><br><span>  } with {</span><br><span>             variant (u) "CROSSTAG(ctrl_ack,            msg_type = PACKET_CONTROL_ACK;</span><br><span>                                     dl_ack_nack,      msg_type = PACKET_DL_ACK_NACK;</span><br><span style="color: hsl(120, 100%, 40%);">+                                      dl_ack_nack_egprs, msg_type = PACKET_EGPRS_DL_ACK_NACK;</span><br><span>                                      ul_dummy,         msg_type = PACKET_UL_DUMMY_CTRL;</span><br><span>                                   resource_req,     msg_type = PACKET_RESOURCE_REQUEST;</span><br><span>                                other,            OTHERWISE</span><br><span>@@ -737,6 +792,27 @@</span><br><span>             ReceivedBlockBitmap     receive_block_bitmap</span><br><span>         } with { variant "" };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  /* 12.3.1 Egprs Ack/Nack Description */</span><br><span style="color: hsl(120, 100%, 40%);">+       type bitstring UncompressedReceivedBlockBitmap length(64) with { variant "BYTEORDER(last)" };</span><br><span style="color: hsl(120, 100%, 40%);">+       type record EgprsAckNackDescription {</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT1                    final_ack,</span><br><span style="color: hsl(120, 100%, 40%);">+            BIT1                    begin_window,</span><br><span style="color: hsl(120, 100%, 40%);">+         BIT1                    end_window,</span><br><span style="color: hsl(120, 100%, 40%);">+           uint11_t                starting_seq_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+              BIT1                    compressed,</span><br><span style="color: hsl(120, 100%, 40%);">+           /* TODO: CompressedReceivedBlockBitmap  urbb optional, */</span><br><span style="color: hsl(120, 100%, 40%);">+             UncompressedReceivedBlockBitmap urbb optional</span><br><span style="color: hsl(120, 100%, 40%);">+ } with {  variant (urbb) "PRESENCE(compressed = '0'B)" };</span><br><span style="color: hsl(120, 100%, 40%);">+   type record EgprsAckNackDescriptionIE {</span><br><span style="color: hsl(120, 100%, 40%);">+               BIT1                    len_present,</span><br><span style="color: hsl(120, 100%, 40%);">+          uint8_t                 len optional,</span><br><span style="color: hsl(120, 100%, 40%);">+         EgprsAckNackDescription acknack_desc</span><br><span style="color: hsl(120, 100%, 40%);">+  } with { variant (len) "PRESENCE(len_present = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+                variant (len) "LENGTHTO(acknack_desc)"</span><br><span style="color: hsl(120, 100%, 40%);">+              variant (len) "UNIT(bits)"</span><br><span style="color: hsl(120, 100%, 40%);">+ };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       /* 12.7 Channel Request Description */</span><br><span>       type enumerated RlcMode {</span><br><span>            RLC_MODE_ACKNOWLEDGED   (0),</span><br><span>diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn</span><br><span>index f016c4d..e6f982f 100644</span><br><span>--- a/library/RLCMAC_Templates.ttcn</span><br><span>+++ b/library/RLCMAC_Templates.ttcn</span><br><span>@@ -401,6 +401,34 @@</span><br><span>                 }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Send Template for Egprs Downlink ACK/NACK */</span><br><span style="color: hsl(120, 100%, 40%);">+       template RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK_EGPRS(template uint5_t tfi, EgprsAckNackDescription andesc, boolean retry := false) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         ctrl := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     mac_hdr := {</span><br><span style="color: hsl(120, 100%, 40%);">+                          payload_type := MAC_PT_RLCMAC_NO_OPT,</span><br><span style="color: hsl(120, 100%, 40%);">+                         spare := '00000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                            retry := retry</span><br><span style="color: hsl(120, 100%, 40%);">+                        },</span><br><span style="color: hsl(120, 100%, 40%);">+                    payload := {</span><br><span style="color: hsl(120, 100%, 40%);">+                          msg_type := PACKET_EGPRS_DL_ACK_NACK,</span><br><span style="color: hsl(120, 100%, 40%);">+                         u := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                        dl_ack_nack_egprs := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                dl_tfi := tfi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                ms_oom := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               egprs_ch_qual_rep_presence := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           egprs_ch_qual_rep := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            chreq_desc_presence := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          chreq_desc := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           pfi_presence := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         pfi := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          epdan_presence := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               ack_nack_desc_ie := ts_EgprsAckNackDescriptionIE(andesc)</span><br><span style="color: hsl(120, 100%, 40%);">+                                      }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* Template for uplink Data block */</span><br><span>         template RlcmacUlBlock t_RLCMAC_UL_DATA(template CodingScheme cs, template uint5_t tfi,</span><br><span>                                              template uint4_t cv, template uint7_t bsn,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21125">change 21125</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21125"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I0d6555f8644e39da6124be2e861d57fda3b3d8a1 </div>
<div style="display:none"> Gerrit-Change-Number: 21125 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>