parent
5aa1803ef9
commit
f09d1bad0a
@ -0,0 +1,72 @@
|
||||
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));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue