]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Added snd_func_macro and added 'defaults.*' definitions to alsa.conf.
authorJaroslav Kysela <perex@perex.cz>
Tue, 19 Jun 2001 11:52:50 +0000 (11:52 +0000)
committerJaroslav Kysela <perex@perex.cz>
Tue, 19 Jun 2001 11:52:50 +0000 (11:52 +0000)
Changed arguments CARD to string (to accept card IDs).
Enhanced function card_strtype to accept card IDs.

src/alsa.conf
src/cards/EMU10K1.conf
src/cards/ENS1370.conf
src/cards/FM801.conf
src/cards/INTEL8X0.conf
src/cards/SI_7018.conf
src/cards/TRID4DWAVENX.conf
src/cards/YMFPCI.conf
src/confmisc.c

index 49144a8d03f2bd47aba62dd605c964e3d19eb86d..1446280a2b88330280af12ea7bc80076de8de068 100644 (file)
@@ -11,6 +11,18 @@ preload {
        ]
 }              
 
+# 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
 #
@@ -18,14 +30,17 @@ preload {
 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 {
@@ -35,12 +50,18 @@ pcm.hw {
                        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
@@ -51,14 +72,17 @@ pcm.hw {
 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 {
@@ -68,12 +92,18 @@ pcm.plughw {
                        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 {
@@ -148,36 +178,48 @@ pcm.default {
        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 {
@@ -187,7 +229,10 @@ pcm.front {
                        vars [
                                ALSA_FRONT_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.pcm.front.device
+                       }
                }
        }
        @func refer
@@ -221,15 +266,18 @@ pcm.front {
 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 {
@@ -239,7 +287,10 @@ pcm.rear {
                        vars [
                                ALSA_REAR_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.pcm.rear.device
+                       }
                }
        }
        @func refer
@@ -273,15 +324,18 @@ pcm.rear {
 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 {
@@ -291,7 +345,10 @@ pcm.center_lfe {
                        vars [
                                ALSA_CENTER_LFE_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.pcm.center_lfe.device
+                       }
                }
        }
        @func refer
@@ -325,15 +382,18 @@ pcm.center_lfe {
 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 {
@@ -343,7 +403,10 @@ pcm.surround40 {
                        vars [
                                ALSA_SURROUND40_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.pcm.surround40.device
+                       }
                }
        }
        @func refer
@@ -377,15 +440,18 @@ pcm.surround40 {
 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 {
@@ -395,7 +461,10 @@ pcm.surround51 {
                        vars [
                                ALSA_SURROUND51_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.pcm.surround51.device
+                       }
                }
        }
        @func refer
@@ -429,15 +498,18 @@ pcm.surround51 {
 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 {
@@ -447,7 +519,10 @@ pcm.iec958 {
                        vars [
                                ALSA_IEC958_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.pcm.iec958.device
+                       }
                }
        }
        @args.AES0 {
@@ -512,14 +587,17 @@ pcm.spdif pcm.iec958
 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
@@ -542,12 +620,15 @@ ctl.shm {
 ctl.default {
        type hw
        card {
-               @func igetenv
+               @func getenv
                vars [
                        ALSA_CTL_CARD
                        ALSA_CARD
                ]
-               default 0
+               default {
+                       @func macro
+                       name defaults.ctl.card
+               }
        }
 }
 
@@ -558,14 +639,17 @@ ctl.default {
 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 {
@@ -575,7 +659,10 @@ rawmidi.hw {
                        vars [
                                ALSA_RAWMIDI_DEVICE
                        ]
-                       default 0
+                       default {
+                               @func macro
+                               name defaults.rawmidi.device
+                       }
                }
        }
        @args.SUBDEV {
@@ -591,19 +678,25 @@ rawmidi.hw {
 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
+               }
        }
 }
 
index d8b3d9092708ce759348ed9a88d0e4c1d255fad8..288dcd45a751a97715474104af8a0308da935a9c 100644 (file)
@@ -5,7 +5,7 @@
 cards.EMU10K1.pcm.front.0 {
        @args [ CARD  ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -15,7 +15,7 @@ cards.EMU10K1.pcm.front.0 {
 cards.EMU10K1.pcm.rear.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hooks
        slave.pcm {
@@ -44,6 +44,9 @@ cards.EMU10K1.pcm.rear.0 {
 
 cards.EMU10K1.pcm.center_lfe {
        @args [ CARD ]
+       @args.CARD {
+               type string
+       }
        type hooks
        slave.pcm {
                type hw
@@ -84,7 +87,7 @@ cards.EMU10K1.pcm.center_lfe {
 cards.EMU10K1.pcm.surround40.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
@@ -118,7 +121,7 @@ cards.EMU10K1.pcm.surround40.0 {
 cards.EMU10K1.pcm.surround51.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
@@ -163,7 +166,7 @@ cards.EMU10K1.pcm.surround51.0 {
 cards.EMU10K1.pcm.iec958.0 {
        @args [ CARD DEV AES0 AES1 AES2 AES3 ]
        @args.CARD {
-               type integer
+               type string
        }
        @args.DEV {
                type integer
index b80d969a0d723a408efcbf9fd67038e5022a7af1..0f78be82b3d7bda9de7c8d582214c2b41c873ffe 100644 (file)
@@ -5,7 +5,7 @@
 cards.ENS1370.pcm.front.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -15,7 +15,7 @@ cards.ENS1370.pcm.front.0 {
 cards.ENS1370.pcm.rear.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hooks
        slave.pcm {
@@ -45,7 +45,7 @@ cards.ENS1370.pcm.rear.0 {
 cards.ENS1370.pcm.surround40.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        master 1
index ecd5b8695a453a27c82b742a9151bc237c644a6e..81f542bcc12f955cf6bca67e6310445f8bfc146a 100644 (file)
@@ -5,7 +5,7 @@
 cards.FM801.front.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -18,7 +18,7 @@ cards.FM801.surround51.0 "cards.FM801.front.0"
 cards.FM801.iec958.0 {
        @args [ CARD DEV AES0 AES1 AES2 AES3 ]
        @args.CARD {
-               type integer
+               type string
        }
        @args.DEV {
                type integer
index c9a956a02779338d35d5639716d4813fdec27ad8..9628d09cba8d6276dd631450e00db34c597f6c78 100644 (file)
@@ -5,7 +5,7 @@
 cards.INTEL8X0.pcm.front.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -15,7 +15,7 @@ cards.INTEL8X0.pcm.front.0 {
 cards.INTEL8X0.pcm.surround40.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
@@ -40,7 +40,7 @@ cards.INTEL8X0.pcm.surround40.0 {
 cards.INTEL8X0.pcm.surround51.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
@@ -67,7 +67,7 @@ cards.INTEL8X0.pcm.surround51.0 {
 cards.INTEL8X0.pcm.iec958.0 {
        @args [ CARD DEV AES0 AES1 AES2 AES3 ]
        @args.CARD {
-               type integer
+               type string
        }
        @args.DEV {
                type integer
index 1193c6cbfaae3b6fae36a2d2b65ed92101b8f4db..73e1433c2d876fc902f37054fbdfeec9e81949ba 100644 (file)
@@ -5,7 +5,7 @@
 cards.SI_7018.pcm.front.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -15,7 +15,7 @@ cards.SI_7018.pcm.front.0 {
 cards.SI_7018.pcm.rear.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
         type hooks
        slave.pcm {
@@ -39,7 +39,7 @@ cards.SI_7018.pcm.rear.0 {
 cards.SI_7018.pcm.surround40.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
index d3ba927bda77201e4bb9bd4ba25b2c4635ffa6ef..7b4f4e4937ed68e2bb8fb5a71b25f461a8565d6b 100644 (file)
@@ -5,7 +5,7 @@
 cards.TRID4DWAVENX.pcm.front.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -15,7 +15,7 @@ cards.TRID4DWAVENX.pcm.front.0 {
 cards.TRID4DWAVENX.pcm.rear.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hooks
        slave.pcm {
@@ -53,7 +53,7 @@ cards.TRID4DWAVENX.pcm.rear.0 {
 cards.TRID4DWAVENX.pcm.surround40.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
@@ -87,7 +87,7 @@ cards.TRID4DWAVENX.pcm.surround40.0 {
 cards.TRID4DWAVENX.pcm.iec958.0 {
        @args [ CARD AES0 AES1 AES2 AES3 ]
        @args.CARD {
-               type integer
+               type string
        }
        @args.AES0 {
                type integer
index b5479182e526815ec3f3f1369cc658a6eed79278..02ff6f7ae902db02dd50adcfc7d4e4247b1202ef 100644 (file)
@@ -5,7 +5,7 @@
 cards.YMFPCI.front.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -15,7 +15,7 @@ cards.YMFPCI.front.0 {
 cards.YMFPCI.rear.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type hw
        card $CARD
@@ -25,7 +25,7 @@ cards.YMFPCI.rear.0 {
 cards.YMFPCI.surround40.0 {
        @args [ CARD ]
        @args.CARD {
-               type integer
+               type string
        }
        type multi
        slaves [
@@ -59,7 +59,7 @@ cards.YMFPCI.surround40.0 {
 cards.YMFPCI.iec958.0 {
        @args [ CARD DEV AES0 AES1 AES2 AES3 ]
        @args.CARD {
-               type integer
+               type string
        }
        @args.DEV {
                type integer
index 3f86a8bcba77bbcb9d51d2a79c9488cab000906f..7ccb9fa2d8dcbc13d9a43388a1a6c1bf0ccf9fa5 100644 (file)
@@ -432,6 +432,7 @@ int snd_func_card_strtype(snd_config_t **dst, snd_config_t *root, snd_config_t *
 {
        snd_config_t *n;
        char *res = NULL;
+       char *str;
        snd_ctl_t *ctl = NULL;
        snd_ctl_card_info_t *info;
        long v;
@@ -447,11 +448,19 @@ int snd_func_card_strtype(snd_config_t **dst, snd_config_t *root, snd_config_t *
                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);
@@ -682,3 +691,41 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src, vo
  _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;
+}