aboutsummaryrefslogtreecommitdiffstats
path: root/doc/lchan-fsm.dot
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-05-28 14:29:49 +0200
committerHarald Welte <laforge@gnumonks.org>2018-06-08 16:16:42 +0000
commit44fcc9f11e80cd4ae0811dc41f8201c5d95dea6b (patch)
tree91580d1ddbea6927bb77776370f72b725eed1d88 /doc/lchan-fsm.dot
parentc4bb31dcad3b0bedd6f1ad89d99ada71be55f06d (diff)
doc: charts: illustrate new plan for ts and lchans
Add lchan and timeslot FSM charts to illustrate planning of how osmo-bsc should handle lchan assignment and release. Modify assignment, handover, lchan-release charts according to the new plan. Change-Id: I18d60de5ee932c962aad0a532965a55d570bb936
Diffstat (limited to 'doc/lchan-fsm.dot')
-rw-r--r--doc/lchan-fsm.dot53
1 files changed, 53 insertions, 0 deletions
diff --git a/doc/lchan-fsm.dot b/doc/lchan-fsm.dot
new file mode 100644
index 000000000..dbb283cd1
--- /dev/null
+++ b/doc/lchan-fsm.dot
@@ -0,0 +1,53 @@
+digraph G {
+rankdir=TB;
+
+ invisible [style="invisible"]
+ UNUSED [penwidth=3.0]
+ WAIT_TS_READY
+ WAIT_MGW_ENDPOINT_AVAILABLE
+ WAIT_ACTIV_ACK
+ WAIT_IPACC_CRCX_ACK
+ WAIT_IPACC_MDCX_ACK
+ WAIT_RLL_ESTABLISH
+ ACTIVE [penwidth=3.0]
+ WAIT_SAPIS_RELEASED
+ WAIT_BEFORE_RF_RELEASE
+ WAIT_RF_RELEASE_ACK
+ WAIT_AFTER_ERROR
+ BORKEN
+
+ ts [label="timeslot FSM",shape=box3d];
+ gscon [label="conn FSM",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_IPACC_CRCX_ACK -> WAIT_IPACC_MDCX_ACK
+ WAIT_IPACC_MDCX_ACK -> ACTIVE
+ WAIT_RLL_ESTABLISH -> ACTIVE [label="non-TCH"];
+ WAIT_RLL_ESTABLISH -> WAIT_RF_RELEASE_ACK [label="timeout",style=dashed,constraint=false]
+
+ ACTIVE -> 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]
+
+ WAIT_BEFORE_RF_RELEASE -> WAIT_RF_RELEASE_ACK [label="T3111"]
+ WAIT_RF_RELEASE_ACK -> UNUSED
+ WAIT_RF_RELEASE_ACK -> WAIT_AFTER_ERROR [label="release was\ndue to error"]
+ WAIT_AFTER_ERROR -> UNUSED [label="T3111+2s"]
+
+ WAIT_TS_READY -> ts [label="TS_EV_\nLCHAN_\nREQUESTED",style=dotted,penwidth=3]
+ UNUSED -> ts [label="TS_EV_\nLCHAN_\nUNUSED",style=dotted,penwidth=3]
+ ts -> WAIT_TS_READY [label="LCHAN_EV_\nTS_READY",style=dotted]
+
+ 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_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]
+
+}