[MERGED] osmo-gsm-manuals[master]: rtp-amr: Describe requirement to recieve all PH-DATA.ind events

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/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Tue Jul 18 14:20:49 UTC 2017


Harald Welte has submitted this change and it was merged.

Change subject: rtp-amr: Describe requirement to recieve all PH-DATA.ind events
......................................................................


rtp-amr: Describe requirement to recieve all PH-DATA.ind events

Change-Id: I4a78b3398c36a8107fa1809ba9b89235980f0e4f
---
M OsmoBTS/rtp-amr-docinfo.xml
M OsmoBTS/rtp-amr.adoc
2 files changed, 59 insertions(+), 35 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/OsmoBTS/rtp-amr-docinfo.xml b/OsmoBTS/rtp-amr-docinfo.xml
index fe5d681..3f4de8d 100644
--- a/OsmoBTS/rtp-amr-docinfo.xml
+++ b/OsmoBTS/rtp-amr-docinfo.xml
@@ -15,6 +15,14 @@
       FSM added
     </revremark>
   </revision>
+  <revision>
+    <revnumber>3</revnumber>
+    <date>July 2017</date>
+    <authorinitials>PE</authorinitials>
+    <revremark>
+      Add section and update sequence charts to describe requirement to receive all PH-DATA.ind events
+    </revremark>
+  </revision>
 </revhistory>
 
 <authorgroup>
diff --git a/OsmoBTS/rtp-amr.adoc b/OsmoBTS/rtp-amr.adoc
index 982a5af..5f0f803 100644
--- a/OsmoBTS/rtp-amr.adoc
+++ b/OsmoBTS/rtp-amr.adoc
@@ -14,6 +14,22 @@
 
 === TCH/AFS Uplink (MS to Network)
 
+==== TCH/AFS Uplink: Initial Assumptions
+
+When a call is established, the BTS expects PH-DATA.ind (TCH) events to be
+triggered by BTS-PHY at regular intervals and none of them being lost, even if
+the MS is not transmitting at that time due to DTX. This requirement is
+important as upper layers rely on this timing to update the RTP source clock at
+a correct pace. Given an event from BTS-PHY is lost, the RTP source clock will
+drift and this may be seen as steady increase of delay over time from the
+receiver point of view.
+
+In the case of Nutaq GSM PHY and API, option fBFILevel is set to a ridiculously
+low value -200 to ensure all indications are notified to upper layers, even if
+no meaningful payload is available at that time. In this case, an empty payload
+is delivered from PHY-BTS to BTS, which updates the clock without sending any
+RTP packet.
+
 ==== TCH/AFS Uplink: During Talk-Spurt
 
 During a talk-spurt, the system behaves identical to a system without
@@ -83,14 +99,14 @@
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 1+2 of SID_UPDATE)", id="ULSU2"];
 	ms => phy	[label="L1 burst (sub-block 3+4 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 5+6 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 7+8 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 
@@ -133,7 +149,7 @@
 	ms => phy	[label="L1 burst (sub-block 3+4 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 5+6 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 7+8 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
@@ -147,49 +163,49 @@
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 1+2 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 3+4 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 5+6 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 7+8 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
@@ -242,14 +258,14 @@
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (block 1 of SID_ONSET + sub-block 1 of speech frame N)", id="ULSO2"];
 	ms => phy	[label="L1 burst (block 2 of SID_ONSET + sub-block 2 of speech frame N)"];
 	ms => phy	[label="L1 burst (block 3 of SID_ONSET + sub-block 3 of speech frame N)"];
 	ms => phy	[label="L1 burst (block 4 of SID_ONSET + sub-block 4 of speech frame N)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 5 of speech frame N + sub-block 1 of speech frame N+1)"];
@@ -333,14 +349,14 @@
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (block 1 of SID_ONSET + sub-block 1 of FACCH frame)"];
 	ms => phy	[label="L1 burst (block 2 of SID_ONSET + sub-block 2 of FACCH frame)"];
 	ms => phy	[label="L1 burst (block 3 of SID_ONSET + sub-block 3 of FACCH frame)"];
 	ms => phy	[label="L1 burst (block 4 of SID_ONSET + sub-block 4 of FACCH frame)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 5 of FACCH frame + sub-block 1 of SID First frame)"];
@@ -734,7 +750,7 @@
 
 	ms => phy	[label="L1 burst (sub-block 5+6 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 7+8 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
@@ -772,11 +788,11 @@
 
 	ms => phy	[label="L1 burst (sub-block 1+2 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 3+4 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 	ms => phy	[label="L1 burst (sub-block 5+6 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 7+8 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
@@ -786,36 +802,36 @@
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 1+2 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 3+4 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 	ms => phy	[label="L1 burst (sub-block 5+6 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 7+8 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];
@@ -864,17 +880,17 @@
 
 	ms -x phy	[label="Suppressed L1 burst"];
 	ms -x phy	[label="Suppressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (block 1 of SID_ONSET + sub-block 1 of speech frame N)"];
 	ms => phy	[label="L1 burst (block 2 of SID_ONSET + sub-block 2 of speech frame N)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 3 of speech frame N + sub-block 1 of speech frame N+1)"];
 	ms => phy	[label="L1 burst (sub-block 4 of speech frame N + sub-block 2 of speech frame N+1)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 3 of speech frame N+1 + sub-block 1 of speech frame N+2)"];
@@ -916,7 +932,7 @@
 
 	ms => phy	[label="L1 burst (sub-block 3 of speech frame N+1 + sub-block 1 of speech frame N+2)"];
 	ms => phy	[label="L1 burst (sub-block 4 of speech frame N+1 + sub-block 2 of speech frame N+2)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 3 of speech frame N+2 + sub-block 1 of speech frame N+3)"];
@@ -948,17 +964,17 @@
 
 	ms => phy	[label="L1 burst (sub-block 1+2 of SID_UPDATE)"];
 	ms => phy	[label="L1 burst (sub-block 3+4 of SID_UPDATE)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (block 1 of SID_UPD_INH + sub-block 1 of speech frame N)", id="SFU1"];
 	ms => phy	[label="L1 burst (block 2 of SID_UPD_INH + sub-block 2 of speech frame N)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 3 of speech frame N + sub-block 1 of speech frame N+1)"];
 	ms => phy	[label="L1 burst (sub-block 4 of speech frame N + sub-block 2 of speech frame N+1)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 3 of speech frame N+1 + sub-block 1 of speech frame N+2)"];
@@ -985,17 +1001,17 @@
 
 	ms -x phy	[label="Supressed L1 burst"];
 	ms -x phy	[label="Supressed L1 burst"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (block 1 of SID_ONSET + sub-block 1 of FACCH/H)"];
 	ms => phy	[label="L1 burst (block 2 of SID_ONSET + sub-block 2 of FACCH/H)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 3+4 of FACCH/H)"];
 	ms => phy	[label="L1 burst (sub-block 5+6 of FACCH/H)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms => phy	[label="L1 burst (sub-block 7 of FACCH/H + sub-block 1 of SID_FIRST_P1)"];
@@ -1007,7 +1023,7 @@
 
 	ms => phy	[label="L1 burst (sub-block 3 of SID_FIRST_P1 + block 1 of SID_FIRST_P2)"];
 	ms => phy	[label="L1 burst (sub-block 4 of SID_FIRST_P1 + block 2 of SID_FIRST_P2)"];
-	phy -x bts	[label="No PH-DATA.ind sent[BFI]"];
+	phy => bts	[label="PH-DATA.ind with empty payload"];
 	bts -x mgw	[label="Suppressed RTP frame"];
 
 	ms -x phy	[label="Supressed L1 burst"];

-- 
To view, visit https://gerrit.osmocom.org/3273
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I4a78b3398c36a8107fa1809ba9b89235980f0e4f
Gerrit-PatchSet: 2
Gerrit-Project: osmo-gsm-manuals
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>



More information about the gerrit-log mailing list