call flow
Transcript: M_STATE_CONNECTING -> M_STATE_TALKING M_STATE_TALKING, M_EVT_HOOKON M_STATE_TALKING, M_EVT_HOOKOFF Failed 3 times rtpCloseReq() M_STATE_CONNECTING, M_EVT_MDCX M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_DISCONNECT, M_EVT_HOOKON 안드로 안드로M_STATE_DIALING -> M_STATE_DISCONNECT M_STATE_TALKING, M_EVT_RQNT Sender Waiting 10 sec send NTFY rtpCloseReq() mgcp_hookon_handle() Caller get RQNT L/HD M_STATE_DISCONNECT, L_REORDER_TONE get CRCX RECVONLY Check RQNT get RQNT L/HD M_STATE_IDLE, L_DIAL_TONE digit collecting not finished send NTFY L/hu M_STATE_TALKING, M_EVT_DLCX get RQNT L/HU get DLCX get RQNT L/HD send RSIP get RQNT D/... L/HU, G/OC Receiver Hook ON M_STATE_DISCONNECT -> M_STATE_NONE 안드로M_STATE_NONE -> M_STATE_IDLE M_STATE_DISCONNECT -> M_STATE_NONE M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_DISCONNECT, M_EVT_RQNT get DLCX (RSIP, NTFY, ...) get 200OK M_STATE_TALKING, M_EVT_DLCX get DLCX wait response wait delay get DLCX Try 4 times (restransmission wait delay && response wait delay) send NTFY L/hu M_STATE_TALKING-> M_STATE_DISCONNECT Continuous try get 200OK (disconnection wait delay + restart wait delay) get RQNT L/HD Sender Hang DOWN M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_TALKING, M_EVT_HOOKON get CRCX SENDRECV get DLCX M_STATE_NONE, L_DISTINCTIVE_RINGING M_STATE_DISCONNECT, M_EVT_HOOKON get RQNT L/HU L/HF Failed 3 times mgcp_get_caller_info() get DLCX Sender Hang DOWN Sender Hang DOWN get RQNT D/... L/HU, G/OC M_STATE_TALKING, M_EVT_HOOKON get RQNT L/HD M_STATE_DIALING, M_EVT_RQNT Receiver Busy get RQNT L/HU get RQNT L/HD mgcp_hookon_handle() Try 3 times (restransmission wait delay && response wait delay) Receiver Hang UP M_STATE_TALKING, M_EVT_RQNT M_STATE_TALKING, M_EVT_RQNT M_STATE_DIALING, M_EVT_DTMF M_STATE_CONNECTING-> M_STATE_TALKING M_STATE_TALKING, M_EVT_RQNT M_STATE_TALKING-> M_STATE_DISCONNECT Hook ON Receiver Hang DOWN M_STATE_TALKING-> M_STATE_DISCONNECT M_STATE_DISCONNECT, M_EVT_RQNT send FAILED receiver hang up mgcp_hookon_handle() get 200OK M_STATE_TALKING, M_EVT_HOOKON rtpCloseReq() get RQNT L/HD Hook ON M_STATE_DISCONNECT -> M_STATE_NONE send FAILED M_STATE_DISCONNECT, M_EVT_DLCX mgcp_hookon_handle() M_STATE_DISCONNECT-> M_STATE_DISCONNECT mgcp_make_sdp() mgcp_make_sdp() M_STATE_TALKING, G_RINGBACK_TONE Wait TICK_TIMER_VALUE (While steplock wait delay) M_STATE_TALKING-> L_REORDER_TONE send NTFY L/hu send NTFY O:D/1 ......... mgcp_hookoff_handle() M_STATE_DISCONNECT -> M_STATE_NONE M_STATE_DIALING, M_EVT_CRCX Continuous try get 200OK (disconnection wait delay + restart wait delay) Hook ON M_STATE_DISCONNECT, M_EVT_CRCX send NTFY L/hu M_STATE_DISCONNECT, L_NETWORK_DISCONNECT Hook OFF Caller Digit collect time out Failed 3 times M_STATE_DISCONNECT -> M_STATE_NONE mgcp_hookon_handle() M_STATE_TALKING-> M_STATE_DISCONNECT mgcp_get_caller_info() get RQNT L/HD get RQNT L/HD send NTFY send NTFY L/hu M_STATE_TALKING, M_EVT_RQNT cmToneStopReq() Hook ON get RQNT L/HF, L/HU get RQNT L/HF, L/HU get CRCX SENDRECV get RQNT L/HD M_STATE_NONE, M_EVT_RQNT get DLCX SM_STEP_LOCK M_STATE_CONNECTING, M_EVT_RQNT Failed get RQNT get RQNT L/HF, L/HD M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_TALKING-> M_STATE_DISCONNECT send NTFY L/hd Hook ON send NTFY L/hu mgcp_hookon_handle() M_STATE_TALKING-> L_REORDER_TONE mgcp_get_caller_info() M_STATE_TALKING-> M_STATE_DISCONNECT get RQNT L/HU L/HF M_STATE_DISCONNECT, M_EVT_DLCX Receiver ringback_State = false Receive or Send fail sequence get DLCX Receiver Hang UP Timeout rtpCloseReq() M_STATE_DISCONNECT, L_NETWORK_DISCONNECT get RQNT L/HD M_STATE_DISCONNECT, M_EVT_RQNT mgcp_dtmf_handle() send NTFY L/hd cmToneStopReq() Failed 3~4 times get RQNT D/... L/HU, G/OC M_STATE_NODE, EVT_HOOK_OFF Failed 4 times. Wait delay (disconnection wait delay + restart wait delay) Caller Hang DOWN 안드로M_STATE_DISCONNECT -> M_STATE_NONE mgcp_make_sdp() get RQNT L/HD RingingStopReq() 안드로M_STATE_DIALING -> M_STATE_HOOKON get RQNT L/HU, L/HF Try 3 times (restransmission wait delay && response wait delay) mgcp_hookon_handle() M_STATE_TALKING-> M_STATE_DISCONNECT rtpCloseReq() Caller mgcp_hookon_handle() M_STATE_TALKING-> M_STATE_DISCONNECT M_STATE_DISCONNECT -> M_STATE_NONE M_STATE_TALKING, M_EVT_HOOKON get RQNT D/[0-9A-D#*T], L/HU, G/OC M_STATE_DIALING, L_DIAL_TONE M_STATE_DISCONNECT -> M_STATE_CONNECTING Caller M_STATE_DISCONNECT -> M_STATE_NONE M_STATE_DISCONNECT, L_NETWORK_DISCONNECT Hook ON digit collecting finished get MDCX SENDRECV send NTFY L/hu send FAILED mgcp_hookoff_handle() get MDCX SENDRECV rtpCloseReq() Receiver send need response packet get MDCX SENDRECV M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_TALKING, G_RINGBACK_TONE 안드로M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_NONE, M_EVT_CRCX RTP Receiver fxs_ring_generation(stop) M_STATE_DISCONNECT, M_EVT_DLCX Hook ON M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_DISCONNECT, G_RINGBACK_TONE mgcp_make_sdp() get 200OK get RQNT L/HU M_STATE_IDLE -> M_STATE_DIALING M_STATE_DISCONNECT, L_NETWORK_DISCONNECT M_STATE_DISCONNECT, M_EVT_RQNT M_STATE_DISCONNECT->