aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmgcp/mgcp_vty.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmgcp/mgcp_vty.c')
-rw-r--r--openbsc/src/libmgcp/mgcp_vty.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c
index b97d7f835..6d1a7acc7 100644
--- a/openbsc/src/libmgcp/mgcp_vty.c
+++ b/openbsc/src/libmgcp/mgcp_vty.c
@@ -29,6 +29,7 @@
#include <openbsc/vty.h>
#include <string.h>
+#include <inttypes.h>
#define RTCP_OMIT_STR "Drop RTCP packets in both directions\n"
#define RTP_PATCH_STR "Modify RTP packet header in both directions\n"
@@ -164,6 +165,13 @@ static int config_write_mgcp(struct vty *vty)
vty_out(vty, " osmux dummy %s%s",
g_cfg->osmux_dummy ? "on" : "off", VTY_NEWLINE);
}
+ if (g_cfg->bts_use_jibuf)
+ vty_out(vty, " bts-jitter-buffer%s", VTY_NEWLINE);
+ if (g_cfg->bts_jitter_delay_min)
+ vty_out(vty, " bts-jitter-delay-min %"PRIu32"%s", g_cfg->bts_jitter_delay_min, VTY_NEWLINE);
+ if (g_cfg->bts_jitter_delay_max)
+ vty_out(vty, " bts-jitter-delay-max %"PRIu32"%s", g_cfg->bts_jitter_delay_max, VTY_NEWLINE);
+
return CMD_SUCCESS;
}
@@ -241,6 +249,11 @@ DEFUN(show_mcgp, show_mgcp_cmd,
if (g_cfg->osmux)
vty_out(vty, "Osmux used CID: %d%s", osmux_used_cid(), VTY_NEWLINE);
+ vty_out(vty, "Jitter Buffer by default on Uplink : %s%s",
+ g_cfg->bts_use_jibuf ? "on" : "off", VTY_NEWLINE);
+ if (g_cfg->bts_use_jibuf)
+ vty_out(vty, "Jitter Buffer delays: min=%"PRIu32" max=%"PRIu32"%s",
+ g_cfg->bts_jitter_delay_min, g_cfg->bts_jitter_delay_max, VTY_NEWLINE);
return CMD_SUCCESS;
}
@@ -1333,6 +1346,63 @@ DEFUN(cfg_mgcp_osmux_dummy,
return CMD_SUCCESS;
}
+#define DEJITTER_STR "Uplink Jitter Buffer"
+DEFUN(cfg_mgcp_bts_use_jibuf,
+ cfg_mgcp_bts_use_jibuf_cmd,
+ "bts-jitter-buffer",
+ DEJITTER_STR "\n")
+{
+ g_cfg->bts_use_jibuf = true;
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_mgcp_no_bts_use_jibuf,
+ cfg_mgcp_no_bts_use_jibuf_cmd,
+ "no bts-jitter-buffer",
+ NO_STR DEJITTER_STR "\n")
+{
+ g_cfg->bts_use_jibuf = false;
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_mgcp_bts_jitter_delay_min,
+ cfg_mgcp_bts_jitter_delay_min_cmd,
+ "bts-jitter-buffer-delay-min <1-65535>",
+ DEJITTER_STR " Minimum Delay in ms\n" "Minimum Delay in ms\n")
+{
+ g_cfg->bts_jitter_delay_min = atoi(argv[0]);
+ if (!g_cfg->bts_jitter_delay_min) {
+ vty_out(vty, "bts-jitter-buffer-delay-min cannot be zero.%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max &&
+ g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) {
+ vty_out(vty, "bts-jitter-buffer-delay-min cannot be bigger than " \
+ "bts-jitter-buffer-delay-max.%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_mgcp_bts_jitter_delay_max,
+ cfg_mgcp_bts_jitter_delay_max_cmd,
+ "bts-jitter-buffer-delay-max <1-65535>",
+ DEJITTER_STR " Maximum Delay in ms\n" "Maximum Delay in ms\n")
+{
+ g_cfg->bts_jitter_delay_max = atoi(argv[0]);
+ if (!g_cfg->bts_jitter_delay_max) {
+ vty_out(vty, "bts-jitter-buffer-delay-max cannot be zero.%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ if (g_cfg->bts_jitter_delay_min && g_cfg->bts_jitter_delay_max &&
+ g_cfg->bts_jitter_delay_min > g_cfg->bts_jitter_delay_max) {
+ vty_out(vty, "bts-jitter-buffer-delay-max cannot be smaller than " \
+ "bts-jitter-buffer-delay-min.%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ return CMD_SUCCESS;
+}
+
int mgcp_vty_init(void)
{
install_element_ve(&show_mgcp_cmd);
@@ -1399,6 +1469,10 @@ int mgcp_vty_init(void)
install_element(MGCP_NODE, &cfg_mgcp_osmux_dummy_cmd);
install_element(MGCP_NODE, &cfg_mgcp_allow_transcoding_cmd);
install_element(MGCP_NODE, &cfg_mgcp_no_allow_transcoding_cmd);
+ install_element(MGCP_NODE, &cfg_mgcp_bts_use_jibuf_cmd);
+ install_element(MGCP_NODE, &cfg_mgcp_no_bts_use_jibuf_cmd);
+ install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_min_cmd);
+ install_element(MGCP_NODE, &cfg_mgcp_bts_jitter_delay_max_cmd);
install_element(MGCP_NODE, &cfg_mgcp_trunk_cmd);