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 <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: jolly <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to