Dne 23. 04. 20 v 15:06 Pierre-Louis Bossart napsal(a):
On 4/22/20 8:58 PM, libin.yang@linux.intel.com wrote:
From: Libin Yang libin.yang@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