diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-28 14:29:49 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-06-08 16:16:42 +0000 |
commit | 44fcc9f11e80cd4ae0811dc41f8201c5d95dea6b (patch) | |
tree | 91580d1ddbea6927bb77776370f72b725eed1d88 /doc/timeslot.msc | |
parent | c4bb31dcad3b0bedd6f1ad89d99ada71be55f06d (diff) |
doc: charts: illustrate new plan for ts and lchans
Add lchan and timeslot FSM charts to illustrate planning of how osmo-bsc should
handle lchan assignment and release.
Modify assignment, handover, lchan-release charts according to the new plan.
Change-Id: I18d60de5ee932c962aad0a532965a55d570bb936
Diffstat (limited to 'doc/timeslot.msc')
-rw-r--r-- | doc/timeslot.msc | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/doc/timeslot.msc b/doc/timeslot.msc new file mode 100644 index 000000000..9a8c36075 --- /dev/null +++ b/doc/timeslot.msc @@ -0,0 +1,98 @@ +msc { + hscale=2; + bts [label="MS/BTS"], bsc[label="BSC"], bsc_ts[label="BSC timeslot FSM"], bsc_lchan[label="BSC lchan FSM"]; + + bsc_ts abox bsc_ts [label="NOT_INITIALIZED (no timeout)"]; + + ...; + bsc note bsc_ts [label="OML and RSL may be established in any order"]; + bts => bsc_ts [label="OML: Channel OPSTART ACK"]; + bsc -> bsc_ts [label="RSL bootstrapped"]; + bsc_ts abox bsc_ts [label="UNUSED (no timeout)"]; + + |||; + bts rbox bsc_lchan [label="UNUSED, onenter"]; + bsc_ts abox bsc_ts [label="UNUSED"]; + --- [label="GPRS enabled?"]; + --- [label="IF: dedicated PDCH?"]; + bsc_ts abox bsc_ts [label="PDCH (no timeout)"]; + + |||; + --- [label="IF: dynamic timeslot"]; + bsc_ts abox bsc_ts [label="WAIT_PDCH_ACT (?s, Tnnnn)"]; + bts <= bsc_ts [label="RSL Chan Activ of PDCH",ID="Osmocom style"]; + bts <= bsc_ts [label="RSL PDCH Act",ID="ip.access style"]; + ...; + --- [label="timeout:"]; + bsc_ts abox bsc_ts [label="BORKEN"]; + ---; + ...; + bts => bsc_ts [label="RSL RF Chan Activ ACK",ID="Osmocom style"]; + bts => bsc_ts [label="RSL PDCH Act ACK",ID="ip.access style"]; + bsc_ts abox bsc_ts [label="PDCH (no timeout)"]; + + --- [label="END: GPRS enabled?"]; + ...; + ...; + + bts rbox bsc_lchan [label="UNUSED, on event"]; + bsc_ts abox bsc_ts [label="UNUSED"]; + bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_REQUESTED (data=lchan)"]; + bsc_ts abox bsc_ts [label="IN_USE"]; + bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_READY"]; + bts <= bsc_lchan [label="RSL Chan Activ (and so on)"]; + ...; + bts rbox bsc_lchan [label="IN_USE, second lchan"]; + bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_REQUESTED (data=lchan)"]; + bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_READY"]; + bts <= bsc_lchan [label="RSL Chan Activ (and so on)"]; + ...; + ...; + bts rbox bsc_lchan [label="IN_USE, when lchan FSM releases (both regularly, or due to error)"]; + bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_UNUSED (data=lchan)"]; + --- [label="IF all lchan->fi->state == LCHAN_ST_UNUSED"]; + bsc_ts abox bsc_ts [label="UNUSED"]; + ---; + ...; + ...; + + + bts rbox bsc_lchan [label="PDCH on lchan request"]; + bsc_ts note bsc_lchan [label="TS_EV_LCHAN_REQUESTED should only come in on + lchans where it makes sense, both from TS kind as well as not + conflicting with other users of the lchan."]; + + bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_REQUESTED"]; + bsc_ts abox bsc_ts [label="WAIT_PDCH_DEACT (?s, Tnnnn)"]; + bts <= bsc_ts [label="RSL RF Chan Release of PDCH",ID="Osmocom style"]; + bts <= bsc_ts [label="RSL PDCH Deact",ID="ip.access style"]; + ...; + --- [label="timeout:"]; + bsc_ts abox bsc_ts [label="BORKEN"]; + bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_ERROR"]; + ---; + ...; + bts => bsc_ts [label="RSL RF Chan Release ACK",ID="Osmocom style"]; + bts => bsc_ts [label="RSL PDCH Deact ACK",ID="ip.access style"]; + --- [label="IF all lchan->fi->state == LCHAN_ST_UNUSED"]; + bsc_ts note bsc_lchan [label="If the lchan FSM decided to give up in the + meantime, nr of active lchans might have dropped back to zero."]; + bsc_ts abox bsc_ts [label="UNUSED"]; + bsc_ts note bsc_ts [label="onenter at UNUSED state will trigger back to + PDCH mode"]; + |||; + --- [label="IF at least one lchan->state != LCHAN_ST_UNUSED"]; + bsc_ts abox bsc_ts [label="IN_USE"]; + bsc_ts rbox bsc_ts [label="Continue at 'IN_USE' above"]; + ...; + ...; + + bts rbox bsc_lchan [label="on erratic event"]; + bsc_ts -> bsc_lchan [label="LCHAN_EV_TS_ERROR"]; + bsc_lchan box bsc_lchan [label="release lchan"]; + ...; + bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_UNUSED"]; + bsc_ts note bsc_ts [label="log error but ignore"]; + ...; + +} |