Neels Hofmeyr | 3b5de1b | 2018-06-16 16:08:55 +0200 | [diff] [blame^] | 1 | msc { |
| 2 | hscale=2; |
| 3 | ms [label="MS/BTS"], ho[label="BSC Handover FSM"], gscon[label="BSC conn FSM"], msc_[label="MSC"]; |
| 4 | |
| 5 | ms note msc_ [label="inter-BSC Handover to another BSS"]; |
| 6 | |
| 7 | gscon abox gscon [label="ST_ACTIVE"]; |
| 8 | |
| 9 | ms => ho [label="Measurement Report"]; |
| 10 | ho box ho [label="Handover Decision"]; |
| 11 | ho box ho [label="handover_request\n(struct handover_out_req)"]; |
| 12 | ho note gscon [label="To make sure the conn FSM permits a handover, trigger an event:"]; |
| 13 | ho -> gscon [label="GSCON_EV_HANDOVER_START\ndata=handover_out_req"]; |
| 14 | gscon abox gscon [label="ST_HANDOVER"]; |
| 15 | ho <- gscon [label="handover_start\n(handover_out_req)"]; |
| 16 | ho box ho [label="handover_start_inter_bsc_out()"]; |
| 17 | ho => msc_ [label="BSSMAP Handover Required"]; |
| 18 | ho abox ho [label="HO_OUT_ST_WAIT_HO_COMMAND"]; |
| 19 | ...; |
| 20 | ...; |
| 21 | --- [label="On Timeout"]; |
| 22 | ho box ho [label="handover_end(fail)"]; |
| 23 | ho -> gscon [label="GSCON_EV_HANDOVER_END"]; |
| 24 | gscon abox gscon [label="ST_ACTIVE"]; |
| 25 | ms note gscon [label="MS happily continues on the old lchan."]; |
| 26 | --- [label="END: 'On Timeout'"]; |
| 27 | ...; |
| 28 | ...; |
| 29 | ho <= msc_ [label="BSSMAP Handover Command\n HO_OUT_EV_BSSMAP_HO_COMMAND"]; |
| 30 | ms <= ho [label="Forward L3 Info (RR Handover Command from new BSS)"]; |
| 31 | ho abox ho [label="HO_OUT_ST_WAIT_CLEAR"]; |
| 32 | ...; |
| 33 | gscon abox gscon [label="ST_HANDOVER_MO_\nWAIT_CLEAR_CMD\nT8"]; |
| 34 | ms <= gscon [label="RR Handover Command"]; |
| 35 | ...; |
| 36 | ho rbox gscon [label="On Timeout: same as above"]; |
| 37 | ...; |
| 38 | msc_ note msc_ [label="Remote BSS reported Handover Complete to the MSC, |
| 39 | this connection has been superseded."]; |
| 40 | gscon <= msc_ [label="BSSMAP Clear Command\n GSCON_EV_A_CLEAR_CMD"]; |
| 41 | gscon abox gscon [label="ST_CLEARING"]; |
| 42 | gscon => msc_ [label="BSSMAP Clear Complete"]; |
| 43 | ...; |
| 44 | gscon <= msc_ [label="DISC IND\n GSCON_EV_A_DISC_IND"]; |
| 45 | ho abox ho [label="terminate\n(child of conn FSM)"]; |
| 46 | gscon abox gscon [label="terminate"]; |
| 47 | } |