diff options
-rw-r--r-- | include/mgcp/mgcp.h | 2 | ||||
-rw-r--r-- | src/mgcp/mgcp_protocol.c | 4 | ||||
-rw-r--r-- | src/mgcp_ss7.c | 5 | ||||
-rw-r--r-- | src/mgcp_ss7_vty.c | 28 |
4 files changed, 39 insertions, 0 deletions
diff --git a/include/mgcp/mgcp.h b/include/mgcp/mgcp.h index 6ac3896..71f3745 100644 --- a/include/mgcp/mgcp.h +++ b/include/mgcp/mgcp.h @@ -128,6 +128,8 @@ struct mgcp_trunk_config { char *virtual_domain; int target_trunk_start; int vad_enabled; + int dtmf_on_off_time; + int dtmf_transmit_pwr; int digital_inp_gain; int digital_out_gain; diff --git a/src/mgcp/mgcp_protocol.c b/src/mgcp/mgcp_protocol.c index 4fc6135..d3561d5 100644 --- a/src/mgcp/mgcp_protocol.c +++ b/src/mgcp/mgcp_protocol.c @@ -948,6 +948,10 @@ static void trunk_init(struct mgcp_trunk_config *trunk) trunk->dwnstr_adp_rate = 100; trunk->dwnstr_max_gain = 46; trunk->dwnstr_target_lvl = 20; + + /* dtmf defaults */ + trunk->dtmf_on_off_time = 70; + trunk->dtmf_transmit_pwr = 50; } struct mgcp_config *mgcp_config_alloc(void) diff --git a/src/mgcp_ss7.c b/src/mgcp_ss7.c index c4a1d34..6604545 100644 --- a/src/mgcp_ss7.c +++ b/src/mgcp_ss7.c @@ -510,6 +510,11 @@ static void allocate_endp(struct mgcp_ss7 *ss7, struct mgcp_endpoint *endp) ManObj_C_AMR_MODE_REQUEST, 2, 0); MtnSaSetManObject(mgw_port, ChannelType_PORT, ManObj_C_VOICE_VAD_CNG, endp->tcfg->vad_enabled, 0); + MtnSaSetManObject(mgw_port, ChannelType_PORT, + ManObj_G_DTMF_ON_OFF_TIME, endp->tcfg->dtmf_on_off_time, 0); + MtnSaSetManObject(mgw_port, ChannelType_PORT, + ManObj_G_DTMF_TRANSMIT_POWER, endp->tcfg->dtmf_transmit_pwr, 0); + update_mute_status(mgw_port, endp->conn_mode); diff --git a/src/mgcp_ss7_vty.c b/src/mgcp_ss7_vty.c index 07e44a5..8ed27ad 100644 --- a/src/mgcp_ss7_vty.c +++ b/src/mgcp_ss7_vty.c @@ -246,6 +246,26 @@ DEFUN(cfg_trunk_loop_idle, cfg_trunk_loop_idle_cmd, return CMD_SUCCESS; } +DEFUN(cfg_trunk_dtmf_on_off_time, cfg_trunk_dtmf_on_off_time_cmd, + "dtmf on-off-time <50-255>", + "DTMF related commands\n" "On-Off-Time for tones\n" + "Time in milliseconds\n") +{ + struct mgcp_trunk_config *trunk = vty->index; + trunk->dtmf_on_off_time = atoi(argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_trunk_dtmf_transmit_pwr, cfg_trunk_dtmf_transmit_pwr_cmd, + "dtmf transmit-power <1-255>", + "DTMF related commands\n" "Transmit power\n" + "Power in units\n") +{ + struct mgcp_trunk_config *trunk = vty->index; + trunk->dtmf_transmit_pwr = atoi(argv[0]); + return CMD_SUCCESS; +} + void mgcp_write_extra(struct vty *vty, struct mgcp_config *cfg) { vty_out(vty, " configure-trunks %d%s", @@ -293,6 +313,10 @@ void write_trunk_extra(struct vty *vty, struct mgcp_trunk_config *trunk) trunk->dwnstr_target_lvl, VTY_NEWLINE); vty_out(vty, " loop-on-idle %d%s", trunk->loop_on_idle, VTY_NEWLINE); + vty_out(vty, " dtmf on-off-time %d%s", + trunk->dtmf_on_off_time, VTY_NEWLINE); + vty_out(vty, " dtmf transmit-power %d%s", + trunk->dtmf_transmit_pwr, VTY_NEWLINE); write_blocked_endpoints(vty, trunk); } @@ -335,6 +359,8 @@ void mgcp_mgw_vty_init(void) install_element(VTRUNK_NODE, &cfg_trunk_endp_offset_cmd); install_element(VTRUNK_NODE, &cfg_trunk_timeslot_block_cmd); install_element(VTRUNK_NODE, &cfg_trunk_loop_idle_cmd); + install_element(VTRUNK_NODE, &cfg_trunk_dtmf_on_off_time_cmd); + install_element(VTRUNK_NODE, &cfg_trunk_dtmf_transmit_pwr_cmd); install_element(TRUNK_NODE, &cfg_trunk_vad_cmd); install_element(TRUNK_NODE, &cfg_trunk_realloc_cmd); @@ -351,6 +377,8 @@ void mgcp_mgw_vty_init(void) install_element(TRUNK_NODE, &cfg_trunk_endp_offset_cmd); install_element(TRUNK_NODE, &cfg_trunk_timeslot_block_cmd); install_element(TRUNK_NODE, &cfg_trunk_loop_idle_cmd); + install_element(TRUNK_NODE, &cfg_trunk_dtmf_on_off_time_cmd); + install_element(TRUNK_NODE, &cfg_trunk_dtmf_transmit_pwr_cmd); } |