fixeria submitted this change.

View Change

Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
mobile: allow enabling/disabling handling of voice in the L1PHY

Some L1PHY targets (e.g. Calypso based Mot C1xx phones) have built in
microphone and speaker. Some targets do not have them. Currently we
unconditionally instruct the L1PHY to handle TCH frames internally.
Make this behavior configurable via the VTY interface.

Change-Id: I131f213ef7c2736f7310f0183b83f3bc3064cd98
Related: OS#5599
---
M src/host/layer23/include/osmocom/bb/mobile/settings.h
M src/host/layer23/src/mobile/gsm48_rr.c
M src/host/layer23/src/mobile/settings.c
M src/host/layer23/src/mobile/vty_interface.c
4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/host/layer23/include/osmocom/bb/mobile/settings.h b/src/host/layer23/include/osmocom/bb/mobile/settings.h
index d5620ff..8edde53 100644
--- a/src/host/layer23/include/osmocom/bb/mobile/settings.h
+++ b/src/host/layer23/include/osmocom/bb/mobile/settings.h
@@ -17,6 +17,8 @@
enum audio_io_handler {
/* No handler, drop frames */
AUDIO_IOH_NONE = 0,
+ /* L1 PHY (e.g. Calypso DSP) */
+ AUDIO_IOH_L1PHY,
/* Return to sender */
AUDIO_IOH_LOOPBACK,
};
diff --git a/src/host/layer23/src/mobile/gsm48_rr.c b/src/host/layer23/src/mobile/gsm48_rr.c
index 1c7036c..8b4c123 100644
--- a/src/host/layer23/src/mobile/gsm48_rr.c
+++ b/src/host/layer23/src/mobile/gsm48_rr.c
@@ -5593,9 +5593,20 @@

start_rr_t_meas(rr, 1, 0);

- rr->audio_mode = AUDIO_TX_MICROPHONE | AUDIO_RX_SPEAKER;
rr->tch_loop_mode = L1CTL_TCH_LOOP_OPEN;

+ /* Configure audio handling in the L1PHY */
+ switch (ms->settings.audio.io_handler) {
+ case AUDIO_IOH_L1PHY:
+ rr->audio_mode = AUDIO_RX_SPEAKER | AUDIO_TX_MICROPHONE;
+ break;
+ case AUDIO_IOH_LOOPBACK:
+ rr->audio_mode = AUDIO_RX_TRAFFIC_IND | AUDIO_TX_TRAFFIC_REQ;
+ break;
+ case AUDIO_IOH_NONE:
+ rr->audio_mode = 0x00;
+ }
+
return 0;
}

diff --git a/src/host/layer23/src/mobile/settings.c b/src/host/layer23/src/mobile/settings.c
index 3444d66..10e9984 100644
--- a/src/host/layer23/src/mobile/settings.c
+++ b/src/host/layer23/src/mobile/settings.c
@@ -203,6 +203,7 @@

const struct value_string audio_io_handler_names[] = {
{ AUDIO_IOH_NONE, "none" },
+ { AUDIO_IOH_L1PHY, "l1phy" },
{ 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 9c3e429..e3005ca 100644
--- a/src/host/layer23/src/mobile/vty_interface.c
+++ b/src/host/layer23/src/mobile/vty_interface.c
@@ -2831,10 +2831,11 @@
}

DEFUN(cfg_ms_audio_io_handler, cfg_ms_audio_io_handler_cmd,
- "io-handler (loopback|none)",
+ "io-handler (none|l1phy|loopback)",
"Set TCH frame I/O handler\n"
- "Return TCH frame payload back to sender\n"
- "No handler, drop TCH frames (default)")
+ "No handler, drop TCH frames (default)\n"
+ "L1 PHY (e.g. Calypso DSP in Motorola C1xx phones)\n"
+ "Return TCH frame payload back to sender\n")
{
int val = get_string_value(audio_io_handler_names, argv[0]);
return set_audio_io_handler(vty, val);

To view, visit change 30327. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I131f213ef7c2736f7310f0183b83f3bc3064cd98
Gerrit-Change-Number: 30327
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-CC: msuraev <msuraev@sysmocom.de>
Gerrit-MessageType: merged