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/.
Max gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/1193 Add DTX implementation details to RTP AMR Add FSM and description. Change-Id: Ib37cb6e4038f970070c1715269961db7172ce377 --- A OsmoBTS/dtx.dot M OsmoBTS/rtp-amr-docinfo.xml M OsmoBTS/rtp-amr.adoc 3 files changed, 87 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-manuals refs/changes/93/1193/1 diff --git a/OsmoBTS/dtx.dot b/OsmoBTS/dtx.dot new file mode 100644 index 0000000..95ab2d6 --- /dev/null +++ b/OsmoBTS/dtx.dot @@ -0,0 +1,50 @@ +digraph finite_state_machine { + node [shape = doublecircle]; ST_VOICE ST_FACCH_V ST_FACCH ST_SID_U; + node [shape = circle]; + ST_VOICE -> ST_SID_F1 [ label = "E_SID_F" ]; + ST_VOICE -> ST_SID_F1 [ label = "E_SID_U" ]; + ST_VOICE -> ST_VOICE [ label = "E_VOICE" ]; + ST_VOICE -> ST_VOICE [ label = "E_FACCH" ]; + + ST_SID_F1 -> ST_SID_F1 [ label = "E_SID_F" ]; + ST_SID_F1 -> ST_SID_U [ label = "E_SID_U" ]; + ST_SID_F1 -> ST_VOICE [ label = "E_VOICE" ]; + ST_SID_F1 -> ST_ONSET_F [ label = "E_FACCH" ]; + ST_SID_F1 -> ST_SID_F2 [ label = "E_COMPL" ]; + ST_SID_F1 -> ST_F1_INH [ label = "E_INHIB" ]; + ST_SID_F1 -> ST_ONSET_V [ label = "E_ONSET" ]; + + ST_SID_F2 -> ST_SID_U [ label = "E_SID_U" ]; + ST_SID_F2 -> ST_VOICE [ label = "E_VOICE" ]; + ST_SID_F2 -> ST_ONSET_F [ label = "E_FACCH" ]; + + ST_F1_INH -> ST_VOICE [ label = "E_VOICE" ]; + ST_F1_INH -> ST_FACCH_V [ label = "E_FACCH" ]; + + ST_U_INH -> ST_VOICE [ label = "E_VOICE" ]; + ST_U_INH -> ST_FACCH_V [ label = "E_FACCH" ]; + + ST_SID_U -> ST_ONSET_F [ label = "E_FACCH" ]; + ST_SID_U -> ST_VOICE [ label = "E_VOICE" ]; + ST_SID_U -> ST_U_INH [ label = "E_INHIB" ]; + ST_SID_U -> ST_SID_U [ label = "E_SID_U" ]; + ST_SID_U -> ST_SID_U [ label = "E_SID_F" ]; + ST_SID_U -> ST_ONSET_V [ label = "E_ONSET" ]; + + ST_ONSET_V -> ST_VOICE [ label = "E_VOICE" ]; + ST_ONSET_V -> ST_FACCH_V [ label = "E_FACCH" ]; + + ST_ONSET_F -> ST_VOICE [ label = "E_VOICE" ]; + ST_ONSET_F -> ST_FACCH [ label = "E_FACCH" ]; + ST_ONSET_F -> ST_ONSET_F [ label = "E_SID_U" ]; + + ST_FACCH_V -> ST_FACCH_V [ label = "E_FACCH" ]; + ST_FACCH_V -> ST_VOICE [ label = "E_VOICE" ]; + ST_FACCH_V -> ST_VOICE [ label = "E_SID_U" ]; + ST_FACCH_V -> ST_SID_F1 [ label = "E_SID_F" ]; + + ST_FACCH -> ST_FACCH [ label = "E_FACCH" ]; + ST_FACCH -> ST_VOICE [ label = "E_VOICE" ]; + ST_FACCH -> ST_SID_F1 [ label = "E_SID_U" ]; + ST_FACCH -> ST_SID_F1 [ label = "E_SID_F" ]; +} diff --git a/OsmoBTS/rtp-amr-docinfo.xml b/OsmoBTS/rtp-amr-docinfo.xml index 82131c4..fe5d681 100644 --- a/OsmoBTS/rtp-amr-docinfo.xml +++ b/OsmoBTS/rtp-amr-docinfo.xml @@ -7,6 +7,14 @@ Initial version </revremark> </revision> + <revision> + <revnumber>2</revnumber> + <date>November 2016</date> + <authorinitials>MS</authorinitials> + <revremark> + FSM added + </revremark> + </revision> </revhistory> <authorgroup> @@ -21,6 +29,17 @@ <jobtitle>Managing Director</jobtitle> </affiliation> </author> + <author> + <firstname>Max</firstname> + <surname>Suraev</surname> + <email>msuraev at sysmocom.de</email> + <authorinitials>MS</authorinitials> + <affiliation> + <shortaffil>sysmocom</shortaffil> + <orgname>sysmocom - s.f.m.c. GmbH</orgname> + <jobtitle>Software Developer</jobtitle> + </affiliation> + </author> </authorgroup> <copyright> diff --git a/OsmoBTS/rtp-amr.adoc b/OsmoBTS/rtp-amr.adoc index ef00aeb..8ee69b1 100644 --- a/OsmoBTS/rtp-amr.adoc +++ b/OsmoBTS/rtp-amr.adoc @@ -1195,3 +1195,21 @@ ms <= phy [label="L1 burst (sub-block 4 of SID_FIRST_P1, sub-block 2 of SID_FIRST_P2)"]; } ---- + +== Implementation details + +There is FSM implementing all the necessary states and transitions for DTX DL. + +[[dtx_dl_fsm]] +[graphviz] +---- +include::dtx.dot[] +---- + +The idea is that each state corresponds to the particular message type which have to be send to L1 while state transition happens on incoming events like FACCH or Voice frames. There are 3 different classes of of events driving this FSM: + +* Voice frame types: E_VOICE, E_SID_U, E_SID_F +* Incoming FACCH: E_FACCH +* Internal: E_ONSET, E_INHIB, E_COMPL + +They represent different types of incoming RTP frames (Voice, SID UPDATE and SID FIRST correspondingly), incoming FACCH events or important events internal to DTX operations. The latter are Onset (interruption of silence period), Inhibition (of currently transmitted SID FIRST or UPDATE) and Completion (of silence initiation). \ No newline at end of file -- To view, visit https://gerrit.osmocom.org/1193 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib37cb6e4038f970070c1715269961db7172ce377 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-manuals Gerrit-Branch: master Gerrit-Owner: Max <msuraev at sysmocom.de>