From d4155871335780f8afb67af18b60e0f36d637dfb Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sat, 16 Jun 2018 16:08:55 +0200 Subject: doc: update/fix FSM charts Change-Id: I29e31b753e23a4207662e0e385a337e7df836f45 --- doc/Makefile.am | 5 +++++ doc/assignment-fsm.dot | 35 +++++++++++++++++++++++++++++++ doc/assignment.msc | 18 ++++++++-------- doc/handover-inter-bsc-mo-fsm.dot | 26 +++++++++++++++++++++++ doc/handover-inter-bsc-mt-fsm.dot | 42 ++++++++++++++++++++++++++++++++++++++ doc/handover-inter-bsc-mt.msc | 6 +++--- doc/handover-intra-bsc-fsm.dot | 27 ++++++++++++++++++++++++ doc/handover.msc | 4 ++-- doc/lchan-fsm.dot | 22 +++++++++++--------- doc/lchan-release.msc | 2 +- doc/lchan.msc | 14 ++++++------- doc/mgw-endpoint-fsm.dot | 22 ++++++++++++++++++++ doc/ms-channel-request.msc | 4 ++-- doc/ts-and-lchan-fsm-lifecycle.msc | 2 +- 14 files changed, 194 insertions(+), 35 deletions(-) create mode 100644 doc/assignment-fsm.dot create mode 100644 doc/handover-inter-bsc-mo-fsm.dot create mode 100644 doc/handover-inter-bsc-mt-fsm.dot create mode 100644 doc/handover-intra-bsc-fsm.dot create mode 100644 doc/mgw-endpoint-fsm.dot diff --git a/doc/Makefile.am b/doc/Makefile.am index ca0470d01..2a855eb4e 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -15,8 +15,13 @@ msc: \ $(NULL) dot: \ + $(builddir)/assignment-fsm.png \ $(builddir)/timeslot-fsm.png \ $(builddir)/lchan-fsm.png \ + $(builddir)/mgw-endpoint-fsm.png \ + $(builddir)/handover-intra-bsc-fsm.png \ + $(builddir)/handover-inter-bsc-mo-fsm.png \ + $(builddir)/handover-inter-bsc-mt-fsm.png \ $(NULL) $(builddir)/%.png: $(srcdir)/%.msc diff --git a/doc/assignment-fsm.dot b/doc/assignment-fsm.dot new file mode 100644 index 000000000..90f7621df --- /dev/null +++ b/doc/assignment-fsm.dot @@ -0,0 +1,35 @@ +digraph G { +rankdir=TB; + + WAIT_LCHAN_ACTIVE + WAIT_RR_ASS_COMPLETE + WAIT_LCHAN_ESTABLISHED + WAIT_MGW_ENDPOINT_TO_MSC + terminate [shape=box] + + gscon [label="conn FSM",shape=box3d]; + gscon2 [label="conn FSM",shape=box3d]; + lchan [label="lchan FSM",shape=box3d]; + old_lchan [label="old lchan",shape=box3d]; + + invisible [style="invisible"] + invisible -> gscon [label="GSCON_EV_A_ASSIGNMENT_CMD",style=dashed] + invisible -> old_lchan [style=invisible,arrowhead=none] + + gscon -> WAIT_LCHAN_ACTIVE [label="assignment_fsm_start()",style=dashed] + WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate()\nFOR_ASSIGNMENT",style=dashed] + lchan -> WAIT_LCHAN_ACTIVE [label="ASSIGNMENT_EV_\nLCHAN_\nACTIVE,ERROR",style=dashed] + lchan -> WAIT_LCHAN_ESTABLISHED [label="ASSIGNMENT_EV_\nLCHAN_\nESTABLISHED,ERROR",style=dashed] + + WAIT_LCHAN_ACTIVE -> WAIT_RR_ASS_COMPLETE + + WAIT_RR_ASS_COMPLETE -> old_lchan [label="RR Assignment\nCommand",style=dashed,constraint=false] + lchan -> WAIT_RR_ASS_COMPLETE [label="RR Assignment\nComplete",style=dashed] + + WAIT_RR_ASS_COMPLETE -> WAIT_LCHAN_ESTABLISHED + + WAIT_LCHAN_ESTABLISHED -> WAIT_MGW_ENDPOINT_TO_MSC [label="TCH"] + WAIT_LCHAN_ESTABLISHED -> terminate [label="non-TCH"] + WAIT_MGW_ENDPOINT_TO_MSC -> terminate + terminate -> gscon2 [label="GSCON_EV_\nASSIGNMENT_END",style=dashed] +} diff --git a/doc/assignment.msc b/doc/assignment.msc index 9f10ea1ba..872161f90 100644 --- a/doc/assignment.msc +++ b/doc/assignment.msc @@ -6,7 +6,7 @@ msc { ms note mgw_msc [label="lchan allocation sequence for BSSMAP Assignment Request"]; bsc_gscon <= mgw_msc [label="BSSMAP Assignment Request"]; - bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_LCHAN"]; + bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_LCHAN\nT10?"]; bsc_lchan <- bsc_gscon [label="lchan_select_by_chan_mode(chan_mode)"]; |||; @@ -15,13 +15,13 @@ msc { bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; ---; |||; - bsc_gscon box bsc_gscon [label="store lchan pointer in conn->lchan_for_assignment"]; + bsc_gscon box bsc_gscon [label="store lchan pointer in conn->assignment.new_lchan"]; bsc_lchan <- bsc_gscon [label="lchan_activate(FOR_ASSIGNMENT)"]; ...; |||; --- [label="on lchan FSM error or timeout"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; - bsc_gscon box bsc_gscon [label="'forget' all about conn->lchan_for_assignment"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; + bsc_gscon box bsc_gscon [label="'forget' all about conn->assignment.new_lchan"]; bsc_gscon => mgw_msc [label="BSSMAP Assignment Failure"]; bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; --- [label="END: 'on error'"]; @@ -49,9 +49,9 @@ msc { bsc_gscon -> bsc_lchan [label="LCHAN_EV_MGW_ENDPOINT_ERROR"]; bsc_lchan note bsc_gscon [label="conn FSM timeout handler exits and relies on the lchan FSM signalling error, which should actually happen immediately:"]; - bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ERROR"]; bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; - bsc_gscon box bsc_gscon [label="'forget' all about conn->lchan_for_assignment"]; + bsc_gscon box bsc_gscon [label="'forget' all about conn->assignment.new_lchan"]; bsc_gscon => mgw_msc [label="BSSMAP Assignment Failure"]; --- [label="END: 'On Timeout'"]; ...; @@ -67,13 +67,13 @@ msc { ...; bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ACTIVE"]; - bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_COMPLETE\nT10, 6s"]; + bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_COMPLETE\nT10, 6s? T3107?"]; ms <= bsc_gscon [label="RR Assignment"]; ...; --- [label="On Timeout"]; bsc_gscon => mgw_msc [label="BSSMAP Assignment Failure"]; bsc_gscon -> bsc_lchan [label="LCHAN_EV_LCHAN_RELEASE"]; - bsc_gscon box bsc_gscon [label="'forget' all about conn->lchan_for_assignment"]; + bsc_gscon box bsc_gscon [label="'forget' all about conn->assignment.new_lchan"]; --- [label="IF assignment_created_mgw_endpoint == true"]; bsc_gscon -> bsc_mgcp [label="mgcp_conn_delete()"]; bsc_gscon note bsc_mgcp [label="If the MGW endpoint didn't exist before the Assignment, release @@ -84,7 +84,7 @@ msc { ...; ms => bsc_gscon [label="RR Assignment Complete"]; bsc_gscon -> bsc_lchan [label="OLD lchan: LCHAN_EV_LCHAN_RELEASE"]; - bsc_gscon box bsc_gscon [label="conn->lchan = conn->lchan_for_assignment"]; + bsc_gscon box bsc_gscon [label="conn->lchan = conn->assignment.new_lchan"]; --- [label="IF: chan_mode a speech mode?"]; bsc_gscon abox bsc_gscon [label="ST_WAIT_MDCX_BTS"]; bsc_gscon -> bsc_mgcp [label="mgcp_conn_modify()"]; diff --git a/doc/handover-inter-bsc-mo-fsm.dot b/doc/handover-inter-bsc-mo-fsm.dot new file mode 100644 index 000000000..2832d0f24 --- /dev/null +++ b/doc/handover-inter-bsc-mo-fsm.dot @@ -0,0 +1,26 @@ +digraph G { +rankdir=TB; + + invisible [style=invisible] + invisible -> mo [label="Measurement Report\nincluding neighbor\nBSS ARFCN",style=dashed] + mo [label="inter-BSC MO HO",shape=box]; + msc [label="msc",shape=box3d]; + new_bsc [label="new BSC",shape=box3d] + lchan [label="lchan",shape=box3d] + term [label="terminate",shape=box]; + + mo -> WAIT_HO_COMMAND [label="handover_start()"] + WAIT_HO_COMMAND -> msc [label="BSSMAP Handover\nRequired",style=dashed] + msc -> new_bsc [label="BSSMAP Handover\nRequest",style=dashed] + new_bsc -> msc [label="BSSMAP Handover\nRequest Ack",style=dashed] + msc -> WAIT_HO_COMMAND [label="BSSMAP Handover\nCommand",style=dashed] + + WAIT_HO_COMMAND -> lchan [label="RR Handover\nCommand\nfrom new BSC",style=dashed] + + WAIT_HO_COMMAND -> WAIT_CLEAR + msc -> WAIT_CLEAR [label="BSSMAP Clear Command",style=dashed] + + WAIT_CLEAR -> term + + +} diff --git a/doc/handover-inter-bsc-mt-fsm.dot b/doc/handover-inter-bsc-mt-fsm.dot new file mode 100644 index 000000000..82e101aea --- /dev/null +++ b/doc/handover-inter-bsc-mt-fsm.dot @@ -0,0 +1,42 @@ +digraph G { +rankdir=TB; + + mt [label="inter-BSC MT HO",shape=box]; + gscon [label="gscon FSM",shape=box3d]; + lchan [label="lchan FSM",shape=box3d]; + msc [label="msc",shape=box3d]; + old_bsc [label="old BSC",shape=box3d] + old_lchan [label="old lchan",shape=box3d] + term [label="terminate",shape=box]; + + invisible [style="invisible"] + + mt -> old_bsc [style=dashed] + old_bsc -> msc [label="BSSMAP Handover Required",style=dashed] + + invisible -> old_lchan [style=invisible,arrowhead=none] + msc -> gscon [label="BSSMAP Handover\nRequest",style=dashed] + gscon -> WAIT_LCHAN_ACTIVE [label="handover_start()",style=dashed] + WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate()\nFOR_HANDOVER",style=dashed] + lchan -> WAIT_LCHAN_ACTIVE [label="HO_EV_\nLCHAN_\nACTIVE,ERROR",style=dashed,constraint=false] + WAIT_LCHAN_ACTIVE -> WAIT_RR_HO_DETECT + + WAIT_RR_HO_DETECT -> msc [label="BSSMAP\nHandover\nAccept\nwith\nRR Handover\nCommand",style=dashed,constraint=false] + msc -> old_bsc -> old_lchan [label="RR Handover\nCommand",style=dashed] + + lchan -> WAIT_RR_HO_DETECT [label="RR Handover\nDetect",style=dashed] + WAIT_RR_HO_DETECT -> WAIT_RR_HO_COMPLETE + + lchan -> WAIT_RR_HO_COMPLETE [label="RR Handover\nComplete",style=dashed] + WAIT_RR_HO_COMPLETE -> WAIT_LCHAN_ESTABLISHED + lchan -> WAIT_LCHAN_ESTABLISHED [label="HO_EV_LCHAN_\nESTABLISHED",style=dashed] + + WAIT_LCHAN_ESTABLISHED -> term [label="non-TCH"] + WAIT_LCHAN_ESTABLISHED -> WAIT_MGW_ENDPOINT_TO_MSC + WAIT_MGW_ENDPOINT_TO_MSC -> term [label="handover_end()",style=dashed] + term -> msc [label="BSSMAP Handover\nComplete\n/ Failure",style=dashed,constraint=false] + + err [label="on error",shape=box,style=dashed] + err -> term + +} diff --git a/doc/handover-inter-bsc-mt.msc b/doc/handover-inter-bsc-mt.msc index 88a52daa7..43ab2a722 100644 --- a/doc/handover-inter-bsc-mt.msc +++ b/doc/handover-inter-bsc-mt.msc @@ -13,7 +13,7 @@ msc { bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_TS_READY"]; ...; --- [label="on no lchan, lchan FSM error or timeout"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; bsc_gscon box bsc_gscon [label="handover_end(fail)"]; bsc_gscon => mgw_msc [label="BSSMAP Handover Failure"]; ms note bsc_gscon [label="MS happily continues on the old lchan."]; @@ -39,7 +39,7 @@ msc { bsc_gscon -> bsc_lchan [label="LCHAN_EV_MGW_ENDPOINT_ERROR"]; bsc_lchan note bsc_gscon [label="conn FSM error handler exits and relies on the lchan FSM signalling error, which should actually happen immediately:"]; - bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ERROR"]; bsc_gscon -> bsc_mgcp [label="mgcp_conn_delete()"]; bsc_gscon box bsc_gscon [label="handover_end(fail)"]; bsc_gscon => mgw_msc [label="BSSMAP Handover Failure"]; @@ -86,7 +86,7 @@ msc { this:"]; bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_RLL_ESTABLISH"]; ms => bsc_lchan [label="RLL Establish Ind"]; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_ACTIVE"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_ESTABLISHED"]; bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ACTIVE"]; bsc_gscon abox bsc_gscon [label="ST_HANDOVER_MT_\nWAIT_HO_ACCEPT\nsanity timer?"]; bsc_gscon box bsc_gscon [label="Compose RR Handover Command"]; diff --git a/doc/handover-intra-bsc-fsm.dot b/doc/handover-intra-bsc-fsm.dot new file mode 100644 index 000000000..4eb25617c --- /dev/null +++ b/doc/handover-intra-bsc-fsm.dot @@ -0,0 +1,27 @@ +digraph G { +rankdir=TB; + + lchan [label="lchan FSM",shape=box3d]; + intra [label="intra-BSC HO",shape=box]; + old_lchan [label="old lchan",shape=box3d]; + term [label="terminate",shape=box]; + + invisible [style="invisible"] + invisible -> intra [style=invisible,arrowhead=none] + invisible -> old_lchan [style=invisible,arrowhead=none] + + intra -> WAIT_LCHAN_ACTIVE [label="handover_start()",style=dashed] + WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate(FOR_HANDOVER)",style=dashed] + lchan -> WAIT_LCHAN_ACTIVE [label="HO_EV_\nLCHAN_\nACTIVE,ERROR",style=dashed,constraint=false] + WAIT_LCHAN_ACTIVE -> WAIT_RR_HO_DETECT + WAIT_RR_HO_DETECT -> old_lchan [label="RR Handover\nCommand",style=dashed,constraint=false] + + lchan -> WAIT_RR_HO_DETECT [label="RR Handover\nDetect",style=dashed] + WAIT_RR_HO_DETECT -> WAIT_RR_HO_COMPLETE + + lchan -> WAIT_RR_HO_COMPLETE [label="RR Handover\nComplete",style=dashed] + WAIT_RR_HO_COMPLETE -> WAIT_LCHAN_ESTABLISHED + lchan -> WAIT_LCHAN_ESTABLISHED [label="HO_EV_LCHAN_\nESTABLISHED",style=dashed] + + WAIT_LCHAN_ESTABLISHED -> term [label="handover_end()",style=dashed] +} diff --git a/doc/handover.msc b/doc/handover.msc index 7529de602..b4307a831 100644 --- a/doc/handover.msc +++ b/doc/handover.msc @@ -13,7 +13,7 @@ msc { bsc_lchan <- bsc_gscon [label="lchan_activate(lchan, FOR_HANDOVER)"]; ...; --- [label="on lchan FSM error or timeout"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; bsc_gscon box bsc_gscon [label="handover_end(fail)"]; ms note bsc_gscon [label="MS happily continues on the old lchan."]; bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; @@ -43,7 +43,7 @@ msc { bsc_gscon -> bsc_lchan [label="LCHAN_EV_MGW_ENDPOINT_ERROR"]; bsc_lchan note bsc_gscon [label="conn FSM error handler exits and relies on the lchan FSM signalling error, which should actually happen immediately:"]; - bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ERROR"]; bsc_gscon box bsc_gscon [label="handover_end(fail)"]; --- [label="IF handover_created_mgw_endpoint == true"]; bsc_gscon -> bsc_mgcp [label="mgcp_conn_delete()"]; diff --git a/doc/lchan-fsm.dot b/doc/lchan-fsm.dot index dbb283cd1..bc696aac6 100644 --- a/doc/lchan-fsm.dot +++ b/doc/lchan-fsm.dot @@ -4,12 +4,13 @@ rankdir=TB; invisible [style="invisible"] UNUSED [penwidth=3.0] WAIT_TS_READY - WAIT_MGW_ENDPOINT_AVAILABLE WAIT_ACTIV_ACK + WAIT_MGW_ENDPOINT_AVAILABLE WAIT_IPACC_CRCX_ACK WAIT_IPACC_MDCX_ACK + WAIT_MGW_ENDPOINT_CONFIGURED WAIT_RLL_ESTABLISH - ACTIVE [penwidth=3.0] + ESTABLISHED [penwidth=3.0] WAIT_SAPIS_RELEASED WAIT_BEFORE_RF_RELEASE WAIT_RF_RELEASE_ACK @@ -17,20 +18,21 @@ rankdir=TB; BORKEN ts [label="timeslot FSM",shape=box3d]; - gscon [label="conn FSM",shape=box3d]; + mgwep [label="mgw endpoint\nFSM",shape=box3d]; UNUSED -> WAIT_TS_READY [label="lchan_allocate()"] WAIT_TS_READY -> WAIT_ACTIV_ACK WAIT_ACTIV_ACK -> WAIT_RLL_ESTABLISH WAIT_RLL_ESTABLISH -> WAIT_MGW_ENDPOINT_AVAILABLE [label="TCH"] WAIT_MGW_ENDPOINT_AVAILABLE -> WAIT_IPACC_CRCX_ACK [label="IPACC BTS"] - WAIT_MGW_ENDPOINT_AVAILABLE -> ACTIVE + WAIT_MGW_ENDPOINT_AVAILABLE -> WAIT_MGW_ENDPOINT_CONFIGURED WAIT_IPACC_CRCX_ACK -> WAIT_IPACC_MDCX_ACK - WAIT_IPACC_MDCX_ACK -> ACTIVE - WAIT_RLL_ESTABLISH -> ACTIVE [label="non-TCH"]; + WAIT_IPACC_MDCX_ACK -> WAIT_MGW_ENDPOINT_CONFIGURED + WAIT_MGW_ENDPOINT_CONFIGURED -> ESTABLISHED + WAIT_RLL_ESTABLISH -> ESTABLISHED [label="non-TCH"]; WAIT_RLL_ESTABLISH -> WAIT_RF_RELEASE_ACK [label="timeout",style=dashed,constraint=false] - ACTIVE -> WAIT_SAPIS_RELEASED [label="LCHAN_EV_\nRELEASE"] + ESTABLISHED -> WAIT_SAPIS_RELEASED [label="LCHAN_EV_\nRELEASE"] WAIT_SAPIS_RELEASED -> WAIT_BEFORE_RF_RELEASE WAIT_SAPIS_RELEASED -> WAIT_RF_RELEASE_ACK [label="timeout",style=dashed,constraint=false] @@ -45,9 +47,9 @@ rankdir=TB; WAIT_TS_READY -> UNUSED [label="error/timeout",style=dashed,constraint=false] {WAIT_ACTIV_ACK,WAIT_RF_RELEASE_ACK} -> BORKEN [label="error/timeout",style=dashed] - {WAIT_MGW_ENDPOINT_AVAILABLE,WAIT_IPACC_CRCX_ACK,WAIT_IPACC_MDCX_ACK} -> WAIT_SAPIS_RELEASED [label=error,style=dashed] + {WAIT_MGW_ENDPOINT_AVAILABLE,WAIT_IPACC_CRCX_ACK,WAIT_IPACC_MDCX_ACK,WAIT_MGW_ENDPOINT_CONFIGURED} -> WAIT_SAPIS_RELEASED [label=error,style=dashed] - WAIT_TS_READY -> gscon [label="GSCON_EV_\nENSURE_\nMGW_ENDPOINT",style=dotted] - gscon -> WAIT_MGW_ENDPOINT_AVAILABLE [label="LCHAN_EV_\nMGW_ENDPOINT_\n{AVAILABLE,ERROR}",style=dotted] + WAIT_TS_READY -> mgwep [label="CRCX",style=dotted] + mgwep -> WAIT_MGW_ENDPOINT_AVAILABLE [label="LCHAN_EV_\nMGW_ENDPOINT_\n{AVAILABLE,ERROR}",style=dotted] } diff --git a/doc/lchan-release.msc b/doc/lchan-release.msc index 017c9cf05..9b2a69120 100644 --- a/doc/lchan-release.msc +++ b/doc/lchan-release.msc @@ -6,7 +6,7 @@ msc { ms note bsc_gscon [label="various lchan release scenarios"]; ms rbox msc_ [label="MSC releases"]; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_ACTIVE"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_ESTABLISHED"]; bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; bsc_gscon <= msc_ [label="BSSMAP Clear Command"]; bsc_gscon abox bsc_gscon [label="ST_CLEARING"]; diff --git a/doc/lchan.msc b/doc/lchan.msc index 9b7d663c4..3112f24c5 100644 --- a/doc/lchan.msc +++ b/doc/lchan.msc @@ -72,7 +72,7 @@ msc { bsc_gscon note bsc_gscon [label="conn FSM should fire on CRCX timeout"]; bsc_lchan <- bsc_gscon [label="LCHAN_EV_MGW_ENDPOINT_ERROR"]; bsc_gscon note bsc_gscon [label="conn FSM should not assume anything and wait for - GSCON_EV_LCHAN_ALLOC_ERROR"]; + GSCON_EV_LCHAN_ERROR"]; bsc_lchan rbox bsc_lchan [label="Do 'On any error'"]; bsc_lchan abox bsc_lchan [label="LCHAN_ST_UNUSED"]; bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_UNUSED"]; @@ -125,7 +125,7 @@ msc { ---; ...; bts => bsc_lchan [label="RLL Establish Ind"]; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_ACTIVE"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_ESTABLISHED"]; |||; |||; bts rbox mgw_msc [label="modes FOR_ASSIGNMENT and FOR_HANDOVER"]; @@ -142,7 +142,7 @@ msc { bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_\nRLL_ESTABLISH\nT3101"]; ...; --- [label="on timeout"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; bsc_lchan -> bsc_lchan [label="lchan_fsm_pre_rf_release()"]; ---; ...; @@ -166,7 +166,7 @@ msc { bts <= bsc_lchan [label="IPACC CRCX"]; ...; --- [label="on timeout"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; bsc_lchan -> bsc_lchan [label="lchan_graceful_release()"]; ---; ...; @@ -182,14 +182,14 @@ msc { this; SCCPlite: the RTP port is already known from the timeslot+multiplex information."]; ...; --- [label="on timeout"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; bsc_lchan -> bsc_lchan [label="lchan_graceful_release()"]; ---; ...; bts => bsc_lchan [label="IPACC MDCX ACK"]; --- [label="END: is BTS using IPA Abis? (osmo-bts, ip.access)"]; |||; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_ACTIVE"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_ESTABLISHED"]; bsc_lchan box bsc_lchan [label="lchan_fsm_post_lchan_activ()"]; bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ACTIVE"]; bts <= bsc_gscon [label="RR Assignment",ID="BSSMAP Assignment Request"]; @@ -288,7 +288,7 @@ msc { bts <= bsc_lchan [label="RR Immediate Assign Reject"]; |||; --- [label="IF FOR_ASSIGNMENT or FOR_HANDOVER"]; - bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"]; + bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"]; bsc_gscon note bsc_gscon [label="conn FSM shall immediately 'forget' the lchan"]; bsc_gscon => mgw_msc [label="BSSMAP\nAssignment Failure",ID=FOR_ASSIGNMENT]; bsc_gscon => mgw_msc [label="BSSMAP\nHandover Failure",ID="inter-BSC-MT HO"]; diff --git a/doc/mgw-endpoint-fsm.dot b/doc/mgw-endpoint-fsm.dot new file mode 100644 index 000000000..8ad2e4a1f --- /dev/null +++ b/doc/mgw-endpoint-fsm.dot @@ -0,0 +1,22 @@ +digraph G { +rankdir=TB; + UNUSED + WAIT_MGW_RESPONSE + IN_USE + WAIT_DLCX_ALL + terminate [shape=box] + + other [label="other FSM",shape=box3d] + other -> UNUSED [label="mgw_{crcx,mdcx}_{bts,msc}()",style=dashed] + + UNUSED -> WAIT_MGW_RESPONSE + WAIT_MGW_RESPONSE -> IN_USE + IN_USE -> {WAIT_MGW_RESPONSE,WAIT_DLCX_ALL} + + other2 [label="other FSM",shape=box3d] + other2 -> IN_USE [label="mgw_{crcx,mdcx,dlcx}_{bts,msc}()",style=dashed] + WAIT_DLCX_ALL -> terminate + + IN_USE -> other2 [label="OTHER_EV_*",style=dashed] + IN_USE -> UNUSED [label="last DLCX"] +} diff --git a/doc/ms-channel-request.msc b/doc/ms-channel-request.msc index 1c5b4bfb3..d1aaaa026 100644 --- a/doc/ms-channel-request.msc +++ b/doc/ms-channel-request.msc @@ -27,7 +27,7 @@ msc { bsc box bsc [label="Store RACH data in lchan->rqd_ref, rqd_ta"]; bsc -> bsc_lchan [label="lchan_allocate(FOR_MS_CHANNEL_REQUEST)"]; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_ACTIV_ACK\nT3103"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_ACTIV_ACK\nT3101"]; bsc_lchan note bsc_lchan [label="The lchan FSM knows that FOR_MS_CHANNEL_REQUEST is about Immediate Assignment."]; bts <= bsc_lchan [label="RSL Chan Activ (Immediate Assignment)"]; @@ -55,5 +55,5 @@ msc { ---; ms => bsc_lchan [label="RLL Establish Ind"]; bsc_lchan box bsc_lchan [label="associate lchan FSM with new conn FSM"]; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_ACTIVE"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_ESTABLISHED"]; } diff --git a/doc/ts-and-lchan-fsm-lifecycle.msc b/doc/ts-and-lchan-fsm-lifecycle.msc index 79d32c530..90c45402a 100644 --- a/doc/ts-and-lchan-fsm-lifecycle.msc +++ b/doc/ts-and-lchan-fsm-lifecycle.msc @@ -71,7 +71,7 @@ msc { bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_READY"]; bsc_lchan note bsc_lchan [label="RSL Chan Alloc and so fort..."]; - bsc_lchan abox bsc_lchan [label="LCHAN_ST_ACTIVE"]; + bsc_lchan abox bsc_lchan [label="LCHAN_ST_ESTABLISHED"]; ...; bsc -> bsc_lchan [label="LCHAN_EV_RELEASE"]; bsc_lchan note bsc_lchan [label="...RSL RF Chan Release..."]; -- cgit v1.2.3