# Generated by msc_log_to_ladder.py msc { hscale="3"; moms[label="MS,BSS (MO)\nUE,hNodeB (MO)"],momgw[label="MGW for MSC (MO)"],momsc[label="MSC (MO)"],sip[label="MNCC to PBX via\nosmo-sip-connector"],mtmsc[label="MSC (MT)"],mtmgw[label="MGW for MSC (MT)"],mtms[label="BSS,MS (MT)\nhNodeB,UE (MT)"]; moms =>> momsc [label="MM CM_SERV_REQ"]; moms <<= momsc [label="MM AUTH_REQ"]; moms =>> momsc [label="MM AUTH_RESP"]; moms <<= momsc [label="(BSSMAP) CIPHER_MODE_COMMAND"]; moms =>> momsc [label="(BSSMAP) Ciphering Mode Complete"]; moms =>> momsc [label="RR CIPH_M_COMPL"]; moms =>> momsc [label="CC SETUP"]; momsc note momsc [label="CC starts guard timer (180s)"]; momsc abox momsc [label="CC state:\nINITIATED"]; momgw <<= momsc [label="for CN: CRCX\nrtpbridge/*@msc"]; momgw =>> momsc [label="for CN: CRCX OK\nEP-1 CI-1"]; momgw <<= momsc [label="for RAN: CRCX\nEP-1"]; momsc =>> sip [label="MNCC_SETUP_IND"]; momgw =>> momsc [label="for RAN: CRCX OK\nEP-1 CI-2"]; moms <<= momsc [label="(BSSMAP) ASSIGNMENT_COMMAND"]; momsc <<= sip [label="MNCC_RTP_CREATE"]; moms =>> momsc [label="(BSSMAP) Assignment Complete"]; momgw <<= momsc [label="for RAN: MDCX\nEP-1 CI-2"]; momsc =>> sip [label="MNCC_RTP_CREATE\nIP:port-1"]; momsc <<= sip [label="MNCC_CALL_PROC_REQ"]; momsc note momsc [label="CC stops guard timer"]; momsc note momsc [label="CC starts guard timer (180s)"]; momsc abox momsc [label="CC state:\nMO_CALL_PROC"]; moms <<= momsc [label="CC CALL_PROC"]; momgw =>> momsc [label="for RAN: MDCX OK\nEP-1 CI-2"]; mtmsc <<= sip [label="MNCC_SETUP_REQ"]; mtms <<= mtmsc [label="Paging"]; mtms =>> mtmsc [label="RR PAG_RESP"]; mtms <<= mtmsc [label="MM AUTH_REQ"]; mtms =>> mtmsc [label="MM NULL"]; mtms =>> mtmsc [label="MM AUTH_RESP"]; mtms <<= mtmsc [label="(RANAP) SecurityModeCommand"]; mtms =>> mtmsc [label="(RANAP) SecurityModeControl successfulOutcome"]; mtms <<= mtmsc [label="(RANAP) CommonId"]; mtmsc abox mtmsc [label="CC state:\nCALL_PRESENT"]; mtmsc note mtmsc [label="CC starts timer T303 (30s)"]; mtms <<= mtmsc [label="CC SETUP"]; mtms =>> mtmsc [label="CC CALL_CONF"]; mtmsc note mtmsc [label="CC stops timer T303"]; mtmsc note mtmsc [label="CC starts timer T310 (30s)"]; mtmgw <<= mtmsc [label="for CN: CRCX\nrtpbridge/*@msc"]; mtmsc abox mtmsc [label="CC state:\nMO_TERM_CALL_CONF"]; mtmsc =>> sip [label="MNCC_CALL_CONF_IND"]; mtmsc <<= sip [label="MNCC_RTP_CREATE"]; mtmgw =>> mtmsc [label="for CN: CRCX OK\nEP-2 CI-3"]; mtmgw <<= mtmsc [label="for RAN: CRCX\nEP-2"]; mtmsc =>> sip [label="MNCC_RTP_CREATE\nIP:port-2"]; mtmgw =>> mtmsc [label="for RAN: CRCX OK\nEP-2 CI-4"]; mtms <<= mtmsc [label="(RANAP) RAB AssignmentRequest"]; mtms =>> mtmsc [label="(RANAP) RAB Assignment Response"]; mtmgw <<= mtmsc [label="for RAN: MDCX\nEP-2 CI-4"]; mtmsc =>> sip [label="MNCC_RTP_CREATE\nIP:port-2"]; mtmgw =>> mtmsc [label="for RAN: MDCX OK\nEP-2 CI-4"]; mtms =>> mtmsc [label="CC ALERTING"]; mtmsc note mtmsc [label="CC stops timer T310"]; mtmsc note mtmsc [label="CC starts timer T301 (180s)"]; mtmsc abox mtmsc [label="CC state:\nCALL_RECEIVED"]; mtmsc =>> sip [label="MNCC_ALERT_IND"]; momsc <<= sip [label="MNCC_ALERT_REQ"]; momsc note momsc [label="CC stops guard timer"]; momsc note momsc [label="CC starts guard timer (180s)"]; momsc abox momsc [label="CC state:\nCALL_DELIVERED"]; moms <<= momsc [label="CC ALERTING"]; mtms =>> mtmsc [label="CC CONNECT"]; mtmsc note mtmsc [label="CC stops timer T301"]; mtmsc abox mtmsc [label="CC state:\nCONNECT_REQUEST"]; mtmsc =>> sip [label="MNCC_SETUP_CNF"]; mtmsc <<= sip [label="MNCC_RTP_CONNECT"]; mtmgw <<= mtmsc [label="for CN: MDCX\nEP-2 CI-3"]; mtmsc <<= sip [label="MNCC_SETUP_COMPL_REQ"]; mtmsc note mtmsc [label="CC starts guard timer (180s)"]; mtmsc abox mtmsc [label="CC state:\nACTIVE"]; mtmsc note mtmsc [label="CC stops guard timer"]; mtms <<= mtmsc [label="CC CONNECT_ACK"]; mtmgw =>> mtmsc [label="for CN: MDCX OK\nEP-2 CI-3"]; momsc <<= sip [label="MNCC_RTP_CONNECT"]; momgw <<= momsc [label="for CN: MDCX\nEP-1 CI-1"]; momsc <<= sip [label="MNCC_SETUP_RSP"]; momsc note momsc [label="CC stops guard timer"]; momsc note momsc [label="CC starts guard timer (180s)"]; momsc note momsc [label="CC starts timer T313 (30s)"]; momsc abox momsc [label="CC state:\nCONNECT_IND"]; moms <<= momsc [label="CC CONNECT"]; momgw =>> momsc [label="for CN: MDCX OK\nEP-1 CI-1"]; moms =>> momsc [label="CC CONNECT_ACK"]; momsc note momsc [label="CC stops timer T313"]; momsc abox momsc [label="CC state:\nACTIVE"]; momsc note momsc [label="CC stops guard timer"]; momsc =>> sip [label="MNCC_SETUP_COMPL_IND"]; mtms =>> mtmsc [label="CC DISCONNECT"]; mtmsc abox mtmsc [label="CC state:\nDISCONNECT_IND"]; mtmsc =>> sip [label="MNCC_DISC_IND"]; mtmsc <<= sip [label="MNCC_REL_REQ"]; mtmsc note mtmsc [label="CC starts guard timer (180s)"]; mtmsc note mtmsc [label="CC starts timer T308 (10s)"]; mtmsc abox mtmsc [label="CC state:\nRELEASE_REQ"]; mtms <<= mtmsc [label="CC RELEASE"]; momsc <<= sip [label="MNCC_DISC_REQ"]; momsc note momsc [label="CC starts guard timer (180s)"]; momsc note momsc [label="CC starts timer T306 (30s)"]; momsc abox momsc [label="CC state:\nDISCONNECT_IND"]; moms <<= momsc [label="CC DISCONNECT"]; moms =>> momsc [label="CC RELEASE"]; momsc note momsc [label="CC stops timer T306"]; moms <<= momsc [label="CC RELEASE_COMPL"]; momsc abox momsc [label="CC state:\nNULL"]; momsc note momsc [label="CC stops guard timer"]; moms <<= momsc [label="(BSSMAP) CLEAR_COMMAND"]; momsc =>> sip [label="MNCC_REL_IND"]; moms =>> momsc [label="(BSSMAP) Clear Complete"]; mtms =>> mtmsc [label="CC RELEASE_COMPL"]; mtmsc note mtmsc [label="CC stops timer T308"]; mtmsc abox mtmsc [label="CC state:\nNULL"]; mtmsc note mtmsc [label="CC stops guard timer"]; mtms <<= mtmsc [label="(RANAP) Iu Release"]; mtmsc =>> sip [label="MNCC_REL_CNF"]; mtms =>> mtmsc [label="(RANAP) Iu Release successfulOutcome"]; moms =>> momsc [label="IMSI Detach"]; mtms =>> mtmsc [label="IMSI Detach"]; }