blob: 02e7bb3ea555f0f482047a7889e1f4a13c26bf54 [file] [log] [blame]
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02001msc {
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02002 bts [label="MS/BTS"], bsc[label="BSC"], bsc_ts[label="BSC timeslot FSM"], bsc_lchan[label="BSC lchan FSM"];
3
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +02004 bsc_ts abox bsc_ts [label="NOT_INITIALIZED"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +02005
6 ...;
7 bsc note bsc_ts [label="OML and RSL may be established in any order"];
8 bts => bsc_ts [label="OML: Channel OPSTART ACK"];
9 bsc -> bsc_ts [label="RSL bootstrapped"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020010 bsc_ts abox bsc_ts [label="UNUSED"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020011
12 |||;
13 bts rbox bsc_lchan [label="UNUSED, onenter"];
14 bsc_ts abox bsc_ts [label="UNUSED"];
15 --- [label="GPRS enabled?"];
16 --- [label="IF: dedicated PDCH?"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020017 bsc_ts abox bsc_ts [label="PDCH"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020018
19 |||;
20 --- [label="IF: dynamic timeslot"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020021 bsc_ts abox bsc_ts [label="WAIT_PDCH_ACT (4s, T23001)"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020022 bts <= bsc_ts [label="RSL Chan Activ of PDCH",ID="Osmocom style"];
23 bts <= bsc_ts [label="RSL PDCH Act",ID="ip.access style"];
24 ...;
25 --- [label="timeout:"];
26 bsc_ts abox bsc_ts [label="BORKEN"];
27 ---;
28 ...;
29 bts => bsc_ts [label="RSL RF Chan Activ ACK",ID="Osmocom style"];
30 bts => bsc_ts [label="RSL PDCH Act ACK",ID="ip.access style"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020031 bsc_ts abox bsc_ts [label="PDCH"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020032
33 --- [label="END: GPRS enabled?"];
34 ...;
35 ...;
36
37 bts rbox bsc_lchan [label="UNUSED, on event"];
38 bsc_ts abox bsc_ts [label="UNUSED"];
39 bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_REQUESTED (data=lchan)"];
40 bsc_ts abox bsc_ts [label="IN_USE"];
41 bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_READY"];
42 bts <= bsc_lchan [label="RSL Chan Activ (and so on)"];
43 ...;
44 bts rbox bsc_lchan [label="IN_USE, second lchan"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020045 bsc_ts abox bsc_ts [label="IN_USE"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020046 bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_REQUESTED (data=lchan)"];
47 bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_READY"];
48 bts <= bsc_lchan [label="RSL Chan Activ (and so on)"];
49 ...;
50 ...;
51 bts rbox bsc_lchan [label="IN_USE, when lchan FSM releases (both regularly, or due to error)"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020052 bsc_ts abox bsc_ts [label="IN_USE"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020053 bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_UNUSED (data=lchan)"];
54 --- [label="IF all lchan->fi->state == LCHAN_ST_UNUSED"];
55 bsc_ts abox bsc_ts [label="UNUSED"];
56 ---;
57 ...;
58 ...;
59
60
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020061 bts rbox bsc_lchan [label="PDCH, on lchan request"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020062 bsc_ts note bsc_lchan [label="TS_EV_LCHAN_REQUESTED should only come in on
63 lchans where it makes sense, both from TS kind as well as not
64 conflicting with other users of the lchan."];
65
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020066 bsc_ts abox bsc_ts [label="PDCH"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020067 bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_REQUESTED"];
Neels Hofmeyr3b5de1b2018-06-16 16:08:55 +020068 bsc_ts abox bsc_ts [label="WAIT_PDCH_DEACT (4s, T23001)"];
Neels Hofmeyr44fcc9f2018-05-28 14:29:49 +020069 bts <= bsc_ts [label="RSL RF Chan Release of PDCH",ID="Osmocom style"];
70 bts <= bsc_ts [label="RSL PDCH Deact",ID="ip.access style"];
71 ...;
72 --- [label="timeout:"];
73 bsc_ts abox bsc_ts [label="BORKEN"];
74 bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_ERROR"];
75 ---;
76 ...;
77 bts => bsc_ts [label="RSL RF Chan Release ACK",ID="Osmocom style"];
78 bts => bsc_ts [label="RSL PDCH Deact ACK",ID="ip.access style"];
79 --- [label="IF all lchan->fi->state == LCHAN_ST_UNUSED"];
80 bsc_ts note bsc_lchan [label="If the lchan FSM decided to give up in the
81 meantime, nr of active lchans might have dropped back to zero."];
82 bsc_ts abox bsc_ts [label="UNUSED"];
83 bsc_ts note bsc_ts [label="onenter at UNUSED state will trigger back to
84 PDCH mode"];
85 |||;
86 --- [label="IF at least one lchan->state != LCHAN_ST_UNUSED"];
87 bsc_ts abox bsc_ts [label="IN_USE"];
88 bsc_ts rbox bsc_ts [label="Continue at 'IN_USE' above"];
89 ...;
90 ...;
91
92 bts rbox bsc_lchan [label="on erratic event"];
93 bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_ERROR"];
94 bsc_lchan box bsc_lchan [label="release lchan"];
95 ...;
96 bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_UNUSED"];
97 bsc_ts note bsc_ts [label="log error but ignore"];
98 ...;
99
100}