From: Takashi Sakamoto Date: Sun, 9 Feb 2020 03:20:53 +0000 (+0900) Subject: timer: user_instance: add an API to attach timer device to user instance X-Git-Tag: v0.1.0~348 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=977ae89a0f1f450dd2f46fcbdd00cf5eeaa2ba94;p=alsa-gobject.git timer: user_instance: add an API to attach timer device to user instance Signed-off-by: Takashi Sakamoto --- diff --git a/src/timer/alsatimer.map b/src/timer/alsatimer.map index 63be1eb..b00c7d1 100644 --- a/src/timer/alsatimer.map +++ b/src/timer/alsatimer.map @@ -30,6 +30,8 @@ ALSA_GOBJECT_0_0_0 { "alsatimer_user_instance_get_type"; "alsatimer_user_instance_new"; "alsatimer_user_instance_open"; + "alsatimer_user_instance_attach"; + "alsatimer_user_instance_attach_as_slave"; local: *; }; diff --git a/src/timer/user-instance.c b/src/timer/user-instance.c index f9e0835..5d2143d 100644 --- a/src/timer/user-instance.c +++ b/src/timer/user-instance.c @@ -7,6 +7,7 @@ #include #include #include +#include #include struct _ALSATimerUserInstancePrivate { @@ -71,3 +72,27 @@ ALSATimerUserInstance *alsatimer_user_instance_new() { return g_object_new(ALSATIMER_TYPE_USER_INSTANCE, NULL); } + +/** + * alsatimer_user_instance_attach: + * @self: A #ALSATimerUserInstance. + * @device_id: A #ALSATimerDeviceId to which the instance is attached. + * @error: A #GError. + * + * Attach the instance to the timer device. + */ +void alsatimer_user_instance_attach(ALSATimerUserInstance *self, + ALSATimerDeviceId *device_id, + GError **error) +{ + ALSATimerUserInstancePrivate *priv; + struct snd_timer_select sel = {0}; + + g_return_if_fail(ALSATIMER_IS_USER_INSTANCE(self)); + g_return_if_fail(device_id != NULL); + priv = alsatimer_user_instance_get_instance_private(self); + + sel.id = *device_id; + if (ioctl(priv->fd, SNDRV_TIMER_IOCTL_SELECT, &sel) < 0) + generate_error(error, errno); +} diff --git a/src/timer/user-instance.h b/src/timer/user-instance.h index 768b8bf..0041350 100644 --- a/src/timer/user-instance.h +++ b/src/timer/user-instance.h @@ -5,6 +5,8 @@ #include #include +#include + G_BEGIN_DECLS #define ALSATIMER_TYPE_USER_INSTANCE (alsatimer_user_instance_get_type()) @@ -49,6 +51,10 @@ ALSATimerUserInstance *alsatimer_user_instance_new(); void alsatimer_user_instance_open(ALSATimerUserInstance *self, GError **error); +void alsatimer_user_instance_attach(ALSATimerUserInstance *self, + ALSATimerDeviceId *device_id, + GError **error); + G_END_DECLS #endif diff --git a/tests/alsatimer-user-instance b/tests/alsatimer-user-instance index 33ad6b3..5e7c1a5 100644 --- a/tests/alsatimer-user-instance +++ b/tests/alsatimer-user-instance @@ -14,6 +14,7 @@ props = () methods = ( 'new', 'open', + 'attach', ) signals = ()