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.orgHarald Welte has submitted this change and it was merged. Change subject: rtp-amr.adoc: Fixes to Message Sequence Charts ...................................................................... rtp-amr.adoc: Fixes to Message Sequence Charts Nutaq added these clarifications/extensions/fixes tothe message sequence charts. Change-Id: Ic699bda828947ff616c3d80783026e21d853f962 --- M OsmoBTS/abis/rtp-amr.adoc 1 file changed, 188 insertions(+), 71 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/OsmoBTS/abis/rtp-amr.adoc b/OsmoBTS/abis/rtp-amr.adoc index 889a032..f601303 100644 --- a/OsmoBTS/abis/rtp-amr.adoc +++ b/OsmoBTS/abis/rtp-amr.adoc @@ -65,11 +65,11 @@ ...; --- [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 @@ 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 @@ 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 @@ 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 @@ 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 @@ ...; --- [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. -ULSU1:: There must be exactly two suppressed voice frames between the -SID_FIRST and the SID_UPDATE, i.e. 60ms between SID_FIRST and +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 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 @@ 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 @@ 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 @@ 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 @@ 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)"]; @@ -1004,9 +1128,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 @@ -1039,20 +1160,15 @@ 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 @@ 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)"]; } -- To view, visit https://gerrit.osmocom.org/1190 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic699bda828947ff616c3d80783026e21d853f962 Gerrit-PatchSet: 2 Gerrit-Project: osmo-gsm-manuals Gerrit-Branch: master Gerrit-Owner: Max <msuraev at sysmocom.de> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder