"alsatimer_get_sysname";
"alsatimer_get_devnode";
"alsatimer_get_device_id_list";
+ "alsatimer_get_device_info";
"alsatimer_device_id_get_type";
"alsatimer_device_id_new";
// SPDX-License-Identifier: LGPL-3.0-or-later
-#include "device-info.h"
-
-#include <sound/asound.h>
+#include "privates.h"
struct _ALSATimerDeviceInfoPrivate {
struct snd_timer_ginfo info;
{
return;
}
+
+void timer_device_info_refer_private(ALSATimerDeviceInfo *self,
+ struct snd_timer_ginfo **info)
+{
+ ALSATimerDeviceInfoPrivate *priv =
+ alsatimer_device_info_get_instance_private(self);
+
+ *info = &priv->info;
+}
#ifndef __ALSA_GOBJECT_ALSATIMER_PRIVATES__H__
#define __ALSA_GOBJECT_ALSATIMER_PRIVATES__H__
+#include "device-info.h"
+
#include <sound/asound.h>
G_BEGIN_DECLS
g_set_error(err, alsatimer_error_quark(), errno, \
__FILE__ ":%d: %s", __LINE__, strerror(errno))
+void timer_device_info_refer_private(ALSATimerDeviceInfo *self,
+ struct snd_timer_ginfo **info);
+
G_END_DECLS
#endif
close(fd);
}
+
+/**
+ * alsatimer_get_device_info:
+ * @device_id: A #ALSATimerDeviceId to identify the timer device.
+ * @device_info: (out): The information of timer device.
+ * @error: A #GError.
+ */
+void alsatimer_get_device_info(ALSATimerDeviceId *device_id,
+ ALSATimerDeviceInfo **device_info,
+ GError **error)
+{
+ char *devnode;
+ struct snd_timer_ginfo *info;
+ int fd;
+
+ g_return_if_fail(device_id != NULL);
+
+ alsatimer_get_devnode(&devnode, error);
+ if (*error != NULL)
+ return;
+
+ fd = open(devnode, O_RDONLY);
+ g_free(devnode);
+ if (fd < 0) {
+ generate_error(error, errno);
+ return;
+ }
+
+ *device_info = g_object_new(ALSATIMER_TYPE_DEVICE_INFO, NULL);
+ timer_device_info_refer_private(*device_info, &info);
+
+ info->tid = *device_id;
+ if (ioctl(fd, SNDRV_TIMER_IOCTL_GINFO, info) < 0) {
+ generate_error(error, errno);
+ g_object_unref(*device_info);
+ }
+
+ close(fd);
+}
#include <glib-object.h>
#include <timer/device-id.h>
+#include <timer/device-info.h>
#include <timer/alsatimer-enums.h>
void alsatimer_get_device_id_list(GList **entries, GError **error);
+void alsatimer_get_device_info(ALSATimerDeviceId *device_id,
+ ALSATimerDeviceInfo **device_info,
+ GError **error);
G_END_DECLS
#endif