<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmocom-bb/+/17593">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mobile: add audio config, with unused audio loopback setting<br><br>The aim is to add configurable audio loopback to mobile. An existing patch on a<br>branch from fixeria [1] adds the audio config section. Add a reduced version of<br>this audio config to be compatible with the future merge.<br><br>Add the audio loopback setting, so far without functionality.<br>Subsequent patch adds the actual loopback.<br><br>[1] osmocom-bb branch fixeria/audio,<br>    patch "mobile/vty_interface.c: add new 'audio' section"<br>    Change-id I62cd5ef22ca2290fcafe65c78537ddbcb39fb8c6<br><br>Change-Id: Ie03e4a6c6f81ea3925266dd22e87506d722a6e1a<br>---<br>M doc/examples/mobile/default.cfg<br>M doc/examples/mobile/multi_ms.cfg<br>M src/host/layer23/include/osmocom/bb/mobile/settings.h<br>M src/host/layer23/include/osmocom/bb/mobile/vty.h<br>M src/host/layer23/src/mobile/settings.c<br>M src/host/layer23/src/mobile/vty_interface.c<br>6 files changed, 93 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/93/17593/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/examples/mobile/default.cfg b/doc/examples/mobile/default.cfg</span><br><span>index cc81630..596a580 100644</span><br><span>--- a/doc/examples/mobile/default.cfg</span><br><span>+++ b/doc/examples/mobile/default.cfg</span><br><span>@@ -59,4 +59,6 @@</span><br><span>   ki comp128 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span><br><span>   no barred-access</span><br><span>   rplmn 001 01</span><br><span style="color: hsl(120, 100%, 40%);">+ audio</span><br><span style="color: hsl(120, 100%, 40%);">+  io-target none</span><br><span>  no shutdown</span><br><span>diff --git a/doc/examples/mobile/multi_ms.cfg b/doc/examples/mobile/multi_ms.cfg</span><br><span>index bef2406..4735189 100644</span><br><span>--- a/doc/examples/mobile/multi_ms.cfg</span><br><span>+++ b/doc/examples/mobile/multi_ms.cfg</span><br><span>@@ -59,6 +59,8 @@</span><br><span>   ki comp128 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span><br><span>   no barred-access</span><br><span>   rplmn 001 01</span><br><span style="color: hsl(120, 100%, 40%);">+ audio</span><br><span style="color: hsl(120, 100%, 40%);">+  io-target none</span><br><span>  no shutdown</span><br><span> !</span><br><span> ms two</span><br><span>@@ -109,4 +111,6 @@</span><br><span>   ki comp128 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff</span><br><span>   no barred-access</span><br><span>   rplmn 001 01</span><br><span style="color: hsl(120, 100%, 40%);">+ audio</span><br><span style="color: hsl(120, 100%, 40%);">+  io-target none</span><br><span>  no shutdown</span><br><span>diff --git a/src/host/layer23/include/osmocom/bb/mobile/settings.h b/src/host/layer23/include/osmocom/bb/mobile/settings.h</span><br><span>index 4e5d5a1..f4682d4 100644</span><br><span>--- a/src/host/layer23/include/osmocom/bb/mobile/settings.h</span><br><span>+++ b/src/host/layer23/include/osmocom/bb/mobile/settings.h</span><br><span>@@ -3,10 +3,29 @@</span><br><span> </span><br><span> #define MOB_C7_DEFLT_ANY_TIMEOUT        30</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* TCH frame I/O target */</span><br><span style="color: hsl(120, 100%, 40%);">+enum audio_io_target {</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Nothing, don't care about TCH */</span><br><span style="color: hsl(120, 100%, 40%);">+       AUDIO_IO_NONE = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Return to sender */</span><br><span style="color: hsl(120, 100%, 40%);">+        AUDIO_IO_LOOPBACK,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+extern const struct value_string audio_io_target_names[];</span><br><span style="color: hsl(120, 100%, 40%);">+static inline const char *audio_io_target_name(enum audio_io_target val)</span><br><span style="color: hsl(120, 100%, 40%);">+{ return get_value_string(audio_io_target_names, val); }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct audio_settings {</span><br><span style="color: hsl(120, 100%, 40%);">+    enum audio_io_target io_target;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct gsm_settings {</span><br><span>       char                    layer2_socket_path[128];</span><br><span>     char                    sap_socket_path[128];</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     /* Audio settings */</span><br><span style="color: hsl(120, 100%, 40%);">+  struct audio_settings   audio;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     /* IMEI */</span><br><span>   char                    imei[16];</span><br><span>    char                    imeisv[17];</span><br><span>diff --git a/src/host/layer23/include/osmocom/bb/mobile/vty.h b/src/host/layer23/include/osmocom/bb/mobile/vty.h</span><br><span>index 3bec113..d066804 100644</span><br><span>--- a/src/host/layer23/include/osmocom/bb/mobile/vty.h</span><br><span>+++ b/src/host/layer23/include/osmocom/bb/mobile/vty.h</span><br><span>@@ -10,6 +10,7 @@</span><br><span>         MS_NODE = _LAST_OSMOVTY_NODE + 1,</span><br><span>    TESTSIM_NODE,</span><br><span>        SUPPORT_NODE,</span><br><span style="color: hsl(120, 100%, 40%);">+ AUDIO_NODE,</span><br><span> };</span><br><span> </span><br><span> int ms_vty_go_parent(struct vty *vty);</span><br><span>diff --git a/src/host/layer23/src/mobile/settings.c b/src/host/layer23/src/mobile/settings.c</span><br><span>index 388c754..1898bbd 100644</span><br><span>--- a/src/host/layer23/src/mobile/settings.c</span><br><span>+++ b/src/host/layer23/src/mobile/settings.c</span><br><span>@@ -41,6 +41,9 @@</span><br><span>     strcpy(set->layer2_socket_path, layer2_socket_path);</span><br><span>      strcpy(set->sap_socket_path, sap_socket_path);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Audio settings */</span><br><span style="color: hsl(120, 100%, 40%);">+  set->audio.io_target = AUDIO_IO_NONE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* network search */</span><br><span>         set->plmn_mode = PLMN_MODE_AUTO;</span><br><span> </span><br><span>diff --git a/src/host/layer23/src/mobile/vty_interface.c b/src/host/layer23/src/mobile/vty_interface.c</span><br><span>index 70ee703..fc9ec6f 100644</span><br><span>--- a/src/host/layer23/src/mobile/vty_interface.c</span><br><span>+++ b/src/host/layer23/src/mobile/vty_interface.c</span><br><span>@@ -65,6 +65,12 @@</span><br><span>        1</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct cmd_node audio_node = {</span><br><span style="color: hsl(120, 100%, 40%);">+   AUDIO_NODE,</span><br><span style="color: hsl(120, 100%, 40%);">+   "%s(audio)# ",</span><br><span style="color: hsl(120, 100%, 40%);">+      1</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void print_vty(void *priv, const char *fmt, ...)</span><br><span> {</span><br><span>      char buffer[1000];</span><br><span>@@ -1526,6 +1532,16 @@</span><br><span>          vty_out(vty, " c7-any-timeout %d%s",</span><br><span>                       set->any_timeout, VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        vty_out(vty, " audio%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+      switch (set->audio.io_target) {</span><br><span style="color: hsl(120, 100%, 40%);">+    case AUDIO_IO_NONE:</span><br><span style="color: hsl(120, 100%, 40%);">+           vty_out(vty, "  no io-target%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              vty_out(vty, "  io-target %s%s", audio_io_target_name(set->audio.io_target), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* no shutdown must be written to config, because shutdown is default */</span><br><span>     vty_out(vty, " %sshutdown%s", (ms->shutdown != MS_SHUTDOWN_NONE) ? "" : "no ",</span><br><span>              VTY_NEWLINE);</span><br><span>@@ -2727,6 +2743,48 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* per audio config */</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_ms_audio, cfg_ms_audio_cmd, "audio",</span><br><span style="color: hsl(120, 100%, 40%);">+        "Configure audio settings")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      vty->node = AUDIO_NODE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static int set_audio_io_target(struct gsm_settings *set, enum audio_io_target val)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Don't restart on unchanged value */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (val == set->audio.io_target)</span><br><span style="color: hsl(120, 100%, 40%);">+           return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+   set->audio.io_target = val;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Restart required */</span><br><span style="color: hsl(120, 100%, 40%);">+        vty_restart_if_started(vty, ms);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_ms_audio_io_target, cfg_ms_audio_io_target_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+   "io-target loopback", "Set TCH frame I/O target\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Return TCH frame payload back to sender\n")</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct osmocom_ms *ms = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gsm_settings *set = &ms->settings;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return set_audio_io_target(set, get_string_value(audio_io_target_names, argv[0]));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_ms_audio_no_io_target, cfg_ms_audio_no_io_target_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "no io-target", NO_STR "Disable TCH frame processing")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmocom_ms *ms = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gsm_settings *set = &ms->settings;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return set_audio_io_target(set, AUDIO_IO_NONE);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(cfg_no_shutdown, cfg_ms_no_shutdown_cmd, "no shutdown",</span><br><span>      NO_STR "Activate and run MS")</span><br><span> {</span><br><span>@@ -2807,6 +2865,7 @@</span><br><span>                 break;</span><br><span>       case TESTSIM_NODE:</span><br><span>   case SUPPORT_NODE:</span><br><span style="color: hsl(120, 100%, 40%);">+    case AUDIO_NODE:</span><br><span>             vty->node = MS_NODE;</span><br><span>              break;</span><br><span>       default:</span><br><span>@@ -2918,6 +2977,7 @@</span><br><span>     install_element(MS_NODE, &cfg_ms_abbrev_cmd);</span><br><span>    install_element(MS_NODE, &cfg_ms_no_abbrev_cmd);</span><br><span>         install_element(MS_NODE, &cfg_ms_testsim_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+    install_element(MS_NODE, &cfg_ms_audio_cmd);</span><br><span>     install_element(MS_NODE, &cfg_ms_neighbour_cmd);</span><br><span>         install_element(MS_NODE, &cfg_ms_no_neighbour_cmd);</span><br><span>      install_element(MS_NODE, &cfg_ms_any_timeout_cmd);</span><br><span>@@ -2995,6 +3055,10 @@</span><br><span>      install_element(MS_NODE, &cfg_ms_script_load_run_cmd);</span><br><span>   install_element(MS_NODE, &cfg_ms_no_script_load_run_cmd);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     install_node(&audio_node, config_write_dummy);</span><br><span style="color: hsl(120, 100%, 40%);">+    install_element(AUDIO_NODE, &cfg_ms_audio_io_target_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+ install_element(AUDIO_NODE, &cfg_ms_audio_no_io_target_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* Register the talloc context introspection command */</span><br><span>      osmo_talloc_vty_add_cmds();</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmocom-bb/+/17593">change 17593</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmocom-bb/+/17593"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ie03e4a6c6f81ea3925266dd22e87506d722a6e1a </div>
<div style="display:none"> Gerrit-Change-Number: 17593 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>