<p>fixeria <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/22867">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  osmith: Looks good to me, but someone else must approve
  pespin: Looks good to me, but someone else must approve
  fixeria: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">TRXD: add documentation for TRXDv2 protocol<br><br>Change-Id: I03b2beeb535848b31fd629ba3cd330b43072c08b<br>Related: SYS#4895, OS#4941, OS#4006<br>---<br>M common/chapters/trx_if.adoc<br>1 file changed, 257 insertions(+), 8 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/common/chapters/trx_if.adoc b/common/chapters/trx_if.adoc</span><br><span>index fb9e99f..f4884f0 100644</span><br><span>--- a/common/chapters/trx_if.adoc</span><br><span>+++ b/common/chapters/trx_if.adoc</span><br><span>@@ -22,6 +22,10 @@</span><br><span> </span><br><span> The corresponding interface for every socket is at `P+100` on the BTS side.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: Starting from TRXDv2, it's possible to use only one socket for all</span><br><span style="color: hsl(120, 100%, 40%);">+channels.  In this case, the global `TRXD` interface for all channels shall</span><br><span style="color: hsl(120, 100%, 40%);">+be established on port `P=B+1`.  See <<trx_if_pdu_batching>> for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> [[trx_if_clock_ind]]</span><br><span> === Indications on the Master Clock Interface</span><br><span> </span><br><span>@@ -358,8 +362,8 @@</span><br><span> </span><br><span> === TRXD protocol</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-PDUs on the data interface carry one radio burst per one UDP packet.</span><br><span style="color: hsl(0, 100%, 40%);">-Two kinds of TRXD PDU exist:</span><br><span style="color: hsl(120, 100%, 40%);">+Messages on the data interface carry one or optionally multiple radio bursts</span><br><span style="color: hsl(120, 100%, 40%);">+(see <<trx_if_pdu_batching>>) per one UDP datagram.  Two kinds of TRXD PDU exist:</span><br><span> </span><br><span> * `TRX -> L1` (from transceiver to the L1): Uplink messages received from the MS,</span><br><span> * `L1 -> TRX` (from the L1 to transceiver): Downlink messages sent to the MS.</span><br><span>@@ -390,12 +394,20 @@</span><br><span> ** New field: MTS (Modulation and Training Sequence);</span><br><span> ** New field: C/I (Carrier-to-interface) ratio;</span><br><span> ** Downlink messages mostly unchanged.</span><br><span style="color: hsl(120, 100%, 40%);">+* TRXDv2 (proposed in January 2021):</span><br><span style="color: hsl(120, 100%, 40%);">+** Introduced the concept of burst batching (many bursts in one message);</span><br><span style="color: hsl(120, 100%, 40%);">+** Changed the field ordering (facilitating aligned access);</span><br><span style="color: hsl(120, 100%, 40%);">+** New field: batching indicator;</span><br><span style="color: hsl(120, 100%, 40%);">+** New field: TRX number;</span><br><span style="color: hsl(120, 100%, 40%);">+** New field: SCPIR for VAMOS.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== Uplink Data Burst</span><br><span style="color: hsl(120, 100%, 40%);">+==== Uplink PDU format</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-Uplink data burst message structure differs from version 0 to 1. Basically,</span><br><span style="color: hsl(0, 100%, 40%);">-version 1 contains an extended header with regards to version 0, and the final</span><br><span style="color: hsl(0, 100%, 40%);">-padding existence is completely dropped.</span><br><span style="color: hsl(120, 100%, 40%);">+An Uplink TRXD PDU contains a demodulated burst with the associated measurements</span><br><span style="color: hsl(120, 100%, 40%);">+(signal strength, timing delay, etc.) and TDMA frame/timeslot number.  Starting</span><br><span style="color: hsl(120, 100%, 40%);">+from TRXDv1, a PDU may contain no payload, indicating the upper layers that the</span><br><span style="color: hsl(120, 100%, 40%);">+transceiver was not able to demodulate a burst (e.g. due to bad signal quality</span><br><span style="color: hsl(120, 100%, 40%);">+or the lack of signal during IDLE TDMA frames).</span><br><span> </span><br><span> .TRXDv0 Uplink data burst message structure</span><br><span> [packetdiag]</span><br><span>@@ -452,6 +464,48 @@</span><br><span> }</span><br><span> ----</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+.TRXDv2 Uplink message structure</span><br><span style="color: hsl(120, 100%, 40%);">+[packetdiag]</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%);">+        colwidth = 32</span><br><span style="color: hsl(120, 100%, 40%);">+ node_height = 40</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    0-3:    VER(2)</span><br><span style="color: hsl(120, 100%, 40%);">+        4:      RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   5-7:    TN</span><br><span style="color: hsl(120, 100%, 40%);">+    8:      BATCH</span><br><span style="color: hsl(120, 100%, 40%);">+ 9:      RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   10-15:  TRXN</span><br><span style="color: hsl(120, 100%, 40%);">+  16-23:  MTS</span><br><span style="color: hsl(120, 100%, 40%);">+   24-31:  RSSI</span><br><span style="color: hsl(120, 100%, 40%);">+  32-47:  TOA256</span><br><span style="color: hsl(120, 100%, 40%);">+        48-63:  C/I</span><br><span style="color: hsl(120, 100%, 40%);">+   64-95:  FN</span><br><span style="color: hsl(120, 100%, 40%);">+    96-127: Soft-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 style="color: hsl(120, 100%, 40%);">+.TRXDv2 Uplink message structure (batched part)</span><br><span style="color: hsl(120, 100%, 40%);">+[packetdiag]</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%);">+  colwidth = 32</span><br><span style="color: hsl(120, 100%, 40%);">+ node_height = 40</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    0-4:    RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   5-7:    TN</span><br><span style="color: hsl(120, 100%, 40%);">+    8:      BATCH</span><br><span style="color: hsl(120, 100%, 40%);">+ 9:      RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   10-15:  TRXN</span><br><span style="color: hsl(120, 100%, 40%);">+  16-23:  MTS</span><br><span style="color: hsl(120, 100%, 40%);">+   24-31:  RSSI</span><br><span style="color: hsl(120, 100%, 40%);">+  32-47:  TOA256</span><br><span style="color: hsl(120, 100%, 40%);">+        48-63:  C/I</span><br><span style="color: hsl(120, 100%, 40%);">+   64-95:  Soft-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> VER: 4 bits::</span><br><span> TRXD header version, common for both `TRX -> L1` and `L1 -> TRX` directions.</span><br><span> </span><br><span>@@ -462,6 +516,12 @@</span><br><span> Reserved for Future Use.  The sending side of the PDU shall set all bits to</span><br><span> {bit-zero};  the receiving side shall ignore `RFU` fields.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+BATCH: 1 bit::</span><br><span style="color: hsl(120, 100%, 40%);">+This bit indicates whether a batched PDU follows (see <<trx_if_pdu_batching>>).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TRXN: 6 bits::</span><br><span style="color: hsl(120, 100%, 40%);">+The transceiver (PHY channel) number this PDU is coming from.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> FN: 32 bits (4 bytes)::</span><br><span> GSM frame number, big endian.</span><br><span> </span><br><span>@@ -562,7 +622,7 @@</span><br><span> </span><br><span> ==== Downlink Data Burst</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-.TRXD Downlink data burst message structure</span><br><span style="color: hsl(120, 100%, 40%);">+.TRXDv0 and TRXDv1 Downlink data burst message structure</span><br><span> [packetdiag]</span><br><span> ----</span><br><span> {</span><br><span>@@ -578,6 +638,48 @@</span><br><span> }</span><br><span> ----</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+.TRXDv2 Downlink data burst message structure</span><br><span style="color: hsl(120, 100%, 40%);">+[packetdiag]</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%);">+     colwidth = 32</span><br><span style="color: hsl(120, 100%, 40%);">+ node_height = 40</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    0-3:    VER(2)</span><br><span style="color: hsl(120, 100%, 40%);">+        4:      RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   5-7:    TN</span><br><span style="color: hsl(120, 100%, 40%);">+    8:      BATCH</span><br><span style="color: hsl(120, 100%, 40%);">+ 9:      RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   10-15:  TRXN</span><br><span style="color: hsl(120, 100%, 40%);">+  16-23:  MTS</span><br><span style="color: hsl(120, 100%, 40%);">+   24-31:  PWR</span><br><span style="color: hsl(120, 100%, 40%);">+   32-39:  SCPIR</span><br><span style="color: hsl(120, 100%, 40%);">+ 40-63:  RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   64-95:  FN</span><br><span style="color: hsl(120, 100%, 40%);">+    96-127: Hard-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 style="color: hsl(120, 100%, 40%);">+.TRXDv2 Downlink PDU structure (batched part)</span><br><span style="color: hsl(120, 100%, 40%);">+[packetdiag]</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%);">+    colwidth = 32</span><br><span style="color: hsl(120, 100%, 40%);">+ node_height = 40</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    0-4:    RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   5-7:    TN</span><br><span style="color: hsl(120, 100%, 40%);">+    8:      BATCH</span><br><span style="color: hsl(120, 100%, 40%);">+ 9:      RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   10-15:  TRXN</span><br><span style="color: hsl(120, 100%, 40%);">+  16-23:  MTS</span><br><span style="color: hsl(120, 100%, 40%);">+   24-31:  PWR</span><br><span style="color: hsl(120, 100%, 40%);">+   32-39:  SCPIR</span><br><span style="color: hsl(120, 100%, 40%);">+ 40-63:  RFU</span><br><span style="color: hsl(120, 100%, 40%);">+   64-95:  Hard-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> VER: 4 bits::</span><br><span> TRXD header version, common for both `TRX -> L1` and `L1 -> TRX` directions.</span><br><span> </span><br><span>@@ -585,7 +687,18 @@</span><br><span> Timeslot number.</span><br><span> </span><br><span> RFU: variable bit-length::</span><br><span style="color: hsl(0, 100%, 40%);">-Reserved for Future Use, all bits shall be set to low (`0`).</span><br><span style="color: hsl(120, 100%, 40%);">+Reserved for Future Use.  The sending side of the PDU shall set all bits to</span><br><span style="color: hsl(120, 100%, 40%);">+{bit-zero};  the receiving side shall ignore `RFU` fields.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BATCH: 1 bit::</span><br><span style="color: hsl(120, 100%, 40%);">+This bit indicates whether a batched PDU follows (see <<trx_if_pdu_batching>>).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TRXN: 6 bits::</span><br><span style="color: hsl(120, 100%, 40%);">+The transceiver (PHY channel) number this PDU is addressed to.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+MTS: 8 bits (1 byte)::</span><br><span style="color: hsl(120, 100%, 40%);">+Contains the Modulation and Training Sequence information. See <<coding-mts>></span><br><span style="color: hsl(120, 100%, 40%);">+for more information on the encoding.</span><br><span> </span><br><span> FN: 32 bits (4 bytes)::</span><br><span> GSM frame number, big endian.</span><br><span>@@ -595,6 +708,142 @@</span><br><span> in dB.  The absolute value is set on the control interface, so the resulting</span><br><span> power is calculated as follows: `full_scale - (absolute_red + relative_red)`.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+SCPIR: 8 bits (1 byte)::</span><br><span style="color: hsl(120, 100%, 40%);">+SCPIR (Subchannel Power Imbalance Ratio) - the ratio of power between Q and I</span><br><span style="color: hsl(120, 100%, 40%);">+channels for a VAMOS pair.  This field shall be present when `MTC` field</span><br><span style="color: hsl(120, 100%, 40%);">+indicates the use of `AQPSK` modulation.  Otherwise, all bits shall be set</span><br><span style="color: hsl(120, 100%, 40%);">+to {bit-zero}.  The value is a signed integer with a valid range: -10..10 dB.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Hard-bits: 148 x N bytes (variable length, N defined by modulation type)::</span><br><span> Contains the downlink burst. Each hard-bit (1 or 0) of the burst is represented</span><br><span> using one byte (0x01 or 0x00 respectively).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[trx_if_pdu_batching]]</span><br><span style="color: hsl(120, 100%, 40%);">+==== PDU batching</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Starting from TRXDv2, it's possible to combine several PDUs into a single</span><br><span style="color: hsl(120, 100%, 40%);">+datagram - this is called _PDU batching_.  The purpose of _PDU batching_</span><br><span style="color: hsl(120, 100%, 40%);">+is to reduce socket load and eliminate possible PDU reordering, especially</span><br><span style="color: hsl(120, 100%, 40%);">+in a multi-TRX setup.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+All _batched PDUs_ in a datagram must belong to the same TDMA frame number</span><br><span style="color: hsl(120, 100%, 40%);">+indicated in the first part.  The ordering of PDUs in a datagram may be</span><br><span style="color: hsl(120, 100%, 40%);">+different from the examples below, however it's recommended to batch PDUs</span><br><span style="color: hsl(120, 100%, 40%);">+in ascending order determined by TDMA timeslot number and/or `TRXN`.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The following PDU combinations in a datagram are possible:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* `a)` one datagram contains PDUs with the same TDMA timeslot number for all</span><br><span style="color: hsl(120, 100%, 40%);">+transceivers (total N PDUs per a TDMA timeslot);</span><br><span style="color: hsl(120, 100%, 40%);">+* one datagram contains complete TDMA frame with PDUs for all 8 timeslots:</span><br><span style="color: hsl(120, 100%, 40%);">+** `b)` either for a single transceiver (total 8 PDUs per a TDMA frame),</span><br><span style="color: hsl(120, 100%, 40%);">+** `c)` or for all transceivers (total 8 x N PDUs per a TDMA frame).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+None of these combinations are mandatory to support.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: Automatic negotiation of the batching algorithm(s) is not yet specified.</span><br><span style="color: hsl(120, 100%, 40%);">+Currently both sides need to be manually configured to use _PDU batching_.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: Size of the biggest possible TRXD datagram should be less than the</span><br><span style="color: hsl(120, 100%, 40%);">+_MTU (Maximum Transmission Unit)_ of the network interface connecting</span><br><span style="color: hsl(120, 100%, 40%);">+both BTS and the transceiver.  Otherwise the datagram is split across</span><br><span style="color: hsl(120, 100%, 40%);">+multiple IP packets, which may negatively affect performance.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: datagram structure for combination a)</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%);">+| TRXN=0 | TDMA FN=F TN=T | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=1 | TDMA FN=F TN=T | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=2 | TDMA FN=F TN=T | BATCH=1 | Hard-/Soft-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 style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=T | BATCH=0 | Hard-/Soft-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 style="color: hsl(120, 100%, 40%);">+.Example: datagram structure for combination b)</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%);">+| TRXN=N | TDMA FN=F TN=0 | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=1 | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=2 | BATCH=1 | Hard-/Soft-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 style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=7 | BATCH=0 | Hard-/Soft-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 style="color: hsl(120, 100%, 40%);">+.Example: datagram structure for combination c)</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%);">+| TRXN=0 | TDMA FN=F TN=0 | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=0 | TDMA FN=F TN=1 | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=0 | TDMA FN=F TN=2 | BATCH=1 | Hard-/Soft-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 style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=6 | BATCH=1 | Hard-/Soft-bits        |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+---------+------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=7 | BATCH=0 | Hard-/Soft-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 style="color: hsl(120, 100%, 40%);">+[[trx_if_pdu_vamos]]</span><br><span style="color: hsl(120, 100%, 40%);">+==== Coding of VAMOS PDUs</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+In VAMOS mode, the throughput of a cell is increased by multiplexing two subscribers</span><br><span style="color: hsl(120, 100%, 40%);">+on a single TDMA timeslot.  Basically, *two* bursts are getting transmitted during</span><br><span style="color: hsl(120, 100%, 40%);">+one TDMA timeslot period, and both of them need delivered over the TRXD interface.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+In the Downlink direction, the two bursts belonging to a _VAMOS pair_ shall be</span><br><span style="color: hsl(120, 100%, 40%);">+concatenated together and sent in one TRXD PDU.  The resulting hard-bit sequence</span><br><span style="color: hsl(120, 100%, 40%);">+shall *not* be interleaved: `V0(0..147) + V1(0..147)` (296 hard-bits total), i.e.</span><br><span style="color: hsl(120, 100%, 40%);">+one complete burst for subscriber `V0` takes the first 148 bytes, and another</span><br><span style="color: hsl(120, 100%, 40%);">+complete burst for subscriber `V1` takes the remaining 148 bytes.  The `MTS` field</span><br><span style="color: hsl(120, 100%, 40%);">+shall indicate the use of `AQPSK` modulation, and the `SCPIR` field shall indicate</span><br><span style="color: hsl(120, 100%, 40%);">+the Power Imbalance Ratio between `V0` and `V1`.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Downlink datagram containing a VAMOS PDU</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%);">+| TRXN=N | TDMA FN=F TN=T | Mod=AQPSK | Hard-bits: V0(0..147) + V1(0..147)    |</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%);">+In the Uplink direction though, one or even both of the two bursts may be lost</span><br><span style="color: hsl(120, 100%, 40%);">+(e.g. due to high noise figures), so they shall always be sent in two separate</span><br><span style="color: hsl(120, 100%, 40%);">+PDUs.  The missing bursts shall be substituted by NOPE indications, so it's</span><br><span style="color: hsl(120, 100%, 40%);">+always a pair of _batched PDUs_.  The `MTS` field shall indicate the use of</span><br><span style="color: hsl(120, 100%, 40%);">+`GMSK` modulation.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Uplink datagram containing batched VAMOS PDUs (both present)</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%);">+| TRXN=N | TDMA FN=F TN=T | Mod=GMSK | Soft-bits for V0 (148 bytes)           |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+----------+----------------------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=T | Mod=GMSK | Soft-bits for V1 (148 bytes)           |</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%);">+.Example: Uplink datagram containing batched VAMOS PDUs (one lost)</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%);">+| TRXN=N | TDMA FN=F TN=T | Mod=GMSK | Soft-bits for V0 (148 bytes)           |</span><br><span style="color: hsl(120, 100%, 40%);">++--------+----------------+----------+----------------------------------------+</span><br><span style="color: hsl(120, 100%, 40%);">+| TRXN=N | TDMA FN=F TN=T | NOPE.ind |</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></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/22867">change 22867</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-gsm-manuals/+/22867"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-manuals </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I03b2beeb535848b31fd629ba3cd330b43072c08b </div>
<div style="display:none"> Gerrit-Change-Number: 22867 </div>
<div style="display:none"> Gerrit-PatchSet: 11 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>