aboutsummaryrefslogtreecommitdiffstats
path: root/doc/lchan-fsm.dot
blob: b8e348e21b7b80ee758d4afcc4930ac0bd94da3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
digraph G {
rankdir=TB;
	
	invisible [style="invisible"]
	UNUSED [penwidth=3.0]
	WAIT_TS_READY
	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]
	WAIT_SAPIS_RELEASED
	WAIT_BEFORE_RF_RELEASE
	WAIT_RF_RELEASE_ACK
	WAIT_AFTER_ERROR
	BORKEN
	
	ts [label="timeslot 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 -> WAIT_MGW_ENDPOINT_CONFIGURED
	WAIT_IPACC_CRCX_ACK -> WAIT_IPACC_MDCX_ACK
	WAIT_IPACC_MDCX_ACK -> WAIT_MGW_ENDPOINT_CONFIGURED
	WAIT_MGW_ENDPOINT_CONFIGURED -> 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_MGW_ENDPOINT_CONFIGURED} -> WAIT_SAPIS_RELEASED [label=error,style=dashed]

	WAIT_TS_READY -> mgwep [label="CRCX",style=dotted]
	mgwep -> WAIT_MGW_ENDPOINT_AVAILABLE [label="LCHAN_EV_\nMGW_ENDPOINT_\n{AVAILABLE,ERROR}",style=dotted]

}