From dbb4c0389eccf68ad0a1d3f08f81c1fc07bdab1a Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 3 Nov 2016 14:21:03 +0100 Subject: rtp-amr.adoc: Fixes to Message Sequence Charts Nutaq added these clarifications/extensions/fixes tothe message sequence charts. Change-Id: Ic699bda828947ff616c3d80783026e21d853f962 --- doc/manuals/abis/rtp-amr.adoc | 259 ++++++++++++++++++++++++++++++------------ 1 file changed, 188 insertions(+), 71 deletions(-) diff --git a/doc/manuals/abis/rtp-amr.adoc b/doc/manuals/abis/rtp-amr.adoc index 889a032c..f6013036 100644 --- a/doc/manuals/abis/rtp-amr.adoc +++ b/doc/manuals/abis/rtp-amr.adoc @@ -65,11 +65,11 @@ msc { ...; --- [label="Last AMR Speech (end of talk-spurt) and SID"]; - ms => phy [label="L1 burst (sub-block 5 of speech frame N-1, sub-block 1 of SID_FIRST)"]; - ms => phy [label="L1 burst (sub-block 6 of speech frame N-1, sub-block 2 of SID_FIRST)"]; - ms => phy [label="L1 burst (sub-block 7 of speech frame N-1, sub-block 3 of SID_FIRST)"]; - ms => phy [label="L1 burst (sub-block 8 of speech frame N-1, sub-block 4 of SID_FIRST)", id="ULSF2"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N-1)"]; + ms => phy [label="L1 burst (sub-block 5 of speech frame N, sub-block 1 of SID_FIRST)"]; + ms => phy [label="L1 burst (sub-block 6 of speech frame N, sub-block 2 of SID_FIRST)"]; + ms => phy [label="L1 burst (sub-block 7 of speech frame N, sub-block 3 of SID_FIRST)"]; + ms => phy [label="L1 burst (sub-block 8 of speech frame N, sub-block 4 of SID_FIRST)", id="ULSF2"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N)"]; bts => mgw [label="RTP (AMR FT=0..7,Q=1)"]; ms -x phy [label="Suppressed L1 burst"]; @@ -79,28 +79,36 @@ msc { phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_FIRST)"]; bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; - ms -x phy [label="Suppressed L1 burst"]; - ms -x phy [label="Suppressed L1 burst"]; - ms -x phy [label="Suppressed L1 burst"]; - ms -x phy [label="Suppressed L1 burst"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_NA"]; + 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]"]; 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr"]; - bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; + 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_UPDATE)"]; + bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; } ---- -ULSF2:: The sub-blocks 5-8 of SID_FIRST are not transmitted, as all -information bits are contained in sub-blocks 1-4 only. +ULSF2:: As per 3GPP TS 05.03 section 3.9.2.4 The last 4 bursts shall not be transmitted unless +the SID_FIRST frame is immediately followed by a speech frame. It has been observed that some phone +does not transmit the last 4 bursts even if it is not followed by a speech frame. -ULSU2:: There must be exactly two suppressed voice frames between the -SID_FIRST and the SID_UPDATE, i.e. 60ms between SID_FIRST and +ULSU2:: There must be exactly two supressed voice frames between the +SID_FIRST and the SID_UPDATE, i.e. there's 60ms between SID_FIRST and SID_UPDATE. ==== TCH/AFS Uplink: During Silence @@ -125,7 +133,70 @@ msc { 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; + 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_UPDATE)"]; + bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; + + 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]"]; + 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]"]; + 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]"]; + 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]"]; + 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]"]; + 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]"]; + 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]"]; + 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_UPDATE)"]; bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; } ---- @@ -480,14 +551,15 @@ msc { bts <= mgw [label="RTP (AMR FT=0..7,Q=1) MARKER=1"]; phy => bts [label="PH-RTS.ind (TCH)"]; - phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr_Onset", id="DLOS2"]; - ms <= phy [label="L1 burst (sub-block 5 of SID_ONSET + sub-block 1 of speech frame N)"]; - ms <= phy [label="L1 burst (sub-block 6 of SID_ONSET + sub-block 2 of speech frame N)"]; - ms <= phy [label="L1 burst (sub-block 7 of SID_ONSET + sub-block 3 of speech frame N)"]; - ms <= phy [label="L1 burst (sub-block 8 of SID_ONSET + sub-block 4 of speech frame N)"]; + phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr_Onset"]; + phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr (N)"]; + 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)"]; + 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)"]; bts <= mgw [label="RTP (AMR FT=0..7,Q=1)"]; phy => bts [label="PH-RTS.ind (TCH)"]; - phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr"]; + phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr (N+1)"]; ms <= phy [label="L1 burst (sub-block 5 of speech frame N + sub-block 1 of speech frame N+1)"]; ms <= phy [label="L1 burst (sub-block 6 of speech frame N + sub-block 2 of speech frame N+1)"]; ms <= phy [label="L1 burst (sub-block 7 of speech frame N + sub-block 2 of speech frame N+1)"]; @@ -603,10 +675,14 @@ msc { ms => phy [label="L1 burst (sub-block 3 of speech frame N-1 + sub-block 1 of speech frame N)"]; ms => phy [label="L1 burst (sub-block 4 of speech frame N-1 + sub-block 2 of speech frame N)"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N-1)"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N-2)"]; bts => mgw [label="RTP (AMR FT=0..7,Q=1)"]; 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N-1)"]; + bts => mgw [label="RTP (AMR FT=0..7,Q=1)"]; + 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N)"]; bts => mgw [label="RTP (AMR FT=0..7,Q=1)"]; } @@ -636,43 +712,44 @@ msc { ...; --- [label="Last AMR Speech (end of talk-spurt) and SID P1/P2"]; - ms => phy [label="L1 burst (sub-block 3 of speech frame N-1, sub-block 1 of SID_FIRST_P1)"]; - ms => phy [label="L1 burst (sub-block 4 of speech frame N-1, sub-block 2 of SID_FIRST_P1)"]; + ms => phy [label="L1 burst (sub-block 3 of speech frame N, sub-block 1 of SID_FIRST_P1)"]; + ms => phy [label="L1 burst (sub-block 4 of speech frame N, sub-block 2 of SID_FIRST_P1)"]; phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N-1)"]; bts => mgw [label="RTP (AMR FT=0..7,Q=1)"]; + ms => phy [label="L1 burst (sub-block 3 of SID_FIRST_P1, sub-block 1 of SID_FIRST_P2)"]; ms => phy [label="L1 burst (sub-block 4 of SID_FIRST_P1, sub-block 2 of SID_FIRST_P2)"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N)"]; + bts => mgw [label="RTP (AMR FT=0..7,Q=1)"]; + + ms -x phy [label="Supressed L1 burst"]; + ms -x phy [label="Supressed L1 burst"]; phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr_SidFirstP1", id="ULSF1"]; bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; - ms -x phy [label="Suppressed L1 burst"]; - ms -x phy [label="Suppressed L1 burst"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr_SidFirstP2"]; - bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; - - ms -x phy [label="Suppressed L1 burst"]; - ms -x phy [label="Suppressed L1 burst"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_NA"]; ms => phy [label="L1 burst (sub-block 1+2 of SID_UPDATE)", id="ULSU1"]; ms => phy [label="L1 burst (sub-block 3+4 of SID_UPDATE)"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_NA"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr_SidFirstP2", id="NOTE"]; + 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr"]; - bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; + bts -x mgw [label="Suppressed RTP frame"]; + ms -x phy [label="Supressed L1 burst"]; + ms -x phy [label="Supressed L1 burst"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_UPDATE)"]; + bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; } ---- -ULSF1:: There are two separate indications for P1 and P2, despite both -P1 and P2 being multiplexed together in one batch of four bursts. Not -sure why they result in two separate PH-DATA.ind. Based on what we -know: If the MS sends P1 and P2, the PHY should receive SidFirstP1 and -SidFirstP2 indications immediately after each other, both for the same -GSM frame number. +ULSF1:: Only SID_FIRST_P1 contains information so it must be the only one transmitted over RTP. + +NOTE:: It has been observed that not all phones transmit SID_FIRST_P2 so the PH-DATA.ind GsmL1_TchPlType_Amr_SidFirstP2 is not guaranteed to be sent to the BTS. -ULSU1:: There must be exactly two suppressed voice frames between the -SID_FIRST and the SID_UPDATE, i.e. 60ms between SID_FIRST and +ULSU1:: There must be exactly two supressed voice frames between the +SID_FIRST and the SID_UPDATE, i.e. there's 60ms between SID_FIRST and SID_UPDATE. ==== TCH/AFS Uplink: During Silence @@ -695,10 +772,55 @@ msc { 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_NA"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; + 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; + bts -x mgw [label="Suppressed RTP frame"]; + + ms -x phy [label="Supressed L1 burst"]; + ms -x phy [label="Supressed L1 burst"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_UPDATE)"]; + bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; + + ms -x phy [label="Supressed L1 burst"]; + ms -x phy [label="Supressed L1 burst"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; + 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]"]; + 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]"]; + 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]"]; + 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]"]; + 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]"]; + 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]"]; + bts -x mgw [label="Suppressed RTP frame"]; + + ms -x phy [label="Supressed L1 burst"]; + ms -x phy [label="Supressed L1 burst"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (SID_UPDATE)"]; bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; } ---- @@ -822,26 +944,27 @@ msc { ms [label="MS"], phy [label="BTS-PHY"], bts [label="BTS"], mgw [label="MGW"]; ...; - ms .. mgw [label="pre-empted SID Update (during silence period)"]; + ms .. mgw [label="Inhibited SID Update (during silence period)"]; 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 => bts [label="PH-DATA.ind GsmL1_TchPlType_NA"]; + phy -x bts [label="No PH-DATA.ind sent[BFI]"]; bts -x mgw [label="Suppressed RTP frame"]; - ms => phy [label="L1 burst (sub-block 3 of SID_UPD_INH + sub-block 1 of speech frame N-1)", id="SFU1"]; - ms => phy [label="L1 burst (sub-block 4 of SID_UPD_INH + sub-block 2 of speech frame N-1)"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr_SidUpdateInH", id="SFU2"]; - bts => bts [label="lchan_set_marker() and store CMI from SID_UPD_INH"]; + 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]"]; 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)"]; - ms => phy [label="L1 burst (sub-block 4 of speech frame N-1 + sub-block 2 of speech frame N)"]; - phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N-1)"]; - bts => mgw [label="RTP (AMR FT=0..7,Q=1), MARKER=1"]; - 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]"]; + 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)"]; + ms => phy [label="L1 burst (sub-block 4 of speech frame N+1 + sub-block 2 of speech frame N+2)"]; + phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr_SidUpdateInH", id="SFU2"]; + bts => bts [label="lchan_set_marker() and store CMI from SID_UPD_INH"]; phy => bts [label="PH-DATA.ind GsmL1_TchPlType_Amr (N)"]; bts => mgw [label="RTP (AMR FT=0..7,Q=1) MARKER=1"]; } @@ -925,7 +1048,7 @@ msc { ms <= phy [label="L1 burst (sub-block 4 of speech frame N-1 + sub-block 2 of speech frame N)"]; mgw => bts [label="RTP (AMR FT=0..7,Q=1)"]; phy => bts [label="PH-RTS.ind (TCH)"]; - bts => phy [label="PH-DATA.req GsmL1_TchPlType_Amr (N)"]; + bts => phy [label="PH-DATA.req GsmL1_TchPlType_Amr (N+1)"]; 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)"]; } @@ -985,11 +1108,12 @@ msc { ms x- phy [label="Suppressed burst"]; ms x- phy [label="Suppressed burst"]; + bts <= mgw [label="RTP (AMR FT=SID,Q=1)"]; phy => bts [label="PH-RTS.ind (TCH)"]; bts => phy [label="PH-DATA.req GsmL1_TchPlType_Amr (SID_UPDATE)", id="ULSU2"]; 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 => bts [label="PH-RTS.ind (TCH)", id="RTDSU1"]; + phy => bts [label="PH-RTS.ind (TCH)"]; phy <= bts [label="PH-EMPTY-FRAME.req"]; ms <= phy [label="L1 burst (sub-block 5+6 of SID_UPDATE)"]; ms <= phy [label="L1 burst (sub-block 7+8 of SID_UPDATE)"]; @@ -1005,9 +1129,6 @@ ULSU2:: The SID_UPDATE must be sent exactly three voice frames (60ms) after the SID_FIRST, resulting in two suppressed voice frame periods of empty bursts in between. -RTDSU1:: Not sure whether BTS-PHY actually sends PH-RTS.ind during the -"double-length" SID-UPDATE? - ==== TCH/AHS Downlink: During Silence During Silence periods, the BTS may at any time receive RTP AMR SID @@ -1039,21 +1160,16 @@ msc { bts => phy [label="PH-DATA.req GsmL1_TchPlType_Amr (SID_UPDATE)"]; 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 => bts [label="PH-RTS.ind (TCH)", id="RTDSU2"]; + phy => bts [label="PH-RTS.ind (TCH)"]; phy <= bts [label="PH-EMPTY-FRAME.req"]; 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 => bts [label="PH-DATA.req GsmL1_TchPlType_Amr"]; - bts => mgw [label="RTP (AMR FT=SID,Q=1)"]; } ---- 8VF:: This happens every 8 *voice frames* (160ms), not every 8 GSM TDMA frames! -RTDSU2:: Not sure whether BTS-PHY actually sends PH-RTS.ind during the -"double-length" SID-UPDATE? - [[ahs-dl-onset]] ==== TCH/AHS Downlink: End of Silence; Start of Voice @@ -1076,12 +1192,13 @@ msc { bts <= mgw [label="RTP (AMR FT=0..7,Q=1) MARKER=1"]; phy => bts [label="PH-RTS.ind (TCH)"]; - phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr_Onset", id="DLOS2"]; + phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr_Onset"]; + phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr (N)"]; ms <= phy [label="L1 burst (sub-block 3 of SID_ONSET + sub-block 1 of speech frame N)"]; ms <= phy [label="L1 burst (sub-block 4 of SID_ONSET + sub-block 2 of speech frame N)"]; bts <= mgw [label="RTP (AMR FT=0..7,Q=1)"]; phy => bts [label="PH-RTS.ind (TCH)"]; - phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr"]; + phy <= bts [label="PH-DATA.req GsmL1_TchPlType_Amr (N+1)"]; 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)"]; } -- cgit v1.2.3