| msc { |
| hscale=2; |
| ms [label="MS via BTS"], bsc_lchan[label="BSC lchan FSM"], bsc_gscon[label="BSC conn FSM"], |
| msc_[label="MSC"]; |
| |
| ms note msc_ [label="inter-BSC Handover to another BSS"]; |
| |
| bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; |
| bsc_gscon box bsc_gscon [label="bsc_handover_start(): init conn->ho"]; |
| bsc_gscon -> bsc_gscon [label="GSCON_EV_HO_START (inter-BSC MO)"]; |
| bsc_gscon abox bsc_gscon [label="ST_HANDOVER_MO_\nWAIT_HO_CMD\nT7"]; |
| bsc_gscon => msc_ [label="BSSMAP Handover Required"]; |
| ...; |
| --- [label="On Timeout"]; |
| ms note bsc_gscon [label="MS happily continues on the old lchan."]; |
| bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; |
| bsc_gscon box bsc_gscon [label="handover_end(fail)"]; |
| --- [label="END: 'On Timeout'"]; |
| ...; |
| bsc_gscon <= msc_ [label="BSSMAP Handover Command"]; |
| bsc_gscon abox bsc_gscon [label="ST_HANDOVER_MO_\nWAIT_CLEAR_CMD\nT8"]; |
| ms <= bsc_gscon [label="RR Handover Command"]; |
| ...; |
| --- [label="On Timeout"]; |
| ms note bsc_gscon [label="MS happily continues on the old lchan."]; |
| bsc_gscon abox bsc_gscon [label="ST_ACTIVE"]; |
| bsc_gscon box bsc_gscon [label="handover_end(fail)"]; |
| --- [label="END: 'On Timeout'"]; |
| ...; |
| msc_ note msc_ [label="Remote BSS reported Handover Complete to the MSC, this connection has been |
| superseded."]; |
| bsc_gscon <= msc_ [label="BSSMAP Clear Command"]; |
| bsc_gscon abox bsc_gscon [label="ST_CLEARING"]; |
| bsc_gscon => msc_ [label="BSSMAP Clear Complete"]; |
| bsc_lchan <- bsc_gscon [label="LCHAN_EV_RELEASE"]; |
| ms <=> bsc_lchan [label="release procedure (async)"]; |
| } |