73 lines
1.8 KiB
Plaintext
73 lines
1.8 KiB
Plaintext
module MGCP_Adapter {
|
|
|
|
import from IPL4asp_Types all;
|
|
|
|
import from MGCP_Types all;
|
|
import from MGCP_CodecPort all;
|
|
import from MGCP_CodecPort_CtrlFunct all;
|
|
|
|
import from IPA_Emulation all;
|
|
|
|
|
|
type component MGCP_Adapter_CT {
|
|
/* MGCP Codec Port for MGCP-over-UDP */
|
|
port MGCP_CODEC_PT MGCP_UDP;
|
|
port IPA_MGCP_PT MGCP;
|
|
var integer g_mgcp_conn_id := -1;
|
|
}
|
|
|
|
modulepar {
|
|
charstring mp_callagent_ip := "127.0.0.1";
|
|
PortNumber mp_callagent_udp_port := 2727;
|
|
charstring mp_mgw_ip := "127.0.0.1";
|
|
PortNumber mp_mgw_udp_port := 2427;
|
|
}
|
|
|
|
/* build a receive template for receiving a MGCP message. You
|
|
* pass the MGCP response template in, and it will generate an
|
|
* MGCP_RecvFrom template that can match the primitives arriving on the
|
|
* MGCP_CodecPort */
|
|
function tr_MGCP_RecvFrom_R(template MgcpResponse resp)
|
|
runs on MGCP_Adapter_CT return template MGCP_RecvFrom {
|
|
var template MGCP_RecvFrom mrf := {
|
|
connId := g_mgcp_conn_id,
|
|
remName := mp_mgw_ip,
|
|
remPort := mp_mgw_udp_port,
|
|
locName := mp_callagent_ip,
|
|
locPort := mp_callagent_udp_port,
|
|
msg := { response := resp }
|
|
}
|
|
return mrf;
|
|
}
|
|
|
|
|
|
function main() runs on MGCP_Adapter_CT {
|
|
var Result res;
|
|
map(self:MGCP_UDP, system:MGCP_CODEC_PT);
|
|
res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP_UDP, mp_mgw_ip, mp_mgw_udp_port,
|
|
mp_callagent_ip, mp_callagent_udp_port,
|
|
0, { udp:={} });
|
|
g_mgcp_conn_id := res.connId;
|
|
|
|
while (true) {
|
|
var MgcpCommand mgcp_cmd;
|
|
var MGCP_RecvFrom mrf;
|
|
|
|
alt {
|
|
/* From BSC/MGW via UDP up to MSC / Call Agent */
|
|
[] MGCP_UDP.receive(tr_MGCP_RecvFrom_R(?)) -> value mrf {
|
|
MGCP.send(mrf.msg.response);
|
|
}
|
|
|
|
/* From MSC / Call Agent down to BSC/MGW */
|
|
[] MGCP.receive(MgcpCommand:?) -> value mgcp_cmd {
|
|
var MgcpMessage msg := { command := mgcp_cmd };
|
|
MGCP_UDP.send(t_MGCP_Send(g_mgcp_conn_id, msg));
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|