blob: 95a4e1f437e615f49b69ddf0cb49b22bd62e0764 [file] [log] [blame]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02001digraph G {
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +02002rankdir=TB
3labelloc=t; label="Timeslot FSM"
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02004
5 invisible [style="invisible"]
6 invisible2 [style="invisible"]
7 NOT_INITIALIZED
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +02008 lchan [label="lchan FSM",shape=box3d]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02009 UNUSED
10 IN_USE
11 BORKEN
12 PDCH
13 WAIT_PDCH_ACT
14 WAIT_PDCH_DEACT
15
16 invisible -> NOT_INITIALIZED [label="OML\nOpstart ACK",style=dotted]
17 invisible2 -> NOT_INITIALIZED [label="RSL\nbootstrapped",style=dotted]
18
19 NOT_INITIALIZED -> UNUSED [label="OML+RSL ready"]
20
21 UNUSED -> IN_USE [label="first\nlchan\nrequested\nby lchan\nFSM"]
22 IN_USE -> UNUSED [label="last lchan\nunused"]
23
24 UNUSED -> PDCH [label="onenter:\ndedicated PDCH\nand GPRS\nis enabled"]
25 UNUSED -> WAIT_PDCH_ACT [label="onenter:\ndyn TS\nand GPRS\nis enabled"]
26 WAIT_PDCH_ACT -> PDCH [label="dyn TS:\nPDCH activated"]
27
28 PDCH -> WAIT_PDCH_DEACT [label="dyn TS:\nlchan of specific\npchan requested"]
29 WAIT_PDCH_DEACT -> UNUSED [label="lchan\nunused\n(e.g. error)",style=dashed]
30 WAIT_PDCH_DEACT -> IN_USE [label="dyn TS:\nPDCH released"]
31
32 lchan -> {UNUSED} [label="TS_EV_LCHAN_\nREQUESTED",style=dotted]
33 {IN_USE} -> lchan [label="LCHAN_EV_\nTS_READY",style=dotted]
34 lchan -> IN_USE [label="TS_EV_LCHAN_\nUNUSED",style=dotted]
35
36 {WAIT_PDCH_ACT,WAIT_PDCH_DEACT} -> BORKEN [label=timeout,style=dashed]
37}