]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
ctl: add global method to get sysname of control device for sound card
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 18 Nov 2019 04:22:44 +0000 (13:22 +0900)
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sat, 30 Nov 2019 08:58:41 +0000 (17:58 +0900)
src/ctl/alsactl.map
src/ctl/query.c
src/ctl/query.h

index c5f73b9f5786c263d82117d2017e50541fbdbf41..d88b1e7377ad9457a79e412dea1afc1397d555a6 100644 (file)
@@ -8,6 +8,7 @@ ALSA_GOBJECT_0_0_0 {
 
     "alsactl_get_card_id_list";
     "alsactl_get_card_sysname";
+    "alsactl_get_control_sysname";
   local:
     *;
 };
index 542f92b9175f4f892deadd99def0c0069ede01f5..1a8118d500d85b14fd15fbaec324245d29f7466e 100644 (file)
@@ -10,6 +10,7 @@
 #include <libudev.h>
 
 #define CARD_SYSNAME_TEMPLATE       "card%u"
+#define CONTROL_SYSNAME_TEMPLATE    "controlC%u"
 
 // For error handling.
 G_DEFINE_QUARK("alsactl-error", alsactl_error)
@@ -248,3 +249,30 @@ void alsactl_get_card_sysname(guint card_id, char **sysname, GError **error)
 
     *sysname = name;
 }
+
+/**
+ * alsactl_get_control_sysname:
+ * @card_id: The numeridcal ID of sound card.
+ * @sysname: (out): The string for sysname of control device for the sound card.
+ * @error: A #GError.
+ *
+ * Allocate sysname of control device for the sound card and return it when
+ * it exists.
+ */
+void alsactl_get_control_sysname(guint card_id, char **sysname, GError **error)
+{
+    char *name;
+
+    g_return_if_fail(sysname != NULL);
+
+    allocate_sysname(&name, CONTROL_SYSNAME_TEMPLATE, card_id, error);
+    if (*error != NULL)
+        return;
+
+    if (!check_existence(name, error)) {
+        g_free(name);
+        return;
+    }
+
+    *sysname = name;
+}
index 724f53babbecf8ebdcd2b97112e3ac22548860c9..ef135d4a14a367061a97a5f32ae716405ffb8703 100644 (file)
@@ -12,6 +12,8 @@ void alsactl_get_card_id_list(guint **entries, gsize *entry_count,
 
 void alsactl_get_card_sysname(guint card_id, char **sysname, GError **error);
 
+void alsactl_get_control_sysname(guint card_id, char **sysname, GError **error);
+
 G_END_DECLS
 
 #endif