This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/17593 )
Change subject: mobile: add audio config, with unused audio loopback setting
......................................................................
mobile: add audio config, with unused audio loopback setting
The aim is to add configurable audio loopback to mobile. An existing patch on a
branch from fixeria [1] adds the audio config section. Add a reduced version of
this audio config to be compatible with the future merge.
Add the audio loopback setting, so far without functionality.
Subsequent patch adds the actual loopback.
[1] osmocom-bb branch fixeria/audio,
patch "mobile/vty_interface.c: add new 'audio' section"
Change-id I62cd5ef22ca2290fcafe65c78537ddbcb39fb8c6
Change-Id: Ie03e4a6c6f81ea3925266dd22e87506d722a6e1a
---
M doc/examples/mobile/default.cfg
M doc/examples/mobile/multi_ms.cfg
M src/host/layer23/include/osmocom/bb/mobile/settings.h
M src/host/layer23/include/osmocom/bb/mobile/vty.h
M src/host/layer23/src/mobile/settings.c
M src/host/layer23/src/mobile/vty_interface.c
6 files changed, 90 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/doc/examples/mobile/default.cfg b/doc/examples/mobile/default.cfg
index cc81630..f14e900 100644
--- a/doc/examples/mobile/default.cfg
+++ b/doc/examples/mobile/default.cfg
@@ -59,4 +59,6 @@
ki comp128 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
no barred-access
rplmn 001 01
+ audio
+ io-handler none
no shutdown
diff --git a/doc/examples/mobile/multi_ms.cfg b/doc/examples/mobile/multi_ms.cfg
index bef2406..c72817f 100644
--- a/doc/examples/mobile/multi_ms.cfg
+++ b/doc/examples/mobile/multi_ms.cfg
@@ -59,6 +59,8 @@
ki comp128 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
no barred-access
rplmn 001 01
+ audio
+ io-handler none
no shutdown
!
ms two
@@ -109,4 +111,6 @@
ki comp128 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
no barred-access
rplmn 001 01
+ audio
+ io-handler none
no shutdown
diff --git a/src/host/layer23/include/osmocom/bb/mobile/settings.h b/src/host/layer23/include/osmocom/bb/mobile/settings.h
index 4e5d5a1..57f23ee 100644
--- a/src/host/layer23/include/osmocom/bb/mobile/settings.h
+++ b/src/host/layer23/include/osmocom/bb/mobile/settings.h
@@ -3,10 +3,29 @@
#define MOB_C7_DEFLT_ANY_TIMEOUT 30
+/* TCH frame I/O handler */
+enum audio_io_handler {
+ /* No handler, drop frames */
+ AUDIO_IOH_NONE = 0,
+ /* Return to sender */
+ AUDIO_IOH_LOOPBACK,
+};
+
+extern const struct value_string audio_io_handler_names[];
+static inline const char *audio_io_handler_name(enum audio_io_handler val)
+{ return get_value_string(audio_io_handler_names, val); }
+
+struct audio_settings {
+ enum audio_io_handler io_handler;
+};
+
struct gsm_settings {
char layer2_socket_path[128];
char sap_socket_path[128];
+ /* Audio settings */
+ struct audio_settings audio;
+
/* IMEI */
char imei[16];
char imeisv[17];
diff --git a/src/host/layer23/include/osmocom/bb/mobile/vty.h b/src/host/layer23/include/osmocom/bb/mobile/vty.h
index 3bec113..d066804 100644
--- a/src/host/layer23/include/osmocom/bb/mobile/vty.h
+++ b/src/host/layer23/include/osmocom/bb/mobile/vty.h
@@ -10,6 +10,7 @@
MS_NODE = _LAST_OSMOVTY_NODE + 1,
TESTSIM_NODE,
SUPPORT_NODE,
+ AUDIO_NODE,
};
int ms_vty_go_parent(struct vty *vty);
diff --git a/src/host/layer23/src/mobile/settings.c b/src/host/layer23/src/mobile/settings.c
index 388c754..9742b1d 100644
--- a/src/host/layer23/src/mobile/settings.c
+++ b/src/host/layer23/src/mobile/settings.c
@@ -41,6 +41,9 @@
strcpy(set->layer2_socket_path, layer2_socket_path);
strcpy(set->sap_socket_path, sap_socket_path);
+ /* Audio settings: drop TCH frames by default */
+ set->audio.io_handler = AUDIO_IOH_NONE;
+
/* network search */
set->plmn_mode = PLMN_MODE_AUTO;
@@ -194,3 +197,8 @@
return 0;
}
+const struct value_string audio_io_handler_names[] = {
+ { AUDIO_IOH_NONE, "none" },
+ { AUDIO_IOH_LOOPBACK, "loopback" },
+ { 0x00, NULL}
+};
diff --git a/src/host/layer23/src/mobile/vty_interface.c b/src/host/layer23/src/mobile/vty_interface.c
index 70ee703..073303c 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -65,6 +65,12 @@
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 @@
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 @@
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 @@
break;
case TESTSIM_NODE:
case SUPPORT_NODE:
+ case AUDIO_NODE:
vty->node = MS_NODE;
break;
default:
@@ -2918,6 +2969,7 @@
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 @@
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();
--
To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/17593
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: Ie03e4a6c6f81ea3925266dd22e87506d722a6e1a
Gerrit-Change-Number: 17593
Gerrit-PatchSet: 5
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200505/fd0f9fc8/attachment.htm>