Changed arguments CARD to string (to accept card IDs).
Enhanced function card_strtype to accept card IDs.
]
}
+# defaults
+
+defaults.ctl.card 0
+defaults.pcm.card 0
+defaults.pcm.device 0
+defaults.pcm.subdevice -1
+defaults.pcm.front.card defaults.pcm.card
+defaults.pcm.front.device defaults.pcm.device
+defaults.rawmidi.card 0
+defaults.rawmidi.device 0
+defaults.rawmidi.subdevice -1
+
#
# PCM interface
#
pcm.hw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.card
+ }
}
}
@args.DEV {
vars [
ALSA_PCM_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.device
+ }
}
}
@args.SUBDEV {
type integer
- default -1
+ default {
+ @func macro
+ name defaults.pcm.subdevice
+ }
}
type hw
card $CARD
pcm.plughw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.card
+ }
}
}
@args.DEV {
vars [
ALSA_PCM_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.device
+ }
}
}
@args.SUBDEV {
type integer
- default -1
+ default {
+ @func macro
+ name defaults.pcm.subdevice
+ }
}
type plug
slave.pcm {
slave.pcm {
type hw
card {
- @func igetenv
+ @func getenv
vars [
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.card
+ }
}
device {
@func igetenv
vars [
ALSA_PCM_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.device
+ }
+ }
+ subdevice {
+ @func macro
+ name defaults.pcm.subdevice
}
- subdevice -1
}
}
pcm.front {
@args [ CARD DEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_FRONT_CARD
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.front.card
+ }
}
}
@args.DEV {
vars [
ALSA_FRONT_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.front.device
+ }
}
}
@func refer
pcm.rear {
@args [ CARD DEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_REAR_CARD
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.rear.card
+ }
}
}
@args.DEV {
vars [
ALSA_REAR_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.rear.device
+ }
}
}
@func refer
pcm.center_lfe {
@args [ CARD DEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_CENTER_LFE_CARD
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.center_lfe.card
+ }
}
}
@args.DEV {
vars [
ALSA_CENTER_LFE_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.center_lfe.device
+ }
}
}
@func refer
pcm.surround40 {
@args [ CARD DEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_SURROUND40_CARD
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.surround40.card
+ }
}
}
@args.DEV {
vars [
ALSA_SURROUND40_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.surround40.device
+ }
}
}
@func refer
pcm.surround51 {
@args [ CARD DEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_SURROUND51_CARD
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.surround51.card
+ }
}
}
@args.DEV {
vars [
ALSA_SURROUND51_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.surround51.device
+ }
}
}
@func refer
pcm.iec958 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_IEC958_CARD
ALSA_PCM_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.iec958.card
+ }
}
}
@args.DEV {
vars [
ALSA_IEC958_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.pcm.iec958.device
+ }
}
}
@args.AES0 {
ctl.hw {
@args[ CARD ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_CTL_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.ctl.card
+ }
}
}
type hw
ctl.default {
type hw
card {
- @func igetenv
+ @func getenv
vars [
ALSA_CTL_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.ctl.card
+ }
}
}
rawmidi.hw {
@args [ CARD DEV SUBDEV ]
@args.CARD {
- type integer
+ type string
default {
- @func igetenv
+ @func getenv
vars [
ALSA_RAWMIDI_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.rawmidi.card
+ }
}
}
@args.DEV {
vars [
ALSA_RAWMIDI_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.rawmidi.device
+ }
}
}
@args.SUBDEV {
rawmidi.default {
type hw
card {
- @func igetenv
+ @func getenv
vars [
ALSA_RAWMIDI_CARD
ALSA_CARD
]
- default 0
+ default {
+ @func macro
+ name defaults.rawmidi.card
+ }
}
device {
@func igetenv
vars [
ALSA_RAWMIDI_DEVICE
]
- default 0
+ default {
+ @func macro
+ name defaults.rawmidi.device
+ }
}
}
cards.EMU10K1.pcm.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.EMU10K1.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hooks
slave.pcm {
cards.EMU10K1.pcm.center_lfe {
@args [ CARD ]
+ @args.CARD {
+ type string
+ }
type hooks
slave.pcm {
type hw
cards.EMU10K1.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.EMU10K1.pcm.surround51.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.EMU10K1.pcm.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
- type integer
+ type string
}
@args.DEV {
type integer
cards.ENS1370.pcm.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.ENS1370.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hooks
slave.pcm {
cards.ENS1370.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
master 1
cards.FM801.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.FM801.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
- type integer
+ type string
}
@args.DEV {
type integer
cards.INTEL8X0.pcm.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.INTEL8X0.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.INTEL8X0.pcm.surround51.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.INTEL8X0.pcm.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
- type integer
+ type string
}
@args.DEV {
type integer
cards.SI_7018.pcm.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.SI_7018.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hooks
slave.pcm {
cards.SI_7018.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.TRID4DWAVENX.pcm.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.TRID4DWAVENX.pcm.rear.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hooks
slave.pcm {
cards.TRID4DWAVENX.pcm.surround40.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.TRID4DWAVENX.pcm.iec958.0 {
@args [ CARD AES0 AES1 AES2 AES3 ]
@args.CARD {
- type integer
+ type string
}
@args.AES0 {
type integer
cards.YMFPCI.front.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.YMFPCI.rear.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type hw
card $CARD
cards.YMFPCI.surround40.0 {
@args [ CARD ]
@args.CARD {
- type integer
+ type string
}
type multi
slaves [
cards.YMFPCI.iec958.0 {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
- type integer
+ type string
}
@args.DEV {
type integer
{
snd_config_t *n;
char *res = NULL;
+ char *str;
snd_ctl_t *ctl = NULL;
snd_ctl_card_info_t *info;
long v;
SNDERR("error evaluating card");
goto __error;
}
- err = snd_config_get_integer(n, &v);
+ err = snd_config_get_ascii(n, &str);
if (err < 0) {
- SNDERR("field card is not an integer");
+ SNDERR("field card is not an integer or a string");
+ goto __error;
+ }
+ v = snd_card_get_index(str);
+ if (v < 0) {
+ SNDERR("cannot find card '%s'", str);
+ free(str);
+ err = v;
goto __error;
}
+ free(str);
err = open_ctl(v, &ctl);
if (err < 0) {
SNDERR("could not open control for card %li", v);
_end:
return err;
}
+
+int snd_func_macro(snd_config_t **dst, snd_config_t *root, snd_config_t *src, void *private_data)
+{
+ snd_config_t *n;
+ const char *name;
+ char *buf = NULL;
+ int err;
+
+ err = snd_config_search(src, "name", &n);
+ if (err >= 0) {
+ err = snd_config_evaluate(n, root, private_data, NULL);
+ if (err < 0) {
+ SNDERR("error evaluating name");
+ goto _end;
+ }
+ err = snd_config_get_string(n, &name);
+ if (err < 0) {
+ SNDERR("name is not a string");
+ goto _end;
+ }
+ }
+ if (strchr(name, '.') == NULL) {
+ buf = malloc(6 + strlen(name) + 1);
+ if (buf == NULL) {
+ err = -ENOMEM;
+ goto _end;
+ }
+ strcpy(buf, "macro.");
+ strcat(buf, name);
+ }
+ err = snd_config_search_definition(root, NULL, name, dst);
+ if (err < 0)
+ SNDERR("Unable to find macro definition '%s'", name);
+ _end:
+ if (buf)
+ free(buf);
+ return err;
+}