From 06c81d1dfa4758b7dcccb76d2aac88f564cf5073 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Sun, 9 Feb 2020 12:20:53 +0900 Subject: [PATCH] timer: user_instance: add an API to get information of instance Signed-off-by: Takashi Sakamoto --- src/timer/alsatimer.map | 1 + src/timer/instance-info.c | 13 ++++++++++--- src/timer/privates.h | 4 ++++ src/timer/user-instance.c | 27 +++++++++++++++++++++++++++ src/timer/user-instance.h | 5 +++++ tests/alsatimer-user-instance | 1 + 6 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/timer/alsatimer.map b/src/timer/alsatimer.map index 9b0234a..ee3ac32 100644 --- a/src/timer/alsatimer.map +++ b/src/timer/alsatimer.map @@ -32,6 +32,7 @@ ALSA_GOBJECT_0_0_0 { "alsatimer_user_instance_open"; "alsatimer_user_instance_attach"; "alsatimer_user_instance_attach_as_slave"; + "alsatimer_user_instance_get_info"; "alsatimer_instance_info_get_type"; local: diff --git a/src/timer/instance-info.c b/src/timer/instance-info.c index 61fbce1..c1cc960 100644 --- a/src/timer/instance-info.c +++ b/src/timer/instance-info.c @@ -1,7 +1,5 @@ // SPDX-License-Identifier: LGPL-3.0-or-later -#include "instance-info.h" - -#include +#include "privates.h" struct _ALSATimerInstanceInfoPrivate { struct snd_timer_info info; @@ -95,3 +93,12 @@ static void alsatimer_instance_info_init(ALSATimerInstanceInfo *self) { return; } + +void timer_instance_info_refer_private(ALSATimerInstanceInfo *self, + struct snd_timer_info **info) +{ + ALSATimerInstanceInfoPrivate *priv = + alsatimer_instance_info_get_instance_private(self); + + *info = &priv->info; +} diff --git a/src/timer/privates.h b/src/timer/privates.h index 5527914..e41770c 100644 --- a/src/timer/privates.h +++ b/src/timer/privates.h @@ -5,6 +5,7 @@ #include "device-info.h" #include "device-status.h" #include "device-params.h" +#include "instance-info.h" #include @@ -25,6 +26,9 @@ void timer_device_status_refer_private(ALSATimerDeviceStatus *self, void timer_device_params_refer_private(ALSATimerDeviceParams *self, struct snd_timer_gparams **params); +void timer_instance_info_refer_private(ALSATimerInstanceInfo *self, + struct snd_timer_info **info); + G_END_DECLS #endif diff --git a/src/timer/user-instance.c b/src/timer/user-instance.c index c5b8cbb..4f8d963 100644 --- a/src/timer/user-instance.c +++ b/src/timer/user-instance.c @@ -129,3 +129,30 @@ void alsatimer_user_instance_attach_as_slave(ALSATimerUserInstance *self, if (ioctl(priv->fd, SNDRV_TIMER_IOCTL_SELECT, &sel) < 0) generate_error(error, errno); } + +/** + * alsatimer_user_instance_get_info: + * @self: A #ALSATimerUserInstance. + * @instance_info: (out): A #ALSATimerInstanceInfo. + * @error: A #GError. + * + * Return the information of device if attached to the instance. + */ +void alsatimer_user_instance_get_info(ALSATimerUserInstance *self, + ALSATimerInstanceInfo **instance_info, + GError **error) +{ + ALSATimerUserInstancePrivate *priv; + struct snd_timer_info *info; + + g_return_if_fail(ALSATIMER_IS_USER_INSTANCE(self)); + priv = alsatimer_user_instance_get_instance_private(self); + + *instance_info = g_object_new(ALSATIMER_TYPE_INSTANCE_INFO, NULL); + timer_instance_info_refer_private(*instance_info, &info); + + if (ioctl(priv->fd, SNDRV_TIMER_IOCTL_INFO, info) < 0) { + generate_error(error, errno); + g_object_unref(*instance_info); + } +} diff --git a/src/timer/user-instance.h b/src/timer/user-instance.h index 0b0fb8e..9ace150 100644 --- a/src/timer/user-instance.h +++ b/src/timer/user-instance.h @@ -6,6 +6,7 @@ #include #include +#include G_BEGIN_DECLS @@ -60,6 +61,10 @@ void alsatimer_user_instance_attach_as_slave(ALSATimerUserInstance *self, int slave_id, GError **error); +void alsatimer_user_instance_get_info(ALSATimerUserInstance *self, + ALSATimerInstanceInfo **instance_info, + GError **error); + G_END_DECLS #endif diff --git a/tests/alsatimer-user-instance b/tests/alsatimer-user-instance index 39a5656..a16e703 100644 --- a/tests/alsatimer-user-instance +++ b/tests/alsatimer-user-instance @@ -16,6 +16,7 @@ methods = ( 'open', 'attach', 'attach_as_slave', + 'get_info', ) signals = () -- 2.47.3