mobile/vty_interface.c: add new 'audio' section
This change introduces a new node named 'AUDIO', which is intended to organize some audio related settings, such as: - io-target - TCH frame I/O back-end (e.g. gapk, hardware); - alsa-output-dev - ALSA playback (i.e. speakers) device name; - alsa-input-dev - ALSA recording (i.e. mic) device name. The last two are actual when 'io-target' is set to 'gapk'. For now, all introduced parameters don't affect anything. Change-Id: I62cd5ef22ca2290fcafe65c78537ddbcb39fb8c6
This commit is contained in:
parent
273c504425
commit
ba1a4dbe12
|
@ -61,4 +61,8 @@ ms 1
|
|||
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-target hardware
|
||||
alsa-output-dev default
|
||||
alsa-input-dev default
|
||||
no shutdown
|
||||
|
|
|
@ -61,6 +61,10 @@ ms one
|
|||
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-target hardware
|
||||
alsa-output-dev default
|
||||
alsa-input-dev default
|
||||
no shutdown
|
||||
!
|
||||
ms two
|
||||
|
@ -113,4 +117,8 @@ ms two
|
|||
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-target hardware
|
||||
alsa-output-dev default
|
||||
alsa-input-dev default
|
||||
no shutdown
|
||||
|
|
|
@ -13,6 +13,24 @@ enum mncc_handler_t {
|
|||
MNCC_HANDLER_DUMMY,
|
||||
};
|
||||
|
||||
/* TCH frame I/O target */
|
||||
enum audio_io_target {
|
||||
/* Nothing, don't care about TCH */
|
||||
AUDIO_IO_NONE = 0,
|
||||
/* L1 hardware (e.g. Calypso DSP) */
|
||||
AUDIO_IO_HARDWARE,
|
||||
/* External MNCC application (e.g. LCR) */
|
||||
AUDIO_IO_SOCKET,
|
||||
/* Built-in GAPK-based back-end */
|
||||
AUDIO_IO_GAPK,
|
||||
};
|
||||
|
||||
struct audio_settings {
|
||||
enum audio_io_target io_target;
|
||||
char alsa_output_dev[128];
|
||||
char alsa_input_dev[128];
|
||||
};
|
||||
|
||||
struct gsm_settings {
|
||||
char layer2_socket_path[128];
|
||||
char sap_socket_path[128];
|
||||
|
@ -21,6 +39,9 @@ struct gsm_settings {
|
|||
/* MNCC handler */
|
||||
enum mncc_handler_t mncc_handler;
|
||||
|
||||
/* Audio settings */
|
||||
struct audio_settings audio;
|
||||
|
||||
/* IMEI */
|
||||
char imei[16];
|
||||
char imeisv[17];
|
||||
|
|
|
@ -10,6 +10,7 @@ enum ms_vty_node {
|
|||
MS_NODE = _LAST_OSMOVTY_NODE + 1,
|
||||
TESTSIM_NODE,
|
||||
SUPPORT_NODE,
|
||||
AUDIO_NODE,
|
||||
};
|
||||
|
||||
int ms_vty_go_parent(struct vty *vty);
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
static char *layer2_socket_path = "/tmp/osmocom_l2";
|
||||
static char *sap_socket_path = "/tmp/osmocom_sap";
|
||||
static char *mncc_socket_path = "/tmp/ms_mncc.%s";
|
||||
static char *alsa_dev_default = "default";
|
||||
|
||||
int gsm_settings_init(struct osmocom_ms *ms)
|
||||
{
|
||||
|
@ -49,6 +50,13 @@ int gsm_settings_init(struct osmocom_ms *ms)
|
|||
/* Built-in MNCC handler */
|
||||
set->mncc_handler = MNCC_HANDLER_MOBILE;
|
||||
|
||||
/* Audio settings */
|
||||
set->audio.io_target = AUDIO_IO_GAPK;
|
||||
strncpy(set->audio.alsa_output_dev, alsa_dev_default,
|
||||
sizeof(set->audio.alsa_output_dev) - 1);
|
||||
strncpy(set->audio.alsa_input_dev, alsa_dev_default,
|
||||
sizeof(set->audio.alsa_input_dev) - 1);
|
||||
|
||||
/* network search */
|
||||
set->plmn_mode = PLMN_MODE_AUTO;
|
||||
|
||||
|
|
|
@ -71,6 +71,12 @@ struct cmd_node support_node = {
|
|||
1
|
||||
};
|
||||
|
||||
struct cmd_node audio_node = {
|
||||
AUDIO_NODE,
|
||||
"%s(audio)# ",
|
||||
1
|
||||
};
|
||||
|
||||
static void print_vty(void *priv, const char *fmt, ...)
|
||||
{
|
||||
char buffer[1000];
|
||||
|
@ -1544,6 +1550,26 @@ static void config_write_ms(struct vty *vty, struct osmocom_ms *ms)
|
|||
vty_out(vty, " c7-any-timeout %d%s",
|
||||
set->any_timeout, VTY_NEWLINE);
|
||||
|
||||
vty_out(vty, " audio%s", VTY_NEWLINE);
|
||||
switch (set->audio.io_target) {
|
||||
case AUDIO_IO_HARDWARE:
|
||||
vty_out(vty, " io-target hardware%s", VTY_NEWLINE);
|
||||
break;
|
||||
case AUDIO_IO_SOCKET:
|
||||
vty_out(vty, " io-target socket%s", VTY_NEWLINE);
|
||||
break;
|
||||
case AUDIO_IO_GAPK:
|
||||
vty_out(vty, " io-target gapk%s", VTY_NEWLINE);
|
||||
break;
|
||||
case AUDIO_IO_NONE:
|
||||
default:
|
||||
vty_out(vty, " no io-target%s", VTY_NEWLINE);
|
||||
}
|
||||
vty_out(vty, " alsa-output-dev %s%s",
|
||||
set->audio.alsa_output_dev, VTY_NEWLINE);
|
||||
vty_out(vty, " alsa-input-dev %s%s",
|
||||
set->audio.alsa_input_dev, 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);
|
||||
|
@ -2807,6 +2833,94 @@ DEFUN(cfg_test_hplmn, cfg_test_hplmn_cmd, "hplmn-search (everywhere|foreign-coun
|
|||
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;
|
||||
}
|
||||
|
||||
DEFUN(cfg_ms_audio_io_target, cfg_ms_audio_io_target_cmd,
|
||||
"io-target (gapk|hardware|socket)", "Set TCH frame I/O target\n"
|
||||
"Built-in GAPK-based back-end (default)\n"
|
||||
"L1 hardware (e.g. Calypso DSP)\n"
|
||||
"External MNCC application (e.g. LCR)")
|
||||
{
|
||||
struct osmocom_ms *ms = vty->index;
|
||||
struct gsm_settings *set = &ms->settings;
|
||||
|
||||
switch (argv[0][0]) {
|
||||
case 'g':
|
||||
set->audio.io_target = AUDIO_IO_GAPK;
|
||||
break;
|
||||
case 'h':
|
||||
set->audio.io_target = AUDIO_IO_HARDWARE;
|
||||
break;
|
||||
case 's':
|
||||
set->audio.io_target = AUDIO_IO_SOCKET;
|
||||
break;
|
||||
default:
|
||||
vty_out(vty, "Given io-target invalid%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
/* Restart required */
|
||||
vty_restart_if_started(vty, ms);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_ms_audio_no_io_target, cfg_ms_audio_no_io_target_cmd,
|
||||
"no io-target", NO_STR "Disable TCH frame processing")
|
||||
{
|
||||
struct osmocom_ms *ms = vty->index;
|
||||
struct gsm_settings *set = &ms->settings;
|
||||
|
||||
/* Nothing, don't care about TCH */
|
||||
set->audio.io_target = AUDIO_IO_NONE;
|
||||
|
||||
/* Restart required */
|
||||
vty_restart_if_started(vty, ms);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_ms_audio_alsa_out_dev, cfg_ms_audio_alsa_out_dev_cmd,
|
||||
"alsa-output-dev (default|NAME)",
|
||||
"Set ALSA playback (i.e. speakers) device name\n"
|
||||
"Default system playback device (default)\n"
|
||||
"Name of a custom playback device")
|
||||
{
|
||||
struct osmocom_ms *ms = vty->index;
|
||||
struct gsm_settings *set = &ms->settings;
|
||||
const char *dev_name = argv[0];
|
||||
|
||||
/* Just copy device name */
|
||||
strncpy(set->audio.alsa_output_dev, dev_name,
|
||||
sizeof(set->audio.alsa_output_dev) - 1);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_ms_audio_alsa_in_dev, cfg_ms_audio_alsa_in_dev_cmd,
|
||||
"alsa-input-dev (default|NAME)",
|
||||
"Set ALSA recording (i.e. mic) device name\n"
|
||||
"Default system recording device (default)\n"
|
||||
"Name of a custom recording device")
|
||||
{
|
||||
struct osmocom_ms *ms = vty->index;
|
||||
struct gsm_settings *set = &ms->settings;
|
||||
const char *dev_name = argv[0];
|
||||
|
||||
/* Just copy device name */
|
||||
strncpy(set->audio.alsa_input_dev, dev_name,
|
||||
sizeof(set->audio.alsa_input_dev) - 1);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_no_shutdown, cfg_ms_no_shutdown_cmd, "no shutdown",
|
||||
NO_STR "Activate and run MS")
|
||||
{
|
||||
|
@ -2887,6 +3001,7 @@ int ms_vty_go_parent(struct vty *vty)
|
|||
break;
|
||||
case TESTSIM_NODE:
|
||||
case SUPPORT_NODE:
|
||||
case AUDIO_NODE:
|
||||
vty->node = MS_NODE;
|
||||
break;
|
||||
default:
|
||||
|
@ -3001,6 +3116,7 @@ int ms_vty_init(void)
|
|||
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);
|
||||
|
@ -3078,6 +3194,12 @@ int ms_vty_init(void)
|
|||
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_target_cmd);
|
||||
install_element(AUDIO_NODE, &cfg_ms_audio_no_io_target_cmd);
|
||||
install_element(AUDIO_NODE, &cfg_ms_audio_alsa_out_dev_cmd);
|
||||
install_element(AUDIO_NODE, &cfg_ms_audio_alsa_in_dev_cmd);
|
||||
|
||||
/* Register the talloc context introspection command */
|
||||
osmo_talloc_vty_add_cmds();
|
||||
|
||||
|
|
Loading…
Reference in New Issue