fixeria has submitted this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/34912?usp=email )
Change subject: mobile: clarify TCH I/O {handler,format} naming
......................................................................
mobile: clarify TCH I/O {handler,format} naming
Before we add handling of TCH I/O for data calls, let's rename the
existing voice related symbols and struct fields to have 'voice'
in their names.
Change-Id: If6c799d11e225ad00ca5da5ae63dca20568a0ce0
Related: OS#4396
---
M src/host/layer23/include/osmocom/bb/common/settings.h
M src/host/layer23/src/common/settings.c
M src/host/layer23/src/mobile/gapk_io.c
M src/host/layer23/src/mobile/gsm48_rr.c
M src/host/layer23/src/mobile/voice.c
M src/host/layer23/src/mobile/vty_interface.c
6 files changed, 92 insertions(+), 78 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
diff --git a/src/host/layer23/include/osmocom/bb/common/settings.h
b/src/host/layer23/include/osmocom/bb/common/settings.h
index 468e8cd..458828a 100644
--- a/src/host/layer23/include/osmocom/bb/common/settings.h
+++ b/src/host/layer23/include/osmocom/bb/common/settings.h
@@ -26,39 +26,39 @@
MNCC_HANDLER_DUMMY,
};
-/* TCH frame I/O handler */
-enum audio_io_handler {
+/* TCH I/O handler for voice calls */
+enum tch_voice_io_handler {
/* No handler, drop frames */
- AUDIO_IOH_NONE = 0,
+ TCH_VOICE_IOH_NONE = 0,
/* libosmo-gapk based handler */
- AUDIO_IOH_GAPK,
+ TCH_VOICE_IOH_GAPK,
/* L1 PHY (e.g. Calypso DSP) */
- AUDIO_IOH_L1PHY,
+ TCH_VOICE_IOH_L1PHY,
/* External MNCC app (via MNCC socket) */
- AUDIO_IOH_MNCC_SOCK,
+ TCH_VOICE_IOH_MNCC_SOCK,
/* Return to sender */
- AUDIO_IOH_LOOPBACK,
+ TCH_VOICE_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); }
+extern const struct value_string tch_voice_io_handler_names[];
+static inline const char *tch_voice_io_handler_name(enum tch_voice_io_handler val)
+{ return get_value_string(tch_voice_io_handler_names, val); }
-/* TCH frame I/O format */
-enum audio_io_format {
- /* RTP format (RFC3551 for FR/EFR, RFC5993 for HR, RFC4867 for AMR) */
- AUDIO_IOF_RTP,
+/* TCH I/O format for voice calls */
+enum tch_voice_io_format {
+ /* RFC3551 for FR/EFR, RFC5993 for HR, RFC4867 for AMR */
+ TCH_VOICE_IOF_RTP,
/* Texas Instruments format, used by Calypso based phones (e.g. Motorola C1xx) */
- AUDIO_IOF_TI,
+ TCH_VOICE_IOF_TI,
};
-extern const struct value_string audio_io_format_names[];
-static inline const char *audio_io_format_name(enum audio_io_format val)
-{ return get_value_string(audio_io_format_names, val); }
+extern const struct value_string tch_voice_io_format_names[];
+static inline const char *tch_voice_io_format_name(enum tch_voice_io_format val)
+{ return get_value_string(tch_voice_io_format_names, val); }
-struct audio_settings {
- enum audio_io_handler io_handler;
- enum audio_io_format io_format;
+struct tch_voice_settings {
+ enum tch_voice_io_handler io_handler;
+ enum tch_voice_io_format io_format;
char alsa_output_dev[128];
char alsa_input_dev[128];
};
@@ -121,8 +121,8 @@
/* MNCC handler */
enum mncc_handler_t mncc_handler;
- /* Audio settings */
- struct audio_settings audio;
+ /* TCH settings */
+ struct tch_voice_settings tch_voice;
/* IMEI */
char imei[GSM23003_IMEI_NUM_DIGITS + 1];
diff --git a/src/host/layer23/src/common/settings.c
b/src/host/layer23/src/common/settings.c
index 5bae325..8768349 100644
--- a/src/host/layer23/src/common/settings.c
+++ b/src/host/layer23/src/common/settings.c
@@ -48,10 +48,10 @@
snprintf(set->mncc_socket_path, sizeof(set->mncc_socket_path) - 1,
"%s_%s", mncc_socket_path, ms->name);
- /* Audio settings: drop TCH frames by default */
- set->audio.io_handler = AUDIO_IOH_NONE;
- OSMO_STRLCPY_ARRAY(set->audio.alsa_output_dev, alsa_dev_default);
- OSMO_STRLCPY_ARRAY(set->audio.alsa_input_dev, alsa_dev_default);
+ /* TCH voice: drop frames by default */
+ set->tch_voice.io_handler = TCH_VOICE_IOH_NONE;
+ OSMO_STRLCPY_ARRAY(set->tch_voice.alsa_output_dev, alsa_dev_default);
+ OSMO_STRLCPY_ARRAY(set->tch_voice.alsa_input_dev, alsa_dev_default);
/* Built-in MNCC handler */
set->mncc_handler = MNCC_HANDLER_INTERNAL;
@@ -226,18 +226,18 @@
return 0;
}
-const struct value_string audio_io_handler_names[] = {
- { AUDIO_IOH_NONE, "none" },
- { AUDIO_IOH_GAPK, "gapk" },
- { AUDIO_IOH_L1PHY, "l1phy" },
- { AUDIO_IOH_MNCC_SOCK, "mncc-sock" },
- { AUDIO_IOH_LOOPBACK, "loopback" },
+const struct value_string tch_voice_io_handler_names[] = {
+ { TCH_VOICE_IOH_NONE, "none" },
+ { TCH_VOICE_IOH_GAPK, "gapk" },
+ { TCH_VOICE_IOH_L1PHY, "l1phy" },
+ { TCH_VOICE_IOH_MNCC_SOCK, "mncc-sock" },
+ { TCH_VOICE_IOH_LOOPBACK, "loopback" },
{ 0, NULL }
};
-const struct value_string audio_io_format_names[] = {
- { AUDIO_IOF_RTP, "rtp" },
- { AUDIO_IOF_TI, "ti" },
+const struct value_string tch_voice_io_format_names[] = {
+ { TCH_VOICE_IOF_RTP, "rtp" },
+ { TCH_VOICE_IOF_TI, "ti" },
{ 0, NULL }
};
diff --git a/src/host/layer23/src/mobile/gapk_io.c
b/src/host/layer23/src/mobile/gapk_io.c
index a2a4e84..997ed8a 100644
--- a/src/host/layer23/src/mobile/gapk_io.c
+++ b/src/host/layer23/src/mobile/gapk_io.c
@@ -409,16 +409,16 @@
return -ENOTSUP;
}
- switch (set->audio.io_format) {
- case AUDIO_IOF_RTP:
+ switch (set->tch_voice.io_format) {
+ case TCH_VOICE_IOF_RTP:
phy_fmt = phy_fmt_pick_rtp(codec);
break;
- case AUDIO_IOF_TI:
+ case TCH_VOICE_IOF_TI:
phy_fmt = phy_fmt_pick_ti(codec);
break;
default:
LOGP(DGAPK, LOGL_ERROR, "Unhandled I/O format %s\n",
- audio_io_format_name(set->audio.io_format));
+ tch_voice_io_format_name(set->tch_voice.io_format));
return -ENOTSUP;
}
@@ -447,8 +447,8 @@
osmo_gapk_set_talloc_ctx(gapk_io);
/* Prepare both source and sink chains */
- rc |= prepare_audio_source(gapk_io, set->audio.alsa_input_dev);
- rc |= prepare_audio_sink(gapk_io, set->audio.alsa_output_dev);
+ rc |= prepare_audio_source(gapk_io, set->tch_voice.alsa_input_dev);
+ rc |= prepare_audio_sink(gapk_io, set->tch_voice.alsa_output_dev);
/* Fall back to ms instance */
osmo_gapk_set_talloc_ctx(ms);
diff --git a/src/host/layer23/src/mobile/gsm48_rr.c
b/src/host/layer23/src/mobile/gsm48_rr.c
index a9dfec7..00e51a8 100644
--- a/src/host/layer23/src/mobile/gsm48_rr.c
+++ b/src/host/layer23/src/mobile/gsm48_rr.c
@@ -4428,7 +4428,7 @@
#ifdef WITH_GAPK_IO
/* Poke GAPK audio back-end, if it is chosen */
- if (ms->settings.audio.io_handler == AUDIO_IOH_GAPK) {
+ if (ms->settings.tch_voice.io_handler == TCH_VOICE_IOH_GAPK) {
int rc = gapk_io_init_ms_chan(ms, ch_type, mode);
if (rc)
return rc;
@@ -4983,7 +4983,7 @@
#ifdef WITH_GAPK_IO
/* Poke GAPK audio back-end, if it is chosen */
- if (ms->settings.audio.io_handler == AUDIO_IOH_GAPK)
+ if (ms->settings.tch_voice.io_handler == TCH_VOICE_IOH_GAPK)
gapk_io_init_ms_chan(ms, ch_type, cda->mode);
#endif
@@ -7022,16 +7022,16 @@
rr->tch_loop_mode = L1CTL_TCH_LOOP_OPEN;
/* Configure audio handling in the L1PHY */
- switch (ms->settings.audio.io_handler) {
- case AUDIO_IOH_L1PHY:
+ switch (ms->settings.tch_voice.io_handler) {
+ case TCH_VOICE_IOH_L1PHY:
rr->audio_mode = AUDIO_RX_SPEAKER | AUDIO_TX_MICROPHONE;
break;
- case AUDIO_IOH_MNCC_SOCK:
- case AUDIO_IOH_LOOPBACK:
- case AUDIO_IOH_GAPK:
+ case TCH_VOICE_IOH_MNCC_SOCK:
+ case TCH_VOICE_IOH_LOOPBACK:
+ case TCH_VOICE_IOH_GAPK:
rr->audio_mode = AUDIO_RX_TRAFFIC_IND | AUDIO_TX_TRAFFIC_REQ;
break;
- case AUDIO_IOH_NONE:
+ case TCH_VOICE_IOH_NONE:
rr->audio_mode = 0x00;
}
@@ -7150,7 +7150,7 @@
struct gsm48_rrlayer *rr = &ms->rrlayer;
uint8_t ch_type, ch_subch, ch_ts;
- if (ms->settings.audio.io_handler != AUDIO_IOH_NONE)
+ if (ms->settings.tch_voice.io_handler != TCH_VOICE_IOH_NONE)
return 0;
LOGP(DRR, LOGL_INFO, "setting audio mode to %d\n", mode);
diff --git a/src/host/layer23/src/mobile/voice.c b/src/host/layer23/src/mobile/voice.c
index acc0dce..9b3ffdc 100644
--- a/src/host/layer23/src/mobile/voice.c
+++ b/src/host/layer23/src/mobile/voice.c
@@ -76,15 +76,15 @@
/* Receive a Downlink voice frame from the lower layers */
static int gsm_recv_voice(struct osmocom_ms *ms, struct msgb *msg)
{
- switch (ms->settings.audio.io_handler) {
- case AUDIO_IOH_LOOPBACK:
+ switch (ms->settings.tch_voice.io_handler) {
+ case TCH_VOICE_IOH_LOOPBACK:
/* Remove the DL info header */
msgb_pull_to_l2(msg);
/* Send voice frame back */
return gsm_send_voice_msg(ms, msg);
- case AUDIO_IOH_MNCC_SOCK:
+ case TCH_VOICE_IOH_MNCC_SOCK:
return gsm_forward_mncc(ms, msg);
- case AUDIO_IOH_GAPK:
+ case TCH_VOICE_IOH_GAPK:
#ifdef WITH_GAPK_IO
/* Enqueue a frame to the DL TCH buffer */
if (ms->gapk_io != NULL)
@@ -93,8 +93,8 @@
msgb_free(msg);
break;
#endif
- case AUDIO_IOH_L1PHY:
- case AUDIO_IOH_NONE:
+ case TCH_VOICE_IOH_L1PHY:
+ case TCH_VOICE_IOH_NONE:
/* Drop voice frame */
msgb_free(msg);
}
diff --git a/src/host/layer23/src/mobile/vty_interface.c
b/src/host/layer23/src/mobile/vty_interface.c
index a91ab77..d6bac5a 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -1477,14 +1477,14 @@
vty_out(vty, " tch-voice%s", VTY_NEWLINE);
vty_out(vty, " io-handler %s%s",
- audio_io_handler_name(set->audio.io_handler), VTY_NEWLINE);
- if (set->audio.io_handler == AUDIO_IOH_GAPK) {
+ tch_voice_io_handler_name(set->tch_voice.io_handler), VTY_NEWLINE);
+ if (set->tch_voice.io_handler == TCH_VOICE_IOH_GAPK) {
vty_out(vty, " io-tch-format %s%s",
- audio_io_format_name(set->audio.io_format), VTY_NEWLINE);
+ tch_voice_io_format_name(set->tch_voice.io_format), VTY_NEWLINE);
vty_out(vty, " alsa-output-dev %s%s",
- set->audio.alsa_output_dev, VTY_NEWLINE);
+ &set->tch_voice.alsa_output_dev[0], VTY_NEWLINE);
vty_out(vty, " alsa-input-dev %s%s",
- set->audio.alsa_input_dev, VTY_NEWLINE);
+ &set->tch_voice.alsa_input_dev[0], VTY_NEWLINE);
}
if (ms->lua_script)
@@ -2491,15 +2491,15 @@
"audio", "(deprecated alias for 'tch-voice')\n");
-static int set_audio_io_handler(struct vty *vty, enum audio_io_handler val)
+static int set_tch_voice_io_handler(struct vty *vty, enum tch_voice_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)
+ if (val == set->tch_voice.io_handler)
return CMD_SUCCESS;
- set->audio.io_handler = val;
+ set->tch_voice.io_handler = val;
/* Restart required */
vty_restart_if_started(vty, ms);
@@ -2509,7 +2509,7 @@
DEFUN(cfg_ms_tch_voice_io_handler, cfg_ms_tch_voice_io_handler_cmd,
"io-handler (none|gapk|l1phy|mncc-sock|loopback)",
- "Set TCH frame I/O handler\n"
+ "Set TCH frame I/O handler for voice calls\n"
"No handler, drop TCH frames (default)\n"
"libosmo-gapk based I/O handler (requires ALSA)\n"
"L1 PHY (e.g. Calypso DSP in Motorola C1xx phones)\n"
@@ -2517,30 +2517,30 @@
"Return TCH frame payload back to sender\n")
{
struct osmocom_ms *ms = (struct osmocom_ms *) vty->index;
- int val = get_string_value(audio_io_handler_names, argv[0]);
+ int val = get_string_value(tch_voice_io_handler_names, argv[0]);
- if (val == AUDIO_IOH_MNCC_SOCK) {
+ if (val == TCH_VOICE_IOH_MNCC_SOCK) {
if (ms->settings.mncc_handler != MNCC_HANDLER_INTERNAL) {
- vty_out(vty, "Audio I/O handler 'mncc-sock' can only be used "
+ vty_out(vty, "TCH voice I/O handler 'mncc-sock' can only be used "
"with MNCC handler 'external'%s", VTY_NEWLINE);
return CMD_WARNING;
}
}
#ifndef WITH_GAPK_IO
- if (val == AUDIO_IOH_GAPK) {
+ if (val == TCH_VOICE_IOH_GAPK) {
vty_out(vty, "GAPK I/O is not compiled in (--with-gapk-io)%s", VTY_NEWLINE);
return CMD_WARNING;
}
#endif
- return set_audio_io_handler(vty, val);
+ return set_tch_voice_io_handler(vty, val);
}
DEFUN(cfg_ms_tch_voice_no_io_handler, cfg_ms_tch_voice_no_io_handler_cmd,
- "no io-handler", NO_STR "Disable TCH frame processing")
+ "no io-handler", NO_STR "Disable TCH frame handling for voice
calls\n")
{
- return set_audio_io_handler(vty, AUDIO_IOH_NONE);
+ return set_tch_voice_io_handler(vty, TCH_VOICE_IOH_NONE);
}
DEFUN(cfg_ms_tch_voice_io_tch_format, cfg_ms_tch_voice_io_tch_format_cmd,
@@ -2549,17 +2549,17 @@
"RTP format (RFC3551 for FR/EFR, RFC5993 for HR, RFC4867 for AMR)\n"
"Texas Instruments format, used by Calypso based phones (e.g. Motorola
C1xx)\n")
{
- int val = get_string_value(audio_io_format_names, argv[0]);
+ int val = get_string_value(tch_voice_io_format_names, argv[0]);
struct osmocom_ms *ms = (struct osmocom_ms *) vty->index;
struct gsm_settings *set = &ms->settings;
- if (set->audio.io_handler != AUDIO_IOH_GAPK) {
+ if (set->tch_voice.io_handler != TCH_VOICE_IOH_GAPK) {
vty_out(vty, "This parameter is only valid for GAPK%s", VTY_NEWLINE);
return CMD_WARNING;
}
OSMO_ASSERT(val >= 0);
- set->audio.io_format = val;
+ set->tch_voice.io_format = val;
return CMD_SUCCESS;
}
@@ -2573,7 +2573,7 @@
struct osmocom_ms *ms = vty->index;
struct gsm_settings *set = &ms->settings;
- OSMO_STRLCPY_ARRAY(set->audio.alsa_output_dev, argv[0]);
+ OSMO_STRLCPY_ARRAY(set->tch_voice.alsa_output_dev, argv[0]);
return CMD_SUCCESS;
}
@@ -2587,7 +2587,7 @@
struct osmocom_ms *ms = vty->index;
struct gsm_settings *set = &ms->settings;
- OSMO_STRLCPY_ARRAY(set->audio.alsa_input_dev, argv[0]);
+ OSMO_STRLCPY_ARRAY(set->tch_voice.alsa_input_dev, argv[0]);
return CMD_SUCCESS;
}
--
To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/34912?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: If6c799d11e225ad00ca5da5ae63dca20568a0ce0
Gerrit-Change-Number: 34912
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged