summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/src/mobile/vty_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/host/layer23/src/mobile/vty_interface.c')
-rw-r--r--src/host/layer23/src/mobile/vty_interface.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/host/layer23/src/mobile/vty_interface.c b/src/host/layer23/src/mobile/vty_interface.c
index 70ee7035..073303ca 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -65,6 +65,12 @@ struct cmd_node support_node = {
1
};
+struct cmd_node audio_node = {
+ AUDIO_NODE,
+ "%s(audio)# ",
+ 1
+};
+
static void print_vty(void *priv, const char *fmt, ...)
{
char buffer[1000];
@@ -1526,6 +1532,10 @@ static void config_write_ms(struct vty *vty, struct osmocom_ms *ms)
vty_out(vty, " c7-any-timeout %d%s",
set->any_timeout, VTY_NEWLINE);
+ vty_out(vty, " audio%s", VTY_NEWLINE);
+ if (!hide_default || set->audio.io_handler != AUDIO_IOH_NONE)
+ vty_out(vty, " io-handler %s%s", audio_io_handler_name(set->audio.io_handler), VTY_NEWLINE);
+
/* no shutdown must be written to config, because shutdown is default */
vty_out(vty, " %sshutdown%s", (ms->shutdown != MS_SHUTDOWN_NONE) ? "" : "no ",
VTY_NEWLINE);
@@ -2727,6 +2737,46 @@ DEFUN(cfg_test_hplmn, cfg_test_hplmn_cmd, "hplmn-search (everywhere|foreign-coun
return CMD_SUCCESS;
}
+/* per audio config */
+DEFUN(cfg_ms_audio, cfg_ms_audio_cmd, "audio",
+ "Configure audio settings")
+{
+ vty->node = AUDIO_NODE;
+ return CMD_SUCCESS;
+}
+
+static int set_audio_io_handler(struct vty *vty, enum audio_io_handler val)
+{
+ struct osmocom_ms *ms = (struct osmocom_ms *) vty->index;
+ struct gsm_settings *set = &ms->settings;
+
+ /* Don't restart on unchanged value */
+ if (val == set->audio.io_handler)
+ return CMD_SUCCESS;
+ set->audio.io_handler = val;
+
+ /* Restart required */
+ vty_restart_if_started(vty, ms);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_ms_audio_io_handler, cfg_ms_audio_io_handler_cmd,
+ "io-handler (loopback|none)",
+ "Set TCH frame I/O handler\n"
+ "Return TCH frame payload back to sender\n"
+ "No handler, drop TCH frames (default)")
+{
+ int val = get_string_value(audio_io_handler_names, argv[0]);
+ return set_audio_io_handler(vty, val);
+}
+
+DEFUN(cfg_ms_audio_no_io_handler, cfg_ms_audio_no_io_handler_cmd,
+ "no io-handler", NO_STR "Disable TCH frame processing")
+{
+ return set_audio_io_handler(vty, AUDIO_IOH_NONE);
+}
+
DEFUN(cfg_no_shutdown, cfg_ms_no_shutdown_cmd, "no shutdown",
NO_STR "Activate and run MS")
{
@@ -2807,6 +2857,7 @@ int ms_vty_go_parent(struct vty *vty)
break;
case TESTSIM_NODE:
case SUPPORT_NODE:
+ case AUDIO_NODE:
vty->node = MS_NODE;
break;
default:
@@ -2918,6 +2969,7 @@ int ms_vty_init(void)
install_element(MS_NODE, &cfg_ms_abbrev_cmd);
install_element(MS_NODE, &cfg_ms_no_abbrev_cmd);
install_element(MS_NODE, &cfg_ms_testsim_cmd);
+ install_element(MS_NODE, &cfg_ms_audio_cmd);
install_element(MS_NODE, &cfg_ms_neighbour_cmd);
install_element(MS_NODE, &cfg_ms_no_neighbour_cmd);
install_element(MS_NODE, &cfg_ms_any_timeout_cmd);
@@ -2995,6 +3047,10 @@ int ms_vty_init(void)
install_element(MS_NODE, &cfg_ms_script_load_run_cmd);
install_element(MS_NODE, &cfg_ms_no_script_load_run_cmd);
+ install_node(&audio_node, config_write_dummy);
+ install_element(AUDIO_NODE, &cfg_ms_audio_io_handler_cmd);
+ install_element(AUDIO_NODE, &cfg_ms_audio_no_io_handler_cmd);
+
/* Register the talloc context introspection command */
osmo_talloc_vty_add_cmds();