[alsa-devel] [alsa-lib][RFC PATCH] ucm: reset config id of condition items
Jaroslav Kysela
perex at perex.cz
Thu Apr 23 19:36:03 CEST 2020
Dne 23. 04. 20 v 15:06 Pierre-Louis Bossart napsal(a):
>
>
> On 4/22/20 8:58 PM, libin.yang at linux.intel.com wrote:
>> From: Libin Yang <libin.yang at intel.com>
>>
>> UCMv2 supports "If" statement and will merge the same items with
>> compound_merge(). If the items have the same id, it will fail to
>> add the config items. And the id of the item in an array is
>> automatically generated with the increased number. It is probably
>> that some items to be merged have the same id. Let's add prefix
>> in the id to avoid such situation.
>>
>> For example:
>>
>> If.seq1 {
>> Condition {
>> Type ControlExists
>> Control "name='PGA1.0 1 Master Playback Volume'"
>> }
>> True {
>> EnableSequence [
>> cset "name='PGA1.0 1 Master Playback Volume' 50"
>> ]
>> }
>> }
>>
>> If.seq2 {
>> Condition {
>> Type ControlExists
>> Control "name='PGA2.0 2 Master Playback Volume'"
>> }
>> True {
>> EnableSequence [
>> cset "name='PGA2.0 2 Master Playback Volume' 50"
>> ]
>> }
>> }
>>
>> If.seq3 {
>> Condition {
>> Type ControlExists
>> Control "name='PGA3.0 3 Master Playback Volume'"
>> }
>> True {
>> EnableSequence [
>> cset "name='PGA3.0 3 Master Playback Volume' 50"
>> ]
>> }
>> }
>>
>> If seq1, seq2 and seq3 conditions are true, UCM will fail to initialize.
>>
>> This patch rename the config id to avoid the same id conflict.
>
> The example confuses me completely, I checked three times and the seq1,
> seq2 and seq3 parts configure different controls.
>
> Can you clarify what the conflict is and what id you were referring to?
The arrays in the ALSA configs are represented like:
User syntax:
name [
value0
value1
]
Internal tree:
name.0 value0
name.1 value1
or
name {
0 value0
1 value1
}
(all three syntaxes are equal, the array just removes the indexes for the
readability)
This patch tries to change name.0 to something like name.unique-0 or so which
is not so much pretty.
You can just declare the new sequences like this to avoid clash:
EnableSequence.seq3.cset "name='PGA3.0 3 Master Playback Volume' 50"
Jaroslav
--
Jaroslav Kysela <perex at perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
More information about the Alsa-devel
mailing list