[alsa-devel] [alsa-lib][RFC PATCH] ucm: reset config id of condition items
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Thu Apr 23 20:27:37 CEST 2020
On 4/23/20 12:36 PM, Jaroslav Kysela wrote:
> 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"
Wow, I had no idea. Thanks for enlightening us :-)
More information about the Alsa-devel
mailing list