blob: fe35903f7a9fc36e85bf67041bc4e29c75acc56d [file] [log] [blame]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02001digraph G {
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +02002rankdir=TB
3labelloc=t; label="lchan FSM"
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02004
5 invisible [style="invisible"]
6 UNUSED [penwidth=3.0]
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +02007 ESTABLISHED [penwidth=3.0]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02008
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +02009 ts [label="timeslot FSM",shape=box3d]
10 rtp [label="lchan_rtp\nFSM",shape=box3d]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020011
12 UNUSED -> WAIT_TS_READY [label="lchan_allocate()"]
13 WAIT_TS_READY -> WAIT_ACTIV_ACK
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020014 WAIT_ACTIV_ACK -> WAIT_RLL_RTP_ESTABLISH
15 WAIT_RLL_RTP_ESTABLISH -> ESTABLISHED
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020016
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020017 ESTABLISHED -> WAIT_RLL_RTP_RELEASED [label="LCHAN_EV_\nRELEASE"]
18 WAIT_RLL_RTP_RELEASED -> WAIT_BEFORE_RF_RELEASE
19 WAIT_RLL_RTP_RELEASED -> WAIT_RF_RELEASE_ACK [label="timeout",style=dashed,constraint=false]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020020
21 WAIT_BEFORE_RF_RELEASE -> WAIT_RF_RELEASE_ACK [label="T3111"]
22 WAIT_RF_RELEASE_ACK -> UNUSED
23 WAIT_RF_RELEASE_ACK -> WAIT_AFTER_ERROR [label="release was\ndue to error"]
24 WAIT_AFTER_ERROR -> UNUSED [label="T3111+2s"]
25
26 WAIT_TS_READY -> ts [label="TS_EV_\nLCHAN_\nREQUESTED",style=dotted,penwidth=3]
27 UNUSED -> ts [label="TS_EV_\nLCHAN_\nUNUSED",style=dotted,penwidth=3]
28 ts -> WAIT_TS_READY [label="LCHAN_EV_\nTS_READY",style=dotted]
29
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020030 WAIT_TS_READY -> rtp [label="TCH",style=dotted]
31
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020032 WAIT_TS_READY -> UNUSED [label="error/timeout",style=dashed,constraint=false]
33 {WAIT_ACTIV_ACK,WAIT_RF_RELEASE_ACK} -> BORKEN [label="error/timeout",style=dashed]
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020034 BORKEN -> WAIT_AFTER_ERROR [label="late RF Release ACK"]
35 WAIT_RLL_RTP_ESTABLISH -> WAIT_RLL_RTP_RELEASED [label=error,style=dashed]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020036
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020037 WAIT_ACTIV_ACK -> rtp [label="LCHAN_RTP_EV_LCHAN_READY",style=dotted]
38 rtp -> WAIT_RLL_RTP_ESTABLISH [label="LCHAN_EV_RTP_READY",style=dotted]
39 rtp -> ESTABLISHED [label="LCHAN_EV_RTP_RELEASED",style=dotted]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020040
Philipp Maier92eed412020-08-21 20:47:49 +020041 ESTABLISHED -> WAIT_RR_CHAN_MODE_MODIFY_ACK [label="LCHAN_EV_REQUEST_MODE_MODIFY"]
42 WAIT_RR_CHAN_MODE_MODIFY_ACK -> WAIT_RSL_CHAN_MODE_MODIFY_ACK [label="LCHAN_EV_RR_CHAN_MODE_MODIFY_ACK"]
43 WAIT_RSL_CHAN_MODE_MODIFY_ACK -> WAIT_RLL_RTP_ESTABLISH [label="LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK\nwhen adding RTP"]
44 WAIT_RSL_CHAN_MODE_MODIFY_ACK -> ESTABLISHED [label="LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK\nno change to RTP"]
45 WAIT_RR_CHAN_MODE_MODIFY_ACK -> BORKEN [label="error/timeout",style=dashed]
46 WAIT_RSL_CHAN_MODE_MODIFY_ACK -> BORKEN [label="error/timeout",style=dashed]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020047}