ucm: add @@LibraryVersion and @@SyntaxVersion variables

It may be useful to check the current syntax version (and maybe
library version) when new features are added.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2025-03-19 11:54:46 +01:00
parent 7fbd47ce79
commit 12f6790910
2 changed files with 20 additions and 13 deletions

View file

@ -1502,6 +1502,11 @@ const char *parse_open_variables(snd_use_case_mgr_t *uc_mgr, const char *name)
skip: skip:
snd_config_delete(cfg); snd_config_delete(cfg);
uc_mgr_set_variable(uc_mgr, "@@LibraryVersion", SND_LIB_VERSION_STR);
snprintf(vname, sizeof(vname), "%d", SYNTAX_VERSION_MAX);
uc_mgr_set_variable(uc_mgr, "@@SyntaxVersion", vname);
return end + 3; return end + 3;
} }

View file

@ -386,25 +386,27 @@ Evaluation order | Configuration block | Evaluation restart
The dynamic tree identifiers and assigned values in the configuration tree are The dynamic tree identifiers and assigned values in the configuration tree are
substituted. The substitutes strings are in the table bellow. substituted. The substitutes strings are in the table bellow.
Substituted string | Value Substituted string | Value
---------------------|--------------------- -----------------------|---------------------
${OpenName} | Original UCM card name (passed to snd_use_case_mgr_open()) ${OpenName} | Original UCM card name (passed to snd_use_case_mgr_open())
${ConfLibDir} | Library top-level configuration directory (e.g. /usr/share/alsa) ${ConfLibDir} | Library top-level configuration directory (e.g. /usr/share/alsa)
${ConfTopDir} | Top-level UCM configuration directory (e.g. /usr/share/alsa/ucm2) ${ConfTopDir} | Top-level UCM configuration directory (e.g. /usr/share/alsa/ucm2)
${ConfDir} | Card's UCM configuration directory (e.g. /usr/share/alsa/ucm2/conf.d/USB-Audio) ${ConfDir} | Card's UCM configuration directory (e.g. /usr/share/alsa/ucm2/conf.d/USB-Audio)
${ConfName} | Configuration name (e.g. USB-Audio.conf) ${ConfName} | Configuration name (e.g. USB-Audio.conf)
${CardNumber} | Real ALSA card number (or empty string for the virtual UCM card) ${CardNumber} | Real ALSA card number (or empty string for the virtual UCM card)
${CardId} | ALSA card identifier (see snd_ctl_card_info_get_id()) ${CardId} | ALSA card identifier (see snd_ctl_card_info_get_id())
${CardDriver} | ALSA card driver (see snd_ctl_card_info_get_driver()) ${CardDriver} | ALSA card driver (see snd_ctl_card_info_get_driver())
${CardName} | ALSA card name (see snd_ctl_card_info_get_name()) ${CardName} | ALSA card name (see snd_ctl_card_info_get_name())
${CardLongName} | ALSA card long name (see snd_ctl_card_info_get_longname()) ${CardLongName} | ALSA card long name (see snd_ctl_card_info_get_longname())
${CardComponents} | ALSA card components (see snd_ctl_card_info_get_components()) ${CardComponents} | ALSA card components (see snd_ctl_card_info_get_components())
${env:\<str\>} | Environment variable \<str\> ${env:\<str\>} | Environment variable \<str\>
${sys:\<str\>} | Contents of sysfs file \<str\> ${sys:\<str\>} | Contents of sysfs file \<str\>
${var:\<str\>} | UCM parser variable (set using a _Define_ block) ${var:\<str\>} | UCM parser variable (set using a _Define_ block)
${eval:\<str\>} | Evaluate expression like *($var+2)/3* [**Syntax 5**] ${eval:\<str\>} | Evaluate expression like *($var+2)/3* [**Syntax 5**]
${find-card:\<str\>} | Find a card - see _Find card substitution_ section ${find-card:\<str\>} | Find a card - see _Find card substitution_ section
${find-device:\<str\>} | Find a device - see _Find device substitution_ section ${find-device:\<str\>} | Find a device - see _Find device substitution_ section
@@LibraryVersion | e.g. "1.2.14" [**Syntax 8**]
@@SyntaxVersion | e.g. "8" [**Syntax 8**]
#### Special whole string substitution #### Special whole string substitution