]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
timer: user_instance: add an API to configure instance
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 9 Feb 2020 03:20:53 +0000 (12:20 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Tue, 11 Feb 2020 04:28:18 +0000 (13:28 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/timer/alsatimer.map
src/timer/instance-params.c
src/timer/privates.h
src/timer/user-instance.c
src/timer/user-instance.h
tests/alsatimer-user-instance

index ea0dab5c6480bc98a85f2ee1a07c852894c21e5f..f99a2bcb7229fe56c2200095fa2481be0c897c8b 100644 (file)
@@ -33,6 +33,7 @@ ALSA_GOBJECT_0_0_0 {
     "alsatimer_user_instance_attach";
     "alsatimer_user_instance_attach_as_slave";
     "alsatimer_user_instance_get_info";
+    "alsatimer_user_instance_set_params";
 
     "alsatimer_instance_info_get_type";
 
index cf728c0a406a19ef186c3460befc54ea2d6ebc1b..8e31491163d280e747d012a6be0d1acd4e9860dd 100644 (file)
@@ -218,3 +218,12 @@ void alsatimer_instance_params_get_event_filter(ALSATimerInstanceParams *self,
     *entries = list;
     *entry_count = count;
 }
+
+void timer_instance_params_refer_private(ALSATimerInstanceParams *self,
+                                         struct snd_timer_params **params)
+{
+    ALSATimerInstanceParamsPrivate *priv =
+                        alsatimer_instance_params_get_instance_private(self);
+
+    *params = &priv->params;
+}
index e41770c2fae85dfb43a38fd53c8267e2022bb528..d76ca51eb81b41c4559d01a501111c70073abd9d 100644 (file)
@@ -6,6 +6,7 @@
 #include "device-status.h"
 #include "device-params.h"
 #include "instance-info.h"
+#include "instance-params.h"
 
 #include <sound/asound.h>
 
@@ -29,6 +30,9 @@ void timer_device_params_refer_private(ALSATimerDeviceParams *self,
 void timer_instance_info_refer_private(ALSATimerInstanceInfo *self,
                                        struct snd_timer_info **info);
 
+void timer_instance_params_refer_private(ALSATimerInstanceParams *self,
+                                         struct snd_timer_params **params);
+
 G_END_DECLS
 
 #endif
index 4f8d963ca641fa3d7a3a4d7caddae9d1c4fdf6be..231bd72ce5a2bf0ae00921f0774f11083be11095 100644 (file)
@@ -156,3 +156,27 @@ void alsatimer_user_instance_get_info(ALSATimerUserInstance *self,
         g_object_unref(*instance_info);
     }
 }
+
+/**
+ * alsatimer_user_instance_set_params:
+ * @self: A #ALSATimerUserInstance.
+ * @instance_params: (inout): A #ALSATimerInstanceParams.
+ * @error: A #GError.
+ *
+ * Configure the instance with the parameters and return the latest parameters.
+ */
+void alsatimer_user_instance_set_params(ALSATimerUserInstance *self,
+                                ALSATimerInstanceParams *const *instance_params,
+                                GError **error)
+{
+    ALSATimerUserInstancePrivate *priv;
+    struct snd_timer_params *params;
+
+    g_return_if_fail(ALSATIMER_IS_USER_INSTANCE(self));
+    priv = alsatimer_user_instance_get_instance_private(self);
+
+    timer_instance_params_refer_private(*instance_params, &params);
+
+    if (ioctl(priv->fd, SNDRV_TIMER_IOCTL_PARAMS, params) < 0)
+        generate_error(error, errno);
+}
index 9ace1502a5c2cc0d2eb92c7eeaa716a05d153bf4..66383357382e513b90befb10c15cbd1dce7d467f 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <timer/device-id.h>
 #include <timer/instance-info.h>
+#include <timer/instance-params.h>
 
 G_BEGIN_DECLS
 
@@ -65,6 +66,10 @@ void alsatimer_user_instance_get_info(ALSATimerUserInstance *self,
                                       ALSATimerInstanceInfo **instance_info,
                                       GError **error);
 
+void alsatimer_user_instance_set_params(ALSATimerUserInstance *self,
+                                ALSATimerInstanceParams *const *instance_params,
+                                GError **error);
+
 G_END_DECLS
 
 #endif
index a16e703a79cca77f17e8cbf1acc40f96ba60b92b..29e9aa4f6043546f10e8da307928067f5abf1705 100644 (file)
@@ -17,6 +17,7 @@ methods = (
     'attach',
     'attach_as_slave',
     'get_info',
+    'set_params',
 )
 signals = ()