Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 1 | digraph G { |
Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 2 | rankdir=TB |
| 3 | labelloc=t; label="lchan FSM" |
Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 4 | |
| 5 | invisible [style="invisible"] |
| 6 | UNUSED [penwidth=3.0] |
Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 7 | ESTABLISHED [penwidth=3.0] |
Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 8 | |
Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 9 | ts [label="timeslot FSM",shape=box3d] |
| 10 | rtp [label="lchan_rtp\nFSM",shape=box3d] |
Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 11 | |
| 12 | UNUSED -> WAIT_TS_READY [label="lchan_allocate()"] |
| 13 | WAIT_TS_READY -> WAIT_ACTIV_ACK |
Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 14 | WAIT_ACTIV_ACK -> WAIT_RLL_RTP_ESTABLISH |
| 15 | WAIT_RLL_RTP_ESTABLISH -> ESTABLISHED |
Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 16 | |
Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 17 | 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 Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 20 | |
| 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 Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 30 | WAIT_TS_READY -> rtp [label="TCH",style=dotted] |
| 31 | |
Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 32 | 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 Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 34 | BORKEN -> WAIT_AFTER_ERROR [label="late RF Release ACK"] |
| 35 | WAIT_RLL_RTP_ESTABLISH -> WAIT_RLL_RTP_RELEASED [label=error,style=dashed] |
Neels Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 36 | |
Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame] | 37 | 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 Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 40 | |
Philipp Maier | 92eed41 | 2020-08-21 20:47:49 +0200 | [diff] [blame] | 41 | 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 Hofmeyr | 44fcc9f | 2018-05-28 14:29:49 +0200 | [diff] [blame] | 47 | } |