# 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"];
momsc =>> sip	[label="MNCC_SETUP_IND"];
momsc <<= sip	[label="MNCC_RTP_CREATE"];
momgw <<= momsc	[label="for RAN: CRCX\nrtpbridge/*@msc"];
momgw =>> momsc	[label="for RAN: CRCX OK\nEP-1 CI-1"];
moms <<= momsc	[label="(BSSMAP) ASSIGNMENT_COMMAND"];
moms =>> momsc	[label="(BSSMAP) Assignment Complete"];
momgw <<= momsc	[label="for RAN: MDCX\nEP-1 CI-1"];
momgw =>> momsc	[label="for RAN: MDCX OK\nEP-1 CI-1"];
momgw <<= momsc	[label="for CN: CRCX\nEP-1"];
momgw =>> momsc	[label="for CN: CRCX OK\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"];
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 note mtmsc	[label="CC starts timer T303 (30s)"];
mtmsc abox mtmsc	[label="CC state:\nCALL_PRESENT"];
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)"];
mtmsc abox mtmsc	[label="CC state:\nMO_TERM_CALL_CONF"];
mtmgw <<= mtmsc	[label="for RAN: CRCX\nrtpbridge/*@msc"];
mtmsc =>> sip	[label="MNCC_CALL_CONF_IND"];
mtmsc <<= sip	[label="MNCC_RTP_CREATE"];
mtmgw =>> mtmsc	[label="for RAN: CRCX OK\nEP-2 CI-3"];
mtms <<= mtmsc	[label="(RANAP) RAB AssignmentRequest"];
mtms =>> mtmsc	[label="(RANAP) RAB Assignment Response"];
mtmgw <<= mtmsc	[label="for RAN: MDCX\nEP-2 CI-3"];
mtmgw =>> mtmsc	[label="for RAN: MDCX OK\nEP-2 CI-3"];
mtmgw <<= mtmsc	[label="for CN: CRCX\nEP-2"];
mtmgw =>> mtmsc	[label="for CN: CRCX OK\nEP-2 CI-4"];
mtmsc =>> sip	[label="MNCC_RTP_CREATE\nIP:port-2"];
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\nIP:port-1"];
mtmgw <<= mtmsc	[label="for CN: MDCX\nEP-2 CI-4"];
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-4"];
momsc <<= sip	[label="MNCC_RTP_CONNECT\nIP:port-2"];
momgw <<= momsc	[label="for CN: MDCX\nEP-1 CI-2"];
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-2"];
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"];
moms =>> momsc	[label="CC DISCONNECT"];
momsc abox momsc	[label="CC state:\nDISCONNECT_IND"];
momsc =>> sip	[label="MNCC_DISC_IND"];
momsc <<= sip	[label="MNCC_REL_REQ"];
momsc note momsc	[label="CC starts guard timer (180s)"];
momsc note momsc	[label="CC starts timer T308 (10s)"];
momsc abox momsc	[label="CC state:\nRELEASE_REQ"];
moms <<= momsc	[label="CC RELEASE"];
mtmsc <<= sip	[label="MNCC_DISC_REQ"];
mtmsc note mtmsc	[label="CC starts guard timer (180s)"];
mtmsc note mtmsc	[label="CC starts timer T306 (30s)"];
mtmsc abox mtmsc	[label="CC state:\nDISCONNECT_IND"];
mtms <<= mtmsc	[label="CC DISCONNECT"];
moms =>> momsc	[label="CC RELEASE_COMPL"];
momsc note momsc	[label="CC stops timer T308"];
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_CNF"];
moms =>> momsc	[label="(BSSMAP) Clear Complete"];
mtms =>> mtmsc	[label="CC RELEASE"];
mtmsc note mtmsc	[label="CC stops timer T306"];
mtms <<= mtmsc	[label="CC RELEASE_COMPL"];
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_IND"];
mtms =>> mtmsc	[label="(RANAP) Iu Release successfulOutcome"];
moms =>> momsc	[label="IMSI Detach"];
mtms =>> mtmsc	[label="IMSI Detach"];
}
