Skip to content

Commit a570634

Browse files
committed
ucm: handle 'set _once' command
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
1 parent afb5a9c commit a570634

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

‎include/use-case.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,7 @@ int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
413413
* \return Zero if success, otherwise a negative error code
414414
*
415415
* Known identifiers:
416+
* - _once - execute the once sequence (value = NULL)
416417
* - _verb - set current verb = value
417418
* - _enadev - enable given device = value
418419
* - _disdev - disable given device = value

‎src/ucm/main.c‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1830,6 +1830,24 @@ int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
18301830
return err;
18311831
}
18321832

1833+
static int set_once_user(snd_use_case_mgr_t *uc_mgr,
1834+
const char *value)
1835+
{
1836+
int err;
1837+
1838+
if (value != NULL && *value) {
1839+
uc_error("error: wrong value for _once (%s)", value);
1840+
return -EINVAL;
1841+
}
1842+
err = execute_sequence(uc_mgr, &uc_mgr->once_list,
1843+
&uc_mgr->value_list, NULL, NULL);
1844+
if (err < 0) {
1845+
uc_error("Unable to execute once sequence");
1846+
return err;
1847+
}
1848+
return err;
1849+
}
1850+
18331851
static int handle_transition_verb(snd_use_case_mgr_t *uc_mgr,
18341852
struct use_case_verb *new_verb)
18351853
{
@@ -2041,7 +2059,9 @@ int snd_use_case_set(snd_use_case_mgr_t *uc_mgr,
20412059
int err = 0;
20422060

20432061
pthread_mutex_lock(&uc_mgr->mutex);
2044-
if (strcmp(identifier, "_verb") == 0)
2062+
if (strcmp(identifier, "_once") == 0)
2063+
err = set_once_user(uc_mgr, value);
2064+
else if (strcmp(identifier, "_verb") == 0)
20452065
err = set_verb_user(uc_mgr, value);
20462066
else if (strcmp(identifier, "_enadev") == 0)
20472067
err = set_device_user(uc_mgr, value, 1);

0 commit comments

Comments
 (0)